gpt4 book ai didi

Python sympy 解决四次方程返回坏根

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

我需要用 Python 求解四次方程。为此,我使用 sympy模块。

当我运行脚本时,sympy 将方程的 4 个解作为复数返回(参见输出),而事实上,它们都是实数。

是什么让 sympy 返回错误答案?

import numpy as np
import math
from numpy import linalg as la
import sympy as sy

from matplotlib.pyplot import *

L = np.array([0,1,-20.0])
S = np.array([0,0,-10.0])

a = np.dot(S,S)
b = np.dot(S,L)
c = np.dot(L,L)

k0 = a - 1
k1 = 2*(a-b)
k2 = a + 2*b + c - 4*a*c
k3 = -4*(a*c - b**2)
k4 = 4*c*(a*c - b**2)

y = sy.Symbol('y')
r = sy.solvers.solve(k4*y**4 + k3*y**3 + k2*y**2 + k1*y + k0, y)

print r

y = np.linspace(-1.1, 1.1, 1000)
x = k4*y**4 + k3*y**3 + k2*y**2 + k1*y + k0
figure()
plot(y, x)
grid(True)
show()

输出:

[-0.994999960838935 + 1.66799419488535e-31*I,
-0.0255580200028216 - 6.34301512012529e-30*I,
0.0243009597954184 + 6.32628752256216e-30*I,
0.998750786632373 - 1.50071821925406e-31*I]

绘图(有 4 个过零):

enter image description here

最佳答案

请注意,结果实际上是真实的,达到数值精度。 e-30 确实是个小数字。报告的解决方案也与情节一致,因此无需担心。

关于Python sympy 解决四次方程返回坏根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27988399/

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