matlab ODE45用两个相同阶数的变量求解微分方程

时间:2016-09-02 14:44:53

标签: matlab math ode

我有一个微分方程,如下面的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方法来解决它,但我不知道如何在这种情况下使用它

1 个答案:

答案 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 ]