在this answer中解釋瞭如何避免args
在SymPy類中排序,如Mul
,Add
等。Sympy,是否有可能迫使一個類停留在表達式的左側或右側
對於新創建的類like this one explained here當由sympy.core.numbers.Float
,sympy.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是不會變型更多到左邊還是右邊?
這個問題本身就沒有問題,但如果您使用它來創建差分運算符對象,則可能是以錯誤的方式進行的。首先,對差分運算符使用乘法是符號不一致的濫用。此外,這種方法不能清楚地表示嵌套的微分算子或常量和微分算子的和等。另外,微分算子已經在'diffgeom'模塊中實現。 – Krastanov
感謝您的評論!我已經經歷了很多使用這個差分運算器的問題,但它工作到目前爲止。你知道如何強制給定的課程留在SymPy的左側/右側嗎? –
我不知道有足夠的細節來寫這個答案,但你可以嘗試使用'commutative = False'。我真的不喜歡這種方法,並希望在未來版本的sympy中將這個刪除(沒有這樣的計劃),但是如果你知道你在做什麼繼續嘗試。 – Krastanov