我想解决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