2016-09-02 110 views
0

我有一個微分方程的兩個變量,如下面在MATLAB格式MATLAB ODE45求解微分方程相同的順序

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

您需要解決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 ]