如何解决查找多项式函数的根 Python Sympy
我尝试找到多项式函数的根,并使用以下代码:
import sympy
from sympy import Poly,roots
g=sympy.var("x")
p = Poly(x**25-96*x**12-4*x**3+2,gen=g)
print(roots(p))
我不知道为什么它不起作用。如果我使用像 x**2-1 这样更简单的多项式函数,它会起作用
解决方法
roots
函数用于计算根的符号根。由于 Abel-Ruffini 定理,通常不可能计算 5 次或更多次多项式的根。 SymPy 的 RootOf
可以象征性地表示这些根,例如:
In [7]: r = RootOf(x**25-96*x**12-4*x**3+2,0)
In [8]: r
Out[8]:
⎛ 25 12 3 ⎞
CRootOf⎝x - 96⋅x - 4⋅x + 2,0⎠
In [9]: r.evalf()
Out[9]: -0.763733782729520
如果您只想要根的数值近似值,那么您可以使用 nroots
方法有效地计算它们:
In [10]: Poly(x**25-96*x**12-4*x**3+2,x).nroots()
Out[10]:
[-0.76373378272952,0.670586457724312,1.42079389150078,-1.37945211815055 - 0.340175934440882⋅ⅈ,-1.37945211815055 + 0.34017593
4440882⋅ⅈ,-1.06319298080894 - 0.941998724697874⋅ⅈ,-1.06319298080894 + 0.941998724697874⋅ⅈ,-0.611146252548878 - 0.404661250727
9⋅ⅈ,-0.611146252548878 + 0.4046612507279⋅ⅈ,-0.503926321737819 - 1.32829285156355⋅ⅈ,-0.503926321737819 + 1.32829285156355⋅ⅈ,-
0.335293228608336 - 0.580740856215139⋅ⅈ,-0.335293228608336 + 0.580740856215139⋅ⅈ,-0.0448923539768514 - 0.73158885083763⋅ⅈ,-0.
0448923539768514 + 0.73158885083763⋅ⅈ,0.171380585123656 - 1.41042748193864⋅ⅈ,0.171380585123656 + 1.41042748193864⋅ⅈ,0.3818668
72385803 - 0.66145201247479⋅ⅈ,0.381866872385803 + 0.66145201247479⋅ⅈ,0.656038617401695 - 0.326927596015531⋅ⅈ,0.65603861740169
5 + 0.326927596015531⋅ⅈ,0.807048139834163 - 1.16893577654226⋅ⅈ,0.807048139834163 + 1.16893577654226⋅ⅈ,1.25774575783827 - 0.66
0302613302175⋅ⅈ,1.25774575783827 + 0.660302613302175⋅ⅈ]
https://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.rootoftools.ComplexRootOf
https://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.polytools.nroots
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。