私のプロジェクトでは、Add
またはMul
オブジェクトを作成するときにevaluate=false
を使用する必要があります。この場合、これらのオブジェクトに対して等価チェックを適用すると問題に直面しています。問題は、議論の順序が原因です。Python-Sympy評価= Falseの場合の式の等価チェックに関する問題
以下の例を検討してください:結果はk2.args
としてfalse
ある
k2=Mul(*[x,y,2],evaluate=False)
k1=Mul(*[x,2,y],evaluate=False)
print k1==k2
は(x,y,2)
あるとk1.args
は(x,2,y)
です。 したがって、タプルの等しいかどうかの比較チェックでは、false
が返されます。 希望の結果を得る方法はありますか?
私は(順序を逆にして、チェックなど)タプルに何らかの操作を置けばとk2
が(ときk1.args
= 2*x,y
と= 2*y,x
k2.args
のような)異なるMul
オブジェクト
ここでソートを使用することはできません。この場合、Add([x+y,z],evaluate=False)
とAdd([x+z,y],evaluate=False)
は2つの異なる表現になります。また、私がevalaute=True
を使用している場合、この場合Add([x+y],x])
とAdd([2*x+y])
は同じで、私は欲しくないでしょう。
私はこの質問を投稿しました。はい、私の乗算は常に可換です。私の質問の編集されたセクション – gsagrawal