Advertisement
codisinmyvines

zadanie2

Dec 22nd, 2022 (edited)
874
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.15 KB | None | 0 0
  1. tspan=[0 5];
  2. y0=[1/sqrt(2) 0];
  3. N=50;
  4. [t,Y]=RK3another(@ftest, tspan, y0, N);
  5. y1=Y(:,1);%Приближенное решение
  6. y2=Y(:,2);%Приближенное решение
  7. u1=cos(t)./(1+ exp(2.*t)).^(1/2);
  8. u2=sin(t)./(1+ exp(2.*t)).^(1/2);
  9.  
  10. % Сравнение приближенного решения с точным%%
  11. fig1 = figure;
  12. plot(t,u1)
  13. hold on
  14. plot(t,y1,'o');
  15. xlabel('t')
  16. ylabel('y_1')
  17. legend('точное','прибл.')
  18. title('N=50')
  19.  
  20. fig2 = figure;
  21. plot(t,u2)
  22. hold on
  23. plot(t,y2,'o');
  24. xlabel('t')
  25. ylabel('y_2')
  26. legend('точное','прибл.')
  27. title('N=50')
  28.  
  29. % tspan = [0 5];
  30. % N = [30 50 80 100 150 200 300 400 500 1000];
  31. % y0=[1/sqrt(2) 0];
  32. % e = zeros(1,numel(N));
  33. % hs = zeros(1,numel(N));
  34. % for i=1:numel(N)
  35. %     [t,Y,h]=RK3another(@ftest, tspan, y0, N(i));
  36. %     hs(i)=h;
  37. %     y1=Y(:,1);
  38. %     y2=Y(:,2);
  39. %     u1=cos(t)./(1+ exp(2.*t)).^(1/2);
  40. %     u2=sin(t)./(1+ exp(2.*t)).^(1/2);
  41. %     e1=norm(y1-u1,inf);
  42. %     e2=norm(y2-u2,inf);
  43. %     e(i)=max(e1,e2);
  44. % end
  45.  
  46. % alpha=zeros(1,numel(N)-1);
  47. % for i=1:numel(N)-1
  48. %     alpha(i)=log10(e(i+1)/e(i))/log10(hs(i+1)/hs(i));
  49. % end
  50.  
  51. % f2 = figure;
  52. % loglog(hs,e)
  53. % xlabel('h')
  54. % ylabel('e')
  55.  
  56.  
  57. % e_alpha = zeros(1, numel(alpha));
  58. % h_alpha = zeros(1, numel(alpha));
  59. % for i=1:numel(alpha)
  60. %     h_alpha(i) = hs(i);
  61. %     e_alpha(i) = e(i)/h_alpha(i)^(alpha(i));
  62. % end
  63. % f3 = figure;
  64. % loglog(h_alpha, e_alpha)
  65. % xlabel('h')
  66. % ylabel('e/h^α')
  67.  
  68. % C_h = zeros(1, numel(hs));
  69. % for i=1:numel(hs)
  70. %     C_h(i)=e(i)/hs(i)^3;
  71. % end
  72. %
  73. % f4 = figure;
  74. % loglog(hs,C_h);
  75. % xlabel('h')
  76. % ylabel('C(h)')
  77.  
  78.  
  79. %%%%%
  80. function [T,Y,h]=RK3another(f,tspan,y0,N)
  81.     n=numel(y0);
  82.     T=zeros(N,1);
  83.     Y=zeros(N,n);
  84.     h=(tspan(2)-tspan(1))/(N-1);
  85.     Y(1,:)=(y0(:))';
  86.     T(1)=tspan(1);
  87.     for i=1:N-1
  88.         K1=(f(T(i),Y(i,:)))';
  89.         K2=(f(T(i)+h/3,Y(i,:)+(h/3)*K1))';
  90.         K3=(f(T(i)+2*h/3,Y(i,:)+(2*h/3)*K2 ))';
  91.         Y(i+1,:)=Y(i,:)+(h/4)*(K1+3*K3);
  92.         T(i+1)=T(i)+h;
  93.     end
  94. end
  95.  
  96.  
  97.  
  98. %%%%%%
  99. function dydt=ftest(t,y)
  100.     dydt=zeros(2,1);
  101.     dydt(1)=-y(2)+y(1)*(y(1)^2+y(2)^2-1);
  102.     dydt(2)=y(1)+y(2)*(y(1)^2+y(2)^2-1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement