隔离符号表达式中的变量

时间:2019-06-04 15:26:21

标签: python sympy

我有一个函数,可以将符号拉格朗日方程式转换为汉密尔顿方程式。我遇到的一个方面是用动量项代替质量*速度项。

我有一行代码可以返回所有动量项:

momentum = lagrangian.jacobian(velocity)

返回具有质量*速度的像元的符号矩阵 示例:

>>> momentum
Matrix([[0, 0, 1.0*m_1*xd2, 1.0*m_1*yd2, 1.0*m_2*td1, 1.0*m_2*td2]])

当我尝试用动量符号“ p”代替每个术语时,sympy.subs函数无法识别任何质量*速度项。我相信这是因为表达式中的常数为1.0。我很好奇是否有办法隔离符号项或删除符号项前面的常量。

1 个答案:

答案 0 :(得分:0)

当您说“删除常数”时,我想您的意思是您想使1.0消失。一种方法是在矩阵上使用nsimplify

>>> m
Matrix([[1.0*m*v**2]])
>>> nsimplify(m, rational=True)
Matrix([[m*v**2]])