Python Sympy solve()返回另一个方程式而不是值

2024-04-26 19:01:11 发布

您现在位置:Python中文网/ 问答频道 /正文

这将创建一个点的列表,sympy solve()方法应该返回x的值,而是返回另一个等式,我不知道为什么。ogrid()ravel()在绘图中创建一个点的列表,这是在Matplotlib上,如果这有区别的话,但我认为不应该。它应该是求方程的根。我不确定我做错了什么,导致它不返回值,而是返回另一个等式:

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,所以这可能是一个初级程序员可以帮助我解决的问题,但是如果一个专业人士看到这一点,并能抽出一点时间来帮助我,那就太好了。在

编辑:

如果没有3个可能的x值,则返回一个大约为3.xx的y值:

enter image description here


Tags: fromimport列表matplotlibassympysolvepow
1条回答
网友
1楼 · 发布于 2024-04-26 19:01:11

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

[e.subs({ysym:ylist[randmid]}).evalf() for e in x_result]

输出:

^{pr2}$

相关问题 更多 >