我需要使用 Matlab 解决这个一阶系统 ODE

I need to solve this first-order system ODE using Matlab

我必须使用 Matlab 求解这个一阶系统 ODE。

y' + y - z - u = 0。

z' - y + z - u = 0.

u' - y - z - u = 0.

y(0)=1, z(0)=0, u(0)= 0

上述一阶常微分方程组的解析解为:

y = (1/3)e^–x + (1/2)e^–2x + (1/6)e^2x

z = (1/3)e^–x – (1/2)e^–2x + (1/6)e^2x

u = (1/3)e^2x – (1/3)e^–x

我有这个代码来解决它并绘制我使用 ODE 求解器获得的数值解和我在语句中的解析解。

----------
clear
%options= odeset('RelTol',1e-5); 
options= odeset('RelTol',1e-5,'AbsTol',1e-7); 

[t23,y23]= ode23('functionB',[0 1],[1 0 0],options);
[t23s,y23s]= ode23s('functionB',[0 1],[1 0 0],options);

figure
ya =((1/3)*exp(-t23) + (1/2)*exp(-2*t23) + (1/6)*exp(2*t23));
za =((1/3)*exp(-t23) - (1/2)*exp(-2*t23) + (1/6)*exp(2*t23));
ua =((1/3)*exp(2*t23) + (1/3)*exp(-t23));
plot(t23,ya,t23,za,t23,ua);
title('\bf{Analytical solutions }')

figure
plot(t23,y23(:,1),'m-.',t23,y23(:,2),'g:', t23,y23(:,3),r);
title('\bf{Numerical solutions using} \it{ode23}')


figure
plot(t23s,y23s(:,1),'m-.',t23s,y23s(:,2),'g:', t23s,y23s(:,3),r);
title('\bf{Numerical solutions using} \it{ode23s}')

%legend('ya','ode23','ode23s',0)
%text(3.4,-1.7,'ya = -2sin(t) - cos(2t) ')
%title('\bf{Analytical and numerical solutions using} \it{ode23, ode23s}')
----------

我还有函数 functionB:

-------
function dy= functionB(t,y)

%-y+z+u
%y-z+u
%y+z+u

dy =[??????];

-------

我不知道如何在函数的代码中编写解决方案以在我的代码中使用它。

如果有人能帮助我,我将不胜感激。

提前致谢。

MATLAB 文档 some good examples 对此进行了介绍。

您必须像这样重新排列 ODE:

y' = -y + z + u = 0
z' =  y + z + u = 0
u' =  y + z + u = 0

然后您将 y 替换为 y(1),将 z 替换为 y(2),将 u 替换为 y(3),现在您可以编写函数了像这样:

function dy = functionB(t,y)

dy = zeros(3,1);

dy(1) = -y(1)+y(2)+y(3);
dy(2) =  y(1)-y(2)+y(3);
dy(3) =  y(1)+y(2)+y(3);

end