我有一个函数,可以将符号拉格朗日方程式转换为汉密尔顿方程式。我遇到的一个方面是用动量项代替质量*速度项。
我有一行代码可以返回所有动量项:
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。我很好奇是否有办法隔离符号项或删除符号项前面的常量。
答案 0 :(得分:0)
当您说“删除常数”时,我想您的意思是您想使1.0
消失。一种方法是在矩阵上使用nsimplify
:
>>> m
Matrix([[1.0*m*v**2]])
>>> nsimplify(m, rational=True)
Matrix([[m*v**2]])