使用SymPy绘制多维数据集根函数,包括负参数

时间:2018-09-07 20:49:40

标签: sympy

我正在尝试使用SymPy绘制多维数据集根函数。我知道应该是什么样,但是我只看到x> = 0的值,而不是负数。我尝试了两种方法。

cbrt:

from sympy import symbols, plot
from sympy.functions.elementary.miscellaneous import cbrt

x    = symbols('x')
eqn  = cbrt(x)
p    = plot(eqn)

nthroot:

from sympy import symbols, plot
from sympy.simplify.simplify import nthroot

x    = symbols('x')
eqn  = nthroot(x, 3)
p    = plot(eqn)

1 个答案:

答案 0 :(得分:1)

SymPy的函数cbrtroot使用根的principal branch。多值函数z->z**(1/3)的主体分支等于-1/2 + I*sqrt(3)/2处为-1。这不是一个实数,因此您不会在情节上看到它。

但是通常希望获得所有实输入的实值根,这对于奇数度是可能的。这由功能real_root提供。因此,原则上您的代码应为

from sympy import symbols, plot, real_root
x    = symbols('x')
eqn  = real_root(x, 3)
p    = plot(eqn)

但是,real_root的实现不符合SymPy绘图例程的期望,因此,到目前为止,以上内容都引发了错误。 (在不同版本的SymPy中存在不同的错误)。而是绘制数学上等效的函数|x|**(1/3) * sign(x)

from sympy import symbols, plot, root, sign, Abs
x    = symbols('x')
eqn  = root(Abs(x), 3)*sign(x)
p    = plot(eqn)

plot

注释:nthroot模块中的函数simplify不是用于计算第n个根,而是用于使用部首简化表达式。