Ich möchte y = (x + 1) ** 3 -2 für x in Sympy lösen, um seine inverse Funktion zu finden.
Ich versuchte mit solve
, aber ich habe nicht bekommen, was ich erwartet habe.
Hier ist, was ich in IPython Konsole in cmd (sympy 1.0 auf Python 3.5.2) schrieb:
Wie kann ich y = (x + 1) ** 3 -2 für x in sympy lösen?
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]
Ich war auf der Suche auf das letzte Element in der Liste in Out [4]
, aber es ist nicht gleich x = (y + 2) ** (1/3) - 1 (was ich erwartet hatte).
Warum hat sympy das falsche Ergebnis ausgegeben,
und was kann ich tun, damit sympy die von mir gesuchte Lösung liefert?
Ich versuchte mit solveset
, aber ich habe die gleichen Ergebnisse wie mit 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}
Dies funktioniert (klingt seltsam, aber die Lösung sollte für alle reellen Zahlen funktionieren), aber wenn ich versuche, es auf eine andere Polynomgleichung wie 'n = Eq (y, (x + 1) ** 5) ', Ich bekomme einen leeren Satz. Weißt du, was ich tun kann, um das x = y ** (1/5) -1 zu bekommen, das ich erwartet habe? (Ich kann das in einer anderen Frage fragen, ob ich dazu sollte.) – DragonautX
@DragonautX: Entschuldigung, ich habe keine gute Antwort auf Ihre allgemeine Frage. – unutbu
Das ist in Ordnung. Am Ende kann ich es immer von Hand machen und von dort aus arbeiten, oder ich kann ein anderes Werkzeug ausprobieren. – DragonautX