请运行以下代码
from sympy.solvers import solve
from sympy import Symbol
x = Symbol('x')
R2 = solve(-109*x**5/3870720+4157*x**4/1935360-3607*x**3/69120+23069*x**2/60480+5491*x/2520+38-67,x)
print R2
代码的输出是
[2 * CRootOf(109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840,0),2 * CRootOf(109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840,1),2 * CRootOf(109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840,2), 2 * CRootOf(109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840,3),2 * CRootOf(109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840,4)]
有人可以解释答案代表什么以及如何以常规形式获得输出,即如果答案是0.1,0.2,0.3,0.1,0.4
,则通常会将答案输出为[0.1,0.2,0.3,0.1,0.4]
答案 0 :(得分:1)
要在答案中获得数值近似值,可以使用N()。由于您有多个解决方案,因此您可以遍历列表。我使用了一个更简单的方程,因为你需要一段时间......
试试这个:
from sympy.solvers import solve
from sympy import Symbol, N
x = Symbol('x')
#R2 = solve(-109*x**5/3870720+4157*x**4/1935360-3607*x**3/69120+23069*x**2/60480+5491*x/2520+38-67,x)
R2 = solve(x**2+2*x-4,x)
print R2
print [N(solution) for solution in R2]
[编辑]:如下面的评论所述,五阶方程只能在升级同情之后解决(在我的情况下为1.0)。
答案 1 :(得分:1)
SymPy的solve
仅提供符号解决方案。 CRootOf
是一种象征性地表示多项式根的方法,其根不能用自由基表示。如果您只对数字解决方案感兴趣,可以在@tfv建议的每个术语上使用N
,或使用nsolve
,它以数字方式解决等式。一般情况下,如果您只关心数字解,那么符号solve
可能会过度。