1

この回答では、などargsの SymPy クラスでソートされないようにする方法が説明されています。MulAdd

ここで説明されているような新しく作成されたクラスの場合、 sympy.core.numbers.Floatsympy.core.numbers.Piまたはを掛けるsympy.core.numbers.Integerと、たとえば、次のようにすると右側に移動できます。

print D(x) * 1.
1.0*D(x)

元の式は0.評価されると を返しますが、新しい式は を返しますD(x)

この微分演算子が適切に機能するためには、左側にとどまる必要があります。

print D(x) * 1.
D(x)*1.0

_op_priority優先度を変更する場合のように__mul__()、SymPy に左または右に留まるタイプを伝える隠しパラメーターはありますか?

4

1 に答える 1

1

Mul による乗算は、期待どおりには機能しません。

まず、印刷順序は何の関係もありません。それだけの場合は、プリンターを改造することで変更できます。

代わりに、オブジェクトの.args. しかし、ここでも、これは問題ではありません。何かを乗算で乗算すると、各乗算が表示された順序で「適用」されるわけではありません。むしろ、Mulすべての引数を組み合わせた新しいオブジェクトを作成します (このcommutative=False場合、引数は順番に保持されます)。Mul は、これらのオブジェクトに対して特別なサブメソッドを呼び出しません。これは私たちが望んでいる機能です ( https://code.google.com/p/sympy/issues/detail?q=1941&id=1941およびhttps://github.com/sympy/sympy/wiki/Canonicalizationを参照)。今のところ、それは行われていません。

于 2013-06-05T21:46:47.587 に答える