我想按以下顺序保留等式的结构。
*请注意,这是同情的。
Eq=A*X+B*U
其中X,U被分配给其他方程式。
Sympy用其他地方分配的变量扩展我的符号。 所以它最终会像:B x + B x ** 2 + 3 * A * x 我想做的是保留A X B U的顺序。
更新澄清: 嗨!谢谢你的答复。
在尝试了不同的选项之后,我发现通过使用Matrixsymbols,可以不操作矩阵中的元素。但是我仍然无法让它显示出所需的顺序。
这样做的原因是我可以将它保存在一个jupyter笔记本中,订单可能有助于解释或记录特定程序。
答案 0 :(得分:1)
使用变量创建表达式时,将在创建期间使用这些变量的值,例如
>>> x = cos(3)
>>> eq = x + 2
>>> eq
cos(3) + 2
因此,如果您希望eq看起来像x + 2
,则必须确保将x
定义为符号x
>>> x = Symbol('x')
>>> eq = x + 2
>>> eq
x + 2
如果您有多个符号并且想要控制排序,请使用未评估的表达式:
>>> A,B,X,U = symbols('A B X U')
>>> ax = Mul(A, X, evaluate=False)
>>> bu = Mul(B, U, evaluate=False)
>>> eq = Add(ax, bu, evaluate=False)
>>> eq
A*X + B*U
您可以将所需的值替换为
>>> eq.subs({U:x+x**2, X:3*x})
3*A*x + B*(x**2 + x)
>>> expand(_)
3*A*x + B*x**2 + B*x
这对您要做的事情有帮助吗?