Python--sympy solve()返回另一个等式而不是值

Python--sympy solve()返回另一个等式而不是值,python,python-2.7,numpy,matplotlib,sympy,Python,Python 2.7,Numpy,Matplotlib,Sympy,这将创建一个点列表,sympysolve()方法应返回x的值。相反,它返回了另一个等式,我不知道为什么。ogrid()。它应该是找到方程的根。我不确定我在这里做错了什么,导致它不返回值,而是返回另一个等式: from mpl_toolkits.axes_grid.axislines import SubplotZero from pylab import * import numpy as np import matplotlib.pyplot as plt from matplotlib.pa

这将创建一个点列表,sympy
solve()
方法应返回x的值。相反,它返回了另一个等式,我不知道为什么。
ogrid()。它应该是找到方程的根。我不确定我在这里做错了什么,导致它不返回值,而是返回另一个等式:

from mpl_toolkits.axes_grid.axislines import SubplotZero
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
from matplotlib import rc
import random
from sympy.solvers import solve
from sympy import *

a = -2; b = 1
y, x = np.ogrid[-10:10:100j, -10:10:100j]
xlist = x.ravel(); ylist = y.ravel()
elliptic_curve = pow(y, 2) - pow(x, 3) - x * a - b
plt.contour(xlist, ylist, elliptic_curve, [0])
randmid = random.randint(30,70)
#y = ylist[randmid]; x = xlist[randmid]
xsym, ysym = symbols('x ylist[randmid]')
x_result = solve(pow(ysym, 2) - pow(xsym, 3) - xsym * a - b, xsym) # 11/5/13 needs to return a value
我在自学Python,所以这可能是一个初级程序员可以帮助我的东西,但如果专业人士看到了这一点,可以抽出一点时间来帮助我,那就太好了

编辑:

返回y的值,大约为3.xx,其中没有3个可能的x值:


x_result
是一个表达式列表,它是方程的解。它不是一个值列表,因为
ysym
是一个符号。如果需要数值结果,需要调用
subs()
evalf()

输出:

[0.0871073310916539 - 8.0e-17*I,
 1.36864647418387 + 4.37e-17*I,
 -1.45575380527552 + 3.63e-17*I]

我以后一定会记住,+1。但我添加了一个编辑来说明为什么它不起作用。在y=3时(大致上),不仅没有3个x值,而且列出的值似乎都不接近绘图。请看
lambdify
[0.0871073310916539 - 8.0e-17*I,
 1.36864647418387 + 4.37e-17*I,
 -1.45575380527552 + 3.63e-17*I]