簡體   English   中英

如何在同意的情況下解決y =(x + 1)** 3 -2?

[英]How can I solve y = (x+1)**3 -2 for x in sympy?

我想解決y = (x+1)**3 - 2x在sympy找到其反函數。
我嘗試使用solve ,但我沒有得到我的預期。

這是我在cmd中的IPython控制台中編寫的內容(Python 3.5.2上的sympy 1.0):

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}

Sympy給出了正確的結果:你的最后結果相當於(y + 2)**(1/3) - 1。

您正在尋找的是simplify

>>> from sympy import symbols, Eq, solve, simplify
>>> x, y = symbols("x y")
>>> n = Eq(y, (x+1)**3 - 2)
>>> s = solve(n, x)
>>> simplify(s[2])
(y + 2)**(1/3) - 1

編輯:使用sympy 0.7.6.1,更新到1.0后,它不再起作用了。

如果您聲明xy是正數,那么只有一個解決方案:

import sympy as sy
x, y = sy.symbols("x y", positive=True)
n = sy.Eq(y, (x+1)**3 - 2)
s = sy.solve(n, x)
print(s)

產量

[(y + 2)**(1/3) - 1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM