我想解決y =(x + 1)** 3 -2爲x在sympy找到它的反函數。
我嘗試使用solve
,但我沒有得到我的預期。
這是我在IPython的控制檯CMD(關於Python 3.5.2 sympy 1.0)寫道:
如何解決sympy中的x =(x + 1)** 3 -2?
In [1]: from sympy import *
In [2]: x, y = symbols('x y')
In [3]: n = Eq(y,(x+1)**3 - 2)
In [4]: solve(n,x)
Out [4]:
[-(-1/2 - sqrt(3)*I/2)*(-27*y/2 + sqrt((-27*y - 54)**2)/2 - 27)**(1/3)/3 - 1,
-(-1/2 + sqrt(3)*I/2)*(-27*y/2 + sqrt((-27*y - 54)**2)/2 - 27)**(1/3)/3 - 1,
-(-27*y/2 + sqrt((-27*y - 54)**2)/2 - 27)**(1/3)/3 - 1]
我一直在尋找在Out [4]
在列表的最後一個元素,但不等於X = (y + 2)**(1/3) - 1(我期待的)。
爲什麼sympy輸出錯誤的結果,
以及我能做些什麼來使sympy輸出我正在尋找的解決方案?
我試過使用solveset
,但我得到了與使用solve
相同的結果。
In [13]: solveset(n,x)
Out[13]: {-(-1/2 - sqrt(3)*I/2)*(-27*y/2 + sqrt((-27*y - 54)**2)/2 - 27)**(1/3)/
3 - 1, -(-1/2 + sqrt(3)*I/2)*(-27*y/2 + sqrt((-27*y - 54)**2)/2 - 27)**(1/3)/3 -
1, -(-27*y/2 + sqrt((-27*y - 54)**2)/2 - 27)**(1/3)/3 - 1}
這有效(聽起來很奇怪,但解決方案應該適用於所有實數),但是當我嘗試將其擴展到另一個多項式方程,如n = Eq(y,(x + 1) ** 5)',我得到一個空集。你知道我能做些什麼來獲得我期待的x = y **(1/5)-1嗎? (我可以在另一個問題中詢問這個問題,如果我應該這樣做)。 – DragonautX
@DragonautX:對不起,我沒有很好的回答你的一般問題。 – unutbu
沒關係。最後,我總是可以手工做,並從那裏開展工作,或者我可以嘗試其他工具。 – DragonautX