当前位置:   article > 正文

【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真_龙格库塔法matlab

龙格库塔法matlab

1.软件版本

MATLAB2013b

2.算法理论

       龙格-库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。龙格库塔法的家族中的一个成员如此常用,以至于经常被称为“RK4”或者就是格库塔法”。令初值问题表述如下。

       这样,下一个值(yn+1)由现在的值(yn)加上时间间隔(h)和一个估算的斜率的乘积决定。该斜率是以下斜率的加权平均:

        k1是时间段开始时的斜率;

        k2是时间段中点的斜率,通过欧拉法采用斜率k1来决定y在点tn + h/2的值;

        k3也是中点的斜率,但是这次采用斜率k2决定y值;

        k4是时间段终点的斜率,其y值用k3决定。

3.部分matlab程序 

  1. clc;
  2. clear;
  3. close all;
  4. warning off;
  5. %The parameter
  6. g = 9.81;
  7. L = 0.1;
  8. m = 0.5;
  9. es = 2;
  10. %the range of t
  11. t0 = 0;
  12. tf = 10;
  13. x0 = 0.25;
  14. x0dot = 0;
  15. Step = 1000;
  16. %The method of RK4
  17. Y1 = func_4RGKT(t0,tf,x0,x0dot,Step);
  18. figure(1);
  19. subplot(121);
  20. plot([t0:(tf-t0)/Step:tf],Y1,'b');
  21. xlabel('t');
  22. ylabel('x');
  23. axis square;
  24. grid on;
  25. title('the method of RK4');
  26. %The method of Euler
  27. Y2 = func_Euler(t0,tf,x0,x0dot,Step);
  28. figure(1);
  29. subplot(122);
  30. plot([t0:(tf-t0)/Step:tf],Y2,'r');
  31. xlabel('t');
  32. ylabel('x');
  33. axis square;
  34. grid on;
  35. title('the method of Euler');
  1. function Y1 = func_4RGKT(t0,tf,x0,x0dot,STEPS);
  2. %t0, tf, upper and lower, respectively,
  3. %x0 the initial value of y,
  4. %STEPS steps times
  5. h = (tf - t0)/STEPS;
  6. T = zeros(1,STEPS+1);
  7. Y = zeros(1,STEPS+1);
  8. T(1) = t0;
  9. Y(1) = x0;
  10. Y0dot(1) = x0dot;
  11. for j=1:STEPS
  12. tj = T(j);
  13. yj = Y(j);
  14. yjd = Y0dot(j);
  15. k1 = h*func_function(tj ,[yj,yjd]);
  16. k2 = h*func_function(tj+h/2 ,[yj+h*k1(1)/2,yjd+h*k1(2)/2]);
  17. k3 = h*func_function(tj+h/2 ,[yj+h*k2(1)/2,yjd+h*k2(2)/2]);
  18. k4 = h*func_function(tj+h ,[yj+h*k3(1) ,yjd+h*k3(2)]);
  19. Y(j+1) = yj + (k1(1) + 2*k2(1) + 2*k3(1) + k4(1))/6;
  20. Y0dot(j+1) = yjd + (k1(2) + 2*k2(2) + 2*k3(2) + k4(2))/6;
  21. T(j+1) = t0 + h*j;
  22. end
  23. Y1=Y';

4.仿真结论

 

         从图的仿真结果可知,当算法迭代1000次的时候,算法经过几个周期抖动之后收敛,但是其收敛时间较短。 因此,从整体而言,采用RK4算法,比Euler算法收敛更快,且较快的达到一定精度之内A28-20。

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

闽ICP备14008679号