Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. %Runge-Kutta version
  2.  
  3. clear;
  4.  
  5. side=50;
  6. [X,Y]=meshgrid(linspace(0,1,side));
  7.  
  8. x=ones(size(Y));
  9. y=1-((X-0.5).^2+(Y-0.5).^2);
  10.  
  11. alpha1=0.8;
  12. alpha2=1.2;
  13. alpha3=0.5;
  14. epsilon=0.01;
  15. Beta1=-[0.1;0.1];
  16. Beta2=-[0.1;0.1];
  17. uprim=@(u,gu1,gu2,du1,du2)([
  18. -alpha1*u(1)*u(2)-dot(Beta1,gu1)+epsilon*du1;
  19. alpha2*u(1)*u(2)-alpha3*u(2)-dot(Beta2,gu2)+epsilon*du2]);
  20. h=0.05;
  21. t=0:h:2;
  22.  
  23. Y1=zeros(side,side,numel(t));
  24. Y2=zeros(side,side,numel(t));
  25.  
  26. Y1(:,:,1)=x;
  27. Y2(:,:,1)=y;
  28. for j=2:numel(t)+1
  29. [gx1,gy1]=gradient(Y1(:,:,j-1),h,h);
  30. [gx2,gy2]=gradient(Y2(:,:,j-1),h,h);
  31. du1=del2(Y1(:,:,j-1),h,h);
  32. du2=del2(Y2(:,:,j-1),h,h);
  33. k1=zeros(side,side,2);
  34. k2=zeros(side,side,2);
  35. k3=zeros(side,side,2);
  36. for i=0:numel(X)-1
  37. i1=mod(i,side)+1;
  38. i2=floor(i/side)+1;
  39.  
  40. gu1=[gx1(i1,i2);gy1(i1,i2)];
  41. gu2=[gx2(i1,i2);gy2(i1,i2)];
  42. u=[Y1(i1,i2,j-1);Y2(i1,i2,j-1)];
  43.  
  44. k1(i1,i2,:)=uprim(u,gu1,gu2,du1(i1,i2),du2(i1,i2));
  45. end
  46. Yk1=cat(3,Y1(:,:,j-1),Y2(:,:,j-1))+h*k1/2;
  47. [gx1,gy1]=gradient(Yk1(:,:,1),h,h);
  48. [gx2,gy2]=gradient(Yk1(:,:,2),h,h);
  49. du1=del2(Yk1(:,:,1),h,h);
  50. du2=del2(Yk1(:,:,2),h,h);
  51. for i=0:numel(X)-1
  52. i1=mod(i,side)+1;
  53. i2=floor(i/side)+1;
  54.  
  55. gu1=[gx1(i1,i2);gy1(i1,i2)];
  56. gu2=[gx2(i1,i2);gy2(i1,i2)];
  57. u=[Yk1(i1,i2,1);Yk1(i1,i2,2)];
  58.  
  59. k2(i1,i2,:)=uprim(Yk1,gu1,gu2,du1(i1,i2),du2(i1,i2));
  60. end
  61. Yk2=cat(3,Y1(:,:,j-1),Y2(:,:,j-1))+h*k2/2;
  62. [gx1,gy1]=gradient(Yk2(:,:,1),h,h);
  63. [gx2,gy2]=gradient(Yk2(:,:,2),h,h);
  64. du1=del2(Yk2(:,:,1),h,h);
  65. du2=del2(Yk2(:,:,2),h,h);
  66. for i=0:numel(X)-1
  67. i1=mod(i,side)+1;
  68. i2=floor(i/side)+1;
  69.  
  70. gu1=[gx1(i1,i2);gy1(i1,i2)];
  71. gu2=[gx2(i1,i2);gy2(i1,i2)];
  72. u=[Yk2(i1,i2,1);Yk2(i1,i2,2)];
  73. k3(i1,i2,:)=uprim(u,gu1,gu2,du1(i1,i2),du2(i1,i2));
  74. end
  75. Yk3=cat(3,Y1(:,:,j-1),Y2(:,:,j-1))+h*k2;
  76. [gx1,gy1]=gradient(Yk3(:,:,1),h,h);
  77. [gx2,gy2]=gradient(Yk3(:,:,2),h,h);
  78. du1=del2(Yk3(:,:,1),h,h);
  79. du2=del2(Yk3(:,:,2),h,h);
  80. for i=0:numel(X)-1
  81. i1=mod(i,side)+1;
  82. i2=floor(i/side)+1;
  83.  
  84. gu1=[gx1(i1,i2);gy1(i1,i2)];
  85. gu2=[gx2(i1,i2);gy2(i1,i2)];
  86. u=[Yk3(i1,i2,1);Yk3(i1,i2,2)];
  87.  
  88. k4(i1,i2,:)=uprim(u,gu1,gu2,du1(i1,i2),du2(i1,i2));
  89. end
  90. slope=(k1+2*k2+2*k3+k4)/6;
  91.  
  92. Y1(:,:,j)=Y1(:,:,j-1)+slope(:,:,1)*h;
  93. Y2(:,:,j)=Y2(:,:,j-1)+slope(:,:,2)*h;
  94. end
  95. %% Record da movie
  96. min1=min(Y1(:));
  97. min2=min(Y2(:));
  98. max1=max(Y1(:));
  99. max2=max(Y2(:));
  100.  
  101. for j=1:numel(t)
  102. clf
  103. subplot(2,1,1)
  104. imagesc(Y1(:,:,j))
  105. colorbar
  106. axis off
  107. subplot(2,1,2)
  108. imagesc(Y2(:,:,j))
  109. colorbar
  110. axis off
  111. M(j)=getframe(figure(1));
  112. end
  113.  
  114. %% PLAY!!!
  115. movie(M,3,5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement