2016-09-29 5 views
7

sympyでxの逆関数を求めるために、y =(x + 1)** 3 -2を解いてみたいと思います。
solveを使ってみましたが、期待したものが得られませんでした。
sympyでxに対してy =(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 =:

は、ここで私は(Pythonの3.5.2に1.0 sympy)CMDにIPythonコンソールに書いたものです(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} 

答えて

3

あなたはxyが正であることを宣言した場合は、その後、唯一の解決策があります:

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

これは(n = Eq(y、(x + 1)のような別の多項式に拡張しようとすると、 ** 5) '、私は空のセットを取得します。あなたは私が期待していたx = y **(1/5)-1を得るために何ができるか知っていますか? (もし私がそうしたら別の質問でこれを聞くことができます) – DragonautX

+0

@DragonautX:申し訳ありませんが、私はあなたの一般的な質問には良い答えがありません。 – unutbu

+0

それは大丈夫です。結局、私はいつも手でそれを行い、そこから作業するか、別のツールを試すことができます。 – DragonautX

4

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 

edit:sympy 0.7.6.1を使用して1.0にアップデートした後、もう動作しません。

+1

を生み出す

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) 

どのようにして行うことなくnに式を()を割り当てることができました ' x、y =記号( 'x y') '?また、私はまだ単純化されたバージョンを手に入れることができません。 '-2 **(2/3)*(-y + sqrt((y + 2)** 2)-2)**(1/3)/ 2-1 'を得る。 – DragonautX

+0

コピーするのを忘れて、申し訳ありません。さて、ソートのために 'print(simplify(sol))'を試してみてください。私は注文がランダムだと思う。 – L3viathan

+2

@DragonautXと同じ結果が得られます。 Pythonでsympyバージョン1.0を使用する場合3.5.​​2 –

関連する問題