用matlab做 求数值解: di/dt=si-0.3i ds/dt=-0.35si i(0)=0.02,s(0)=0.98 ,0≤t≤50, 要求小区间宽设h=1,在同一坐标系画出i(t)、s(t)随t变化的图像 再画出i(t)为纵轴,s(t)为横轴图像
时间: 2024-06-03 17:08:46 浏览: 101
首先,将微分方程转化为差分方程,使用欧拉方法求解:
$$\frac{i_{n+1}-i_n}{h}=s_n-0.3i_n$$
$$\frac{s_{n+1}-s_n}{h}=-0.35s_n$$
其中,$h$为时间步长,$i_n$和$s_n$为时间点$t_n$处的解,$i_{n+1}$和$s_{n+1}$为时间点$t_{n+1}=t_n+h$处的解。
根据初始条件,$i_0=0.02$,$s_0=0.98$,可以得到第一个时间点处的解。
接下来,使用差分方程进行迭代求解。代码如下:
h = 1;
t = 0:h:50;
n = length(t);
i = zeros(1,n);
s = zeros(1,n);
i(1) = 0.02;
s(1) = 0.98;
for k = 1:n-1
i(k+1) = i(k) + h*(s(k)-0.3*i(k));
s(k+1) = s(k) + h*(-0.35*s(k));
end
最后,使用plot函数画出i(t)和s(t)随t变化的图像,以及i(t)为纵轴,s(t)为横轴的图像。代码如下:
figure;
subplot(1,2,1);
plot(t,i,'r',t,s,'b');
legend('i(t)','s(t)');
xlabel('t');
ylabel('i(t),s(t)');
title('i(t) and s(t) vs. t');
subplot(1,2,2);
plot(s,i);
xlabel('s(t)');
ylabel('i(t)');
title('i(t) vs. s(t)');
阅读全文