我有一个微分方程,如下面的matlab格式
syms x y m g r l J
% x,y are variables, the others are constant
1: 0.5*m*(r^2*x^2+l^2*(Dx-Dy)^2+2*r*l*Dx*(Dx-Dy)*cos(y))+0.5*J*(Dx-Dy)^2=m*g*
(l*sin(x-y)-r*(1-cos(x)));
2: J*(D2x-D2y)+l^2*(D2x-D2y)-r*l*(Dx)^2*sin(y)+r*l*D2x*cos(y)-m*g*l*cos(x-y)=0,
3: x(0)=pi/2,y(0)=pi/2,Dx(0)=0,Dy(0)=0,
我想用ODE45方法来解决它,但我不知道如何在这种情况下使用它
答案 0 :(得分:0)
您需要解决D2x和D2y才能获得明确的ODE。由于它们只有一个方程,你所拥有的是DAE,微分代数方程(系统)。
因此,您要么使用DAE求解器,要么必须计算第一个等式的导数以获得二阶导数的第二个等式,将它们隔离(如果需要,使用数值求解器)然后将其解算为二阶ODE。
eq3 = diff(eq1, t)
deriv(t,w)
x,y,Dx,Dy = w
solve(eq2,eq3 for D2x,D2y)
deriv = [ Dx, Dy, D2x, D2y ]