我正在尝试使用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)
答案 0 :(得分:1)
SymPy的函数cbrt
和root
使用根的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)
注释:nthroot
模块中的函数simplify
不是用于计算第n个根,而是用于使用部首简化表达式。