gpt4 book ai didi

Python——sympy solve() 返回另一个方程而不是值

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:52 27 4
gpt4 key购买 nike

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

编辑:

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

enter image description here

最佳答案

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

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

输出:

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

关于Python——sympy solve() 返回另一个方程而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19802174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com