课程实验及解决方案

text(0,2,'蓝鲸x1'); text(0,1,'磷虾x2'); 第二问的三种方法求解文件: euler方法:

function deuler(n,h) x1=2:h:n;m=max(size(x1)); x2(1)=1; for i=2:m

x2(i)=x2(i-1)+h*fun(x1(i-1),x2(i-1)); end

plot(x1,x2,'-r');

title('蓝鲸和磷虾的数量关系'); xlabel('蓝鲸的数量'); ylabel('磷虾的数量'); 改进的euler方法: function dimpeuler(n,h) x1=2:h:n;m=max(size(x1)); x2(1)=1; for i=2:m

k1=fun(x1(i-1),x2(i-1)); k2=fun(x1(i),x2(i-1)+h*k1); x2(i)=x2(i-1)+h*(k1+k2)/2;

16

end

plot(x1,x2,'-r');

title('蓝鲸和磷虾的数量关系'); xlabel('蓝鲸的数量'); ylabel('磷虾的数量');

经典的4级4阶Runge-Kutta法: function drk4(n,h) x1=2:h:n;m=max(size(x1)); x2(1)=1; for i=2:m

k1=fun(x1(i-1),x2(i-1));

k2=fun(x1(i-1)+h/2,x2(i-1)+h*k1/2); k3=fun(x1(i-1)+h/2,x2(i-1)+h*k2/2); k4=fun(x1(i-1)+h,x2(i-1)+h*k3); x2(i)=x2(i-1)+h*(k1+2*k2+2*k3+k4)/6; end

plot(x1,x2,'-r');

title('蓝鲸和磷虾的数量关系'); xlabel('蓝鲸的数量'); ylabel('磷虾的数量'); 命令窗口输入:

第一问的三个M文件要分别在命令窗口输入:

17

一:euler(200,0.1) 二:impeuler(200,0.1) 三:rk4(200,0.1)

第二问的三个M文件要分别在命令窗口输入: 一:deuler(20,0.1) 二:dimpeuler(200,0.1) 三:drk4(20,0.1) (3) 运行结果: 第一问中的euler方法:

第一问中的改进的euler方法:

18

第一问中的经典的4级4阶Runge-Kutta法:

第二问中的euler方法:

19

第二问中的改进的euler方法:

20

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4