Sympy包solve()没有为root(x,3)提供所有解决方案

时间:2018-04-22 23:29:12

标签: python sympy

我使用sympy包和solve()来获得方程的根,其中

 solve(x-root(4*x,3),x)

仅将结果表示为0和2。 但是(所有)解决方案可以通过手动简化为

来获得
 solve(x**3-4*x,x)

为0,2,-2。

我的问题是,为什么使用root(x,3)不提供所有解决方案? 究竟是如何工作/(确定它有所有解决方案)?

1 个答案:

答案 0 :(得分:0)

数学上,第n个根是一个多值函数。 documentation of root function说:

  

root(x, n, k)返回x的第k个根,默认为主根(k = 0)。

您可以通过传入参数k获得其他根,如下所示:

[solve(x-root(4*x, 3, k), x) for k in range(3)]

返回[[0, 2], [-2, 0], [0]]

或者,制作一套所有解决方案,

from itertools import chain
set(chain.from_iterable([solve(x-root(4*x, 3, k),x) for k in range(3)]))

结果为{-2, 0, 2}