3

Sympy は、変数の平方根が関係する式を単純化できないようです。

In [28]: a = x**2
In [29]: b = a**(1/2)
In [30]: b
Out[30]: 
    0.5
⎛ 2⎞   
⎝x ⎠   
In [31]: b.simplify()
Out[31]: 
    0.5
⎛ 2⎞   
⎝x ⎠   

私はこれを の他のバリアントで動作させることはできません。simplify特に、動作するはずだと思っていたでしょうb.powsimp()

In [32]: b.powsimp()
Out[32]: 
    0.5
⎛ 2⎞   
⎝x ⎠   

これが機能しない理由、または私が間違っていることを誰かが知っていますか?

4

3 に答える 3

6

あなたの例には2つの問題があります。

最初はの実数sqrt(x**2)==xのみ。

第二に、SymPy1/20.5は同じものではありません。1 つ目はRationalインスタンス、2 つ目はfloatインスタンスです。

最後に、例:

>>> x = Symbol('x', real=True)
>>> (x**2)**(1./2)
∣x∣**1.0
>>> (x**2)**(S(1)/2) # S() is short for sympify()
∣x∣

sympifyPython オブジェクトをより適切な SymPy オブジェクトに変換します。

于 2012-10-09T17:25:41.030 に答える
3

xとして宣言すると仮定しますx = Symbol('x')。に変更するとx = Symbol('x', real=True)、式が簡略化されるはずです。変数がsympy bugtrackerrealにあることを明示的に述べる必要がある理由を見つけることができます。

于 2012-10-09T09:53:40.497 に答える