Chciałbym rozwiązać y = (x + 1) ** 3 -2 dla x w sympy, aby znaleźć jego funkcję odwrotną.
Próbowałem użyć solve
, ale nie dostałem tego, czego się spodziewałem.
Oto co napisałem w konsoli ipython w cmd (sympy 1,0 na Python 3.5.2):
Jak mogę rozwiązać y = (x + 1) ** 3 -2 dla x w sympy?
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]
Szukałem na ostatni element listy w Out [4]
, ale to nie jest równy x = (y + 2) ** (1/3) - 1 (czego się spodziewałem).
Dlaczego program Sympy wyświetlił nieprawidłowy wynik,
i co mogę zrobić, aby rozwiązanie sympy było rozwiązaniem, którego szukałem?
Próbowałem użyć solveset
, ale mam takie same wyniki jak przy użyciu 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}
To działa (brzmi to dziwnie, rozwiązanie powinno działać dla wszystkich liczb rzeczywistych), ale kiedy próbuję rozszerzyć to na inne równanie wielomianowe, takie jak 'n = Eq (y, (x + 1) ** 5) ', otrzymuję pusty zestaw. Czy wiesz, co mogę zrobić, aby uzyskać x = y ** (1/5) -1, którego oczekiwałem? (Mogę zapytać o to w innym pytaniu, czy powinienem.) – DragonautX
@DragonautX: Przepraszam, nie mam dobrej odpowiedzi na twoje ogólne pytanie. – unutbu
W porządku. Koniec końców, zawsze mogę to zrobić ręcznie i pracować stamtąd, lub mogę wypróbować inne narzędzie. – DragonautX