线性微分方程的Matlab - Implict和Explict Euler方法

时间:2016-07-06 19:58:10

标签: matlab ode

正如您在标题上看到的,我想问一些关于ODE的事情。我们的老师在互联网上上传了一些例子,但它们只是由解决方案组成。

这是其中之一,即将解决以下方程式。

m_1 l^2 ϕ''_1 + m_1glϕ_1 + cl(ϕ_1 - ϕ_2) = 0
m_2 l^2 ϕ''_2 + m_2glϕ_2 + cl(ϕ_2 - ϕ_1) = 0

我想问的一点,正如你在解决方案中看到的那样,有一个D矩阵定义了。因此,该D矩阵的第一行通常由1和0组成,其余部分由仅在离开dy / dt之后出现的常数组成。这个D矩阵基于什么?我该如何定义?

%m1=100*m2
% Parametres
m_2=1;             
m_1=100*m_2;        
l=1;                
c=1;
g=10; 
% Initial Conditions
phi_1=1;
phi_2=-0.5;
dphi_1=0;
dphi_2=0;

% Iteration Parameters
dt=0.01;            
t_end=10;           

% Time Vector
t=0:dt:t_end;       
n_max=t_end/dt;

y(:,1)=[phi_1;phi_2;dphi_1;dphi_2];                                               
D=[0 0 1 0;0 0 0 1;-g/l-c/(m_1*l) c/(m_1*l) 0 0;c/(m_2*l) -g/l-c/m_2/l 0 0];      

y_exp=y;       
for n = 1:n_max
    y_exp(:,n+1)=dt*D*y_exp(:,n)+y_exp(:,n);         
end

y_imp=y;
for n = 1:n_max
    y_imp(:,n+1)=inv(eye(4)-D*dt)*y_imp(:,n);
end

1 个答案:

答案 0 :(得分:1)

你的系统是线性的,具有2阶和2阶的常系数。为了数值积分的目的,这使得变量中的阶1和阶4的系统

y = [ phi_1; phi_2; dphi_1; dphi_2 ]

矩阵D是该1阶系统的雅可比行列式。在制定为

时的矩阵
y' = D * y

遵循扩展方程式

phi_1' = dphi_1
phi_2' = dphi_2
dphi_1' = - (m_1*g*l * phi_1 + c*l * (phi_1 - phi_2) ) / (m_1 * l^2 )
dphi_2' = - (m_2*g*l * phi_2 + c*l * (phi_2 - phi_1) ) / (m_2 * l^2 )