我试图绘制一个相当复杂的函数,即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
。 我注意到,试图打印
Piecewise((1, Ne(arg(x/(x - 2)), 0)), ((-1)**(2/3), log(x/(x - 2)) < 0), (1, True))*log(x/(x - 2))**(1/3)
f
结果这是否Ne
有些事情要和我的错误?
使用Python 2.7.10,SymPy 1.0不存在这样的问题:'sympy.real_root(-9,3).N()''返回-2.08008382305190' – Leon
非常感谢。我忘了提及我正在使用Python 3.5。 更新'conda'和'anaconda'(因此'sympy')后,我也能够计算9的立方根。 反正 '从sympy进口*' 'F = real_root(日志(X /(X-2)),3)' '图(F)' 给出了一个非常复杂的错误消息我不能理解! – David
您看到的消息是SymPy中的错误。我在这里打开了一个问题(https://github.com/sympy/sympy/issues/11461)。 – asmeurer