我对Python和Sympy相当陌生,所以在问这个问题之前,我在google上搜索了很多东西。在
我用Sympy来推导机械系统的运动方程,这是我设法做到的。在
from math import *
from sympy import *;
from sympy.physics.mechanics import *
from sympy.physics.vector import *
# dynamic symbols, for Lagrange equations
x, z, theta = dynamicsymbols('x z theta')
xd, zd, thetad = dynamicsymbols('x z theta',1)
xdd, zdd, thetadd = dynamicsymbols('x z theta',2)
# Lagrangian potential
L = Symbol('L')
def L(x,z,theta,xd,zd,thetad):
return 0.5*1*xd**2 + 0.5*100*thetad**2 - 0.5*300*(z)**2+0.5*250*(x+ 100*theta)**2
# build Lagrange equations
LM0 = LagrangesMethod(L(x,z,theta,xd,zd,thetad), [x, z, theta])
equations0 = LM0.form_lagranges_equations()
print(equations0)
然而,我得到了一个三个变量的二阶常微分方程组,我想把它转换成六个变量的一阶常微分方程组。在
如您所见,输出是以变量x,z,θ及其二阶导数表示的。我无法得到变量xd、xdd等形式的拉格朗日方程,所以我想用这样的导数来代替:
^{pr2}$但是替换不起作用,我得到了未修改的表达式。我已经看到了another example这种替代似乎起作用的地方;我在这里看到的区别是动态符号的使用。在
有谁能建议我应该如何处理我的方程来描述系统的一阶导数?在
提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐