我試圖繪製一個相當複雜的函數,即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