当前位置:   article > 正文

欧拉法与梯形法求解微分方程【含matlab源代码】

梯形法解微分方程

e6f5bdc866fecc2d6c79fdd06763730c.png

本文介绍两种入门级求解微分方程的方法 —— 梯形法与欧拉法。

c72cab890dcb3c94fafed4225cf74fdf.png

db19d1086e689a470762f46026879cec.png

将上述方程组改写成matlab语言:

  1. function F = fun(t,Y)
  2. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  3. %                                                            %
  4. %   程序作者:Miracle         (matlab爱好者公众号)           %
  5. % %
  6. % 欢迎关注matlab爱好者公众号 %
  7. % %
  8. % 任何人都可以免费无条件获取本程序,切勿将本程序用于商业用途。%
  9. % 程序版权归matlab爱好者公众号所有。%
  10. % %
  11. % 敬告:切勿删改本声明部分,否则将自动失去本程序的使用权 %
  12. % %
  13. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  14. % 把初值传给T、T、V、C
  15. T = Y(1);
  16. Tx = Y(2);
  17. V = Y(3);
  18. C = Y(4);
  19. % 设置对应的微分方程
  20. f1 = 1 - 0.1*T + 0.5*T*(1 - (T + Tx)/1000) - 0.0014*V*T;
  21. f2 = 0.0014*V*T - 0.9*Tx - 0.03*Tx*C;
  22. f3 = 3.09375*Tx - (3+0.007*T)*V;
  23. f4 = 0.03*Tx*C-0.06*C;
  24. % 放在一起
  25. F = [f1;f2;f3;f4];
  26. end

一、欧拉法

1.1 向前欧拉公式

db2a19d6f75351360502acd69015966c.png

1.2 向后欧拉公式

f822c5fb6fd02b17b4f81476485a2d4a.png

   欧拉法求解源代码   

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % %
  3. % 程序作者:Miracle (matlab爱好者公众号) %
  4. % %
  5. % 欢迎关注matlab爱好者公众号 %
  6. % %
  7. % 任何人都可以免费无条件获取本程序,切勿将本程序用于商业用途。%
  8. % 程序版权归matlab爱好者公众号所有。%
  9. % %
  10. % 敬告:切勿删改本声明部分,否则将自动失去本程序的使用权 %
  11. % %
  12. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  13. clear;clc;close all;
  14. Delta = 0.001;       %定义步长
  15. t = 0:Delta:50; %定义自变量t
  16. n = length(t); %自变量长度n
  17. Y(:,1) = [20.7172;2;3.1478*10^5;122.1667]; %定义T T* V C的初始值
  18. %% 自定义欧拉法,求解微分方程组
  19. for k = 1:n-1
  20. %向前欧拉法
  21. %Y(:,k+1) = Y(:,k) + Delta*f(t(k),Y(:,k));
  22. Y(:,k+1) = Y(:,k) + Delta*f(t(k),Y(:,k));
  23. Y(:,k+1) = Y(:,k) + Delta*f(t(k+1),Y(:,k+1));
  24. end
  25. % 给T、T*、V、C赋值
  26. T = Y(1,:);
  27. T_xing = Y(2,:);
  28. V = Y(3,:);
  29. C = Y(4,:);
  30. %% 绘制图像
  31. figure;
  32. set(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]);
  33. subplot(2,2,1);
  34. plot(t,T,'linewidth',1);xlabel('t');ylabel('T');title('T');
  35. subplot(2,2,2);
  36. plot(t,T_xing,'linewidth',1);xlabel('t');ylabel('T^*');title('T^*');
  37. subplot(2,2,3);
  38. plot(t,V,'linewidth',1);xlabel('t');ylabel('V');title('V');
  39. subplot(2,2,4)
  40. plot(t,C,'linewidth',1);xlabel('t');ylabel('C');title('C');

  欧拉法结果图  

200e289f59b7c310c8eb3834e019cfa4.png

二、梯形法

a1862ee869cd97e25973bb776a5eb5b2.png

   梯形法求解源代码   

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % %
  3. % 程序作者:Miracle (matlab爱好者公众号) %
  4. % %
  5. % 欢迎关注matlab爱好者公众号 %
  6. % %
  7. % 任何人都可以免费无条件获取本程序,切勿将本程序用于商业用途。%
  8. % 程序版权归matlab爱好者公众号所有。%
  9. % %
  10. % 敬告:切勿删改本声明部分,否则将自动失去本程序的使用权 %
  11. % %
  12. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  13. clear;clc;close all;
  14. Delta = 0.001; % 定义步长
  15. t = 0:Delta:50; % 定义自变量t
  16. n = length(t); % 自变量长度n
  17. Y(:,1) = [20.7172;2;3.1478*10^5;122.1667];%定义T T* V C的初始值
  18. %% 自定义梯形公式法,求解微分方程组
  19. for k = 1:n-1
  20. Y(:,k+1) = Y(:,k) + Delta*f(t(k),Y(:,k));
  21. Y(:,k+1) = Y(:,k) + Delta*(f(t(k),Y(:,k))+f(t(k+1),Y(:,k+1)));
  22. end
  23. % 给T、T*、V、C赋值
  24. T = Y(1,:);
  25. T_xing = Y(2,:);
  26. V = Y(3,:);
  27. C = Y(4,:);
  28. %% 绘制图像
  29. figure;
  30. set(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]);
  31. subplot(2,2,1);plot(t,T,'linewidth',1);xlabel('t');ylabel('T');title('T');
  32. subplot(2,2,2);plot(t,T_xing,'linewidth',1);xlabel('t');ylabel('T^*');title('T^*');
  33. subplot(2,2,3);plot(t,V,'linewidth',1);xlabel('t');ylabel('V');title('V');
  34. subplot(2,2,4);plot(t,C,'linewidth',1);xlabel('t');ylabel('C');title('C');

   梯形法结果图   

352640443201dedb269943b81be9fa19.png

感谢Miracle向公众号投稿!欢迎更多爱好、喜欢matlab编程的朋友来稿,在公众号回复“投稿”了解投稿详情。

参考资料:

[1] https://blog.csdn.net/weixin_42141390/article/details/110184743
[2] https://blog.csdn.net/misskissC/article/details/8913941

图片来源:由 Gerd Altmann 在Pixabay上发布

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/814066
推荐阅读
相关标签
  

闽ICP备14008679号