矩阵代码
clc
清除
全部关闭;
A=0.4;
B=0.1;
I=0.4;
S=0.5;
%ode
tspan=[0 50];
y0=[I S];
[t,y]=ode45(@(t,y ) odefun(t ) t,y,a,b ),tspan,y0 );
r=1- y 653360,1 (-y ) :2 );
%euler
n=size(r,1 );
h=50/(n-1 );
t_0=[0:h:50]‘;
y_I=Zeros(n,1 );
y_s=Zeros(n,1 );
y_I(1)=I;
y_s(1)=S;
for i=1:n-1
y_I(I1 )=h*[A*y_i(i ) I ) y _ s (I )- B*y_i(i ) I]y_I ) I;
y_s(I1 )=h*[-A*y_i(i ) I ) y_s ) I]y_s ) I;
结束
r _0=1- y _ I (:1 )-y_s ) :1 );
%图
subplot (2,2,1 );
plot(t,y ) :1 )、‘-o‘,t,y )、2 )、‘-.‘,t,r,‘g’;
保持打开;
legend(‘ (“生病的人:I(t )”、“健康的人:s(t ) t )”、“去除人数:r(t ) t )”、“位置”、“最佳”
ylabel(‘(占人口的比例) );
xlabel(‘(时刻t );
str=[‘接触数/:’,num2str(a/b ),‘初始疾病患者数:’,num2str (I ),‘,初始健康人数:’,num2str ) ] );
text (15,0.4,str,‘FontSize‘,10 );
title(sir模型(ode ) );
subplot (2,2,2 );
plot(t_0,y_i,‘- o’,t_0,y_s,‘-.‘,t_0,r_0,‘g’);
保持打开;
legend(‘ (“生病的人:I(t )”、“健康的人:s(t ) t )”、“去除人数:r(t ) t )”、“位置”、“最佳”
ylabel(‘(占人口的比例) );
xlabel(‘(时刻t );
str=[‘接触数/:’、num2str(a/b )、‘初始疾病患者数:’、num2str (I )、‘、初始健康人数:’、num2str ) ] );
text (15,0.4,str,‘FontSize‘,10 );
title(sir模型(euler ) );
subplot (2,2,3 );
plot(t_0,y_i,‘r-‘,t,y ) :1 )、‘-.‘;
diff=sum(ABS(y_I-y ) :1 ) );
str1=[‘疾病患者数对比图I(t ),误差:‘,num2str(diff ) ]
title(str1;
egend (‘Euler’、‘ode’、‘location’、‘best’)
ylabel(‘(占人口的比例) );
xlabel(‘(时刻t );
subplot (2,2,4 );
plot(t_0,y_s,‘r-‘,t,y ) :2 ),‘-.‘;
diff=sum(ABS(y_s-y ) :2 );
str1=[‘健康人数比较图s(t ),误差:’,num2str(diff ) ]
title(str1;
egend (‘Euler’、‘ode’、‘location’、‘best’)
ylabel(‘(占人口的比例) );
xlabel(‘(时刻t );
functiondydt=odefun(t,y,a,b ) )。
dydt=zeros (2,1 );
dydt(1)=A*y(1)1) y )2)- B*y(1) 1;
dydt(2)=-A*y(1)1) *y ) 2;
结束
结果
原文: 3359 www.cn blogs.com/shish/p/12685865.html