代换导数形成一阶常微分系统

2024-09-29 23:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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这种替代似乎起作用的地方;我在这里看到的区别是动态符号的使用。在

有谁能建议我应该如何处理我的方程来描述系统的一阶导数?在

提前谢谢


Tags: fromimport方程导数sympythetaphysicsxd

热门问题