【发布时间】:2021-05-22 14:50:57
【问题描述】:
根据这张图:desmos
print(solve('x**2 + x - 1/x'))
# [-1/3 + (-1/2 - sqrt(3)*I/2)*(sqrt(69)/18 + 25/54)**(1/3) + 1/(9*(-1/2 - sqrt(3)*I/2)*(sqrt(69)/18 + 25/54)**(1/3)), -1/3 + 1/(9*(-1/2 + sqrt(3)*I/2)*(sqrt(69)/18 + 25/54)**(1/3)) + (-1/2 + sqrt(3)*I/2)*(sqrt(69)/18 + 25/54)**(1/3), -1/3 + 1/(9*(sqrt(69)/18 + 25/54)**(1/3)) + (sqrt(69)/18 + 25/54)**(1/3)]
我期待[0.755, 0.57],但是,我得到了一些我在未来的程序中无法使用的东西。 我希望得到一个浮点列表作为结果,所以参考this post,我确实关注了,但我得到了一些更奇怪的:
def solver(solved, rit=3):
res = []
for val in solved:
if isinstance(val, core.numbers.Add):
flt = val.as_two_terms()[0]
flt = round(flt, rit)
else:
flt = round(val, rit)
if not isinstance(flt, core.numbers.Add):
res.append(flt)
return res
print(solver(solve('x**2 + x - 1/x')))
# [-0.333, -0.333, -0.333]
现在我对 sympy 真的很失望,我想知道是否有一种准确的方法来获取浮点数列表作为结果,或者我将编写自己的梯度下降算法来找到根和交点。
【问题讨论】: