Advertisement
Leedwon

Untitled

Jun 11th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. clear all
  2. clc
  3.  
  4. %RK IV
  5.  
  6. f=@(x,y) exp(1).^(-1*x) -2*x;
  7. y0 = -1;
  8.  
  9. x1(1) = 0;
  10. y1(1) = y0;
  11. n1 = 1;
  12. h1 = 0.01;
  13. ilosc_dzialan_dla_h1 = 0;
  14. tic
  15. while x1<1
  16. %tic;
  17. x1(n1+1) = x1(n1) + h1;
  18. k11 = h1*f(y1(n1),x1(n1));
  19. k21 = h1*f(y1(n1)+(k11/2),x1(n1)+(h1/2));
  20. k31 = h1*f(y1(n1)+(k21/2),x1(n1)+(h1/2));
  21. k41 = h1*f(y1(n1)+k31,x1(n1)+h1);
  22. phi1 = (1/6)*(k11+2*k21+2*k31+k41);
  23. y1(n1+1) = y1(n1)+phi1;
  24. n1 = n1+1;
  25. ilosc_dzialan_dla_h1 = ilosc_dzialan_dla_h1 + 1;
  26. %toc;
  27. end
  28. ilosc_dzialan_dla_h1
  29. y1
  30. Time1 = toc
  31. plot(x1,y1,'r-');
  32.  
  33. rown1=@(x,y) exp(1).^(-x)-2*x;
  34. tspan=0:0.01:1;
  35. [x,y]=ode45(rown1, tspan, -1);
  36. plot(x,y,'r+')
  37.  
  38. hold on
  39.  
  40.  
  41.  
  42. x2(1) = 0;
  43. y2(1) = y0;
  44. n2 = 1;
  45. h2 = 0.001;
  46. ilosc_dzialan_dla_h2 = 0;
  47. tic
  48. while x2<1
  49. %tic;
  50. x2(n2+1) = x2(n2) + h2;
  51. k12 = h2*f(y2(n2),x2(n2));
  52. k22= h2*f(y2(n2)+(k12/2),x2(n2)+(h2/2));
  53. k32 = h2*f(y2(n2)+(k22/2),x2(n2)+(h2/2));
  54. k42 = h2*f(y2(n2)+k32,x2(n2)+h2);
  55. phi2 = (1/6)*(k12+2*k22+2*k32+k42);
  56. y2(n2+1) = y2(n2)+phi2;
  57. n2 = n2+1;
  58. ilosc_dzialan_dla_h2 = ilosc_dzialan_dla_h2 + 1;
  59. %toc;
  60. end
  61.  
  62. ilosc_dzialan_dla_h2
  63. y2
  64. Time2 = toc
  65. plot(x2,y2,'b-');
  66.  
  67. rown2=@(x,y) exp(1).^(-x)-2*x;
  68. tspan2=0:0.001:1;
  69. [x,y]=ode45(rown2, tspan2, -1);
  70. plot(x,y,'y-o')
  71.  
  72. hold on
  73.  
  74.  
  75. x3(1) = 0;
  76. y3(1) = y0;
  77. n3 = 1;
  78. h3 = 0.0001;
  79. ilosc_dzialan_dla_h3 = 0;
  80. tic
  81. while x3<1
  82. %tic;
  83. x3(n3+1) = x3(n3) + h3;
  84. k13 = h3*f(y3(n3),x3(n3));
  85. k23 = h3*f(y3(n3)+(k13/2),x3(n3)+(h3/2));
  86. k33 = h3*f(y3(n3)+(k23/2),x3(n3)+(h3/2));
  87. k43 = h3*f(y3(n3)+k33,x3(n3)+h3);
  88. phi3 = (1/6)*(k13+2*k23+2*k33+k43);
  89. y3(n3+1) = y3(n3)+phi3;
  90. n3 = n3+1;
  91. ilosc_dzialan_dla_h3 = ilosc_dzialan_dla_h3 + 1;
  92. %toc;
  93. end
  94.  
  95. ilosc_dzialan_dla_h3
  96. y3
  97. Time3 = toc
  98. plot(x3,y3,'g-');
  99. hold on
  100.  
  101. rown1=@(x,y) exp(1).^(-x)-2*x;
  102. tspan3=0:0.0001:1;
  103. [x,y]=ode45(rown1, tspan3, -1);
  104. plot(x,y,'-o')
  105.  
  106.  
  107. %legend('Wykres dla kroku : h1','Wykres dla kroku : h2','Wykres dla kroku : h3','Dokładny wykres ode23');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement