我正在使用 Sympy(版本 0.7.3、Python 2.7.5、Mac OS X)求解器来求解一些矩阵方程,但我遇到了一个不一致的行为,这破坏了我的整个结果。准确地说,结果似乎取决于应该求解的方程的顺序。
以下代码生成了一个最小的工作示例:
from sympy import *
axx, bxx, byy = symbols('axx bxx byy')
这个命令
solve([axx - bxx, byy])
产生{axx: bxx, byy: 0}
结果,而切换方程的顺序
solve([byy, axx - bxx])
给出{byy: 0, bxx: axx}
,这在数学上当然是相同的,但是在使用 SymPysubs
函数应用此解决方案时会有所不同,即:
axx.subs({byy: 0, bxx: axx})
返回axx
,而
axx.subs({axx: bxx, byy: 0})
return bxx
,这显然会给后面的计算带来很多麻烦。
如果有人能告诉我如何使 SymPy 以一致的方式运行,我将不胜感激。我真的不在乎结果是否为{axx: bxx}
或{bxx: axx}
,但无论我在方程式中以何种顺序传递,它都应该是相同的。