我尝试找到多项式函数的根,并使用以下代码:
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))
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它不起作用。如果我使用像 x**2-1 这样更简单的多项式函数,它就可以工作
该roots函数用于以符号方式计算根式的根。由于阿贝尔-鲁菲尼定理,通常无法计算 5 次或以上多项式的根式根。SymPyRootOf可以象征性地表示这些根,例如:
In [7]: r = RootOf(x**25-96*x**12-4*x**3+2, 0)\n\nIn [8]: r\nOut[8]: \n \xe2\x8e\x9b 25 12 3 \xe2\x8e\x9e\nCRootOf\xe2\x8e\x9dx - 96\xe2\x8b\x85x - 4\xe2\x8b\x85x + 2, 0\xe2\x8e\xa0\n\nIn [9]: r.evalf()\nOut[9]: -0.763733782729520\nRun Code Online (Sandbox Code Playgroud)\n如果您只想要根的数值近似值,那么您可以使用以下方法有效地合理计算它们nroots:
In [10]: Poly(x**25-96*x**12-4*x**3+2, x).nroots()\nOut[10]: \n[-0.76373378272952, 0.670586457724312, 1.42079389150078, -1.37945211815055 - 0.340175934440882\xe2\x8b\x85\xe2\x85\x88, -1.37945211815055 + 0.34017593\n4440882\xe2\x8b\x85\xe2\x85\x88, -1.06319298080894 - 0.941998724697874\xe2\x8b\x85\xe2\x85\x88, -1.06319298080894 + 0.941998724697874\xe2\x8b\x85\xe2\x85\x88, -0.611146252548878 - 0.404661250727\n9\xe2\x8b\x85\xe2\x85\x88, -0.611146252548878 + 0.4046612507279\xe2\x8b\x85\xe2\x85\x88, -0.503926321737819 - 1.32829285156355\xe2\x8b\x85\xe2\x85\x88, -0.503926321737819 + 1.32829285156355\xe2\x8b\x85\xe2\x85\x88, -\n0.335293228608336 - 0.580740856215139\xe2\x8b\x85\xe2\x85\x88, -0.335293228608336 + 0.580740856215139\xe2\x8b\x85\xe2\x85\x88, -0.0448923539768514 - 0.73158885083763\xe2\x8b\x85\xe2\x85\x88, -0.\n0448923539768514 + 0.73158885083763\xe2\x8b\x85\xe2\x85\x88, 0.171380585123656 - 1.41042748193864\xe2\x8b\x85\xe2\x85\x88, 0.171380585123656 + 1.41042748193864\xe2\x8b\x85\xe2\x85\x88, 0.3818668\n72385803 - 0.66145201247479\xe2\x8b\x85\xe2\x85\x88, 0.381866872385803 + 0.66145201247479\xe2\x8b\x85\xe2\x85\x88, 0.656038617401695 - 0.326927596015531\xe2\x8b\x85\xe2\x85\x88, 0.65603861740169\n5 + 0.326927596015531\xe2\x8b\x85\xe2\x85\x88, 0.807048139834163 - 1.16893577654226\xe2\x8b\x85\xe2\x85\x88, 0.807048139834163 + 1.16893577654226\xe2\x8b\x85\xe2\x85\x88, 1.25774575783827 - 0.66\n0302613302175\xe2\x8b\x85\xe2\x85\x88, 1.25774575783827 + 0.660302613302175\xe2\x8b\x85\xe2\x85\x88]\nRun Code Online (Sandbox Code Playgroud)\nhttps://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.rootoftools.ComplexRootOf
\nhttps://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.polytools.nroots
\nhttps://en.wikipedia.org/wiki/Abel%E2%80%93Ruffini_theorem
\n| 归档时间: |
|
| 查看次数: |
3570 次 |
| 最近记录: |