我试图绘制一个相当复杂的函数,即log(x/(x-2))**Rational(1,3)
。我只使用实数。如果我尝试绘制它,sympy
只绘制 x> 2部分。
我发现实际上复杂的数字起作用,例如root(-8,3).n()
给出:
1.0 + 1.73205080756888i
哪个是合理的,即使它不是我想要的(因为我只对实际结果感兴趣)。
阅读sympy › principle root我发现real_root(-8,3)
按预期提供-2
。但是我仍然无法绘制该函数的 x< 0部分;事实上似乎real_root
仅适用于整数根,而real_root(-9,3).n()
仍然会给出一个虚构的结果,而不是我所期望的-(real_root(9, 3))
。
我认为(-9)^(1/3)存在一个真实的结果,我不明白为什么real_root
会给出一个想象的结果。
有没有一种简单的方法来获得真实负数的立方根的教科书结果,如(-x)^(1/3)= - (x)^(1/3)?
修改:
遵循@Leon的建议:我更新了sympy
并且实际上可以计算-9的真实立方根。
但是我仍然无法绘制我在本主题开头提到的功能。
from sympy import *
var('x')
f=real_root((log(x/(x-2))), 3)
plot(f)
给出了NameError: name 'Ne' is not defined
之类的错误。
我注意到尝试打印f
会导致
Piecewise((1, Ne(arg(x/(x - 2)), 0)), ((-1)**(2/3), log(x/(x - 2)) < 0), (1, True))*log(x/(x - 2))**(1/3)
Ne
是否与我的错误有关?