Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. close all
  2. clear all
  3. clc
  4. %liczba punktów na brzegu
  5. n=18;
  6. A=zeros(n^2,n^2);
  7. b=ones(n^2,1);
  8. h=1/(n+1); %hx=hy
  9. %czas
  10. c = 0.7;
  11. dt = 0.01; %krok czasowy
  12. tk=5; %czas końcowy -inaczej czas animacji
  13. y=[];
  14. %p - poprzedni, n - następny
  15. up = zeros(n^2,1);
  16. u = zeros(n^2,1);
  17. un = zeros(n^2,1);
  18. figure;
  19.  
  20. %macierz A
  21.  
  22. for t=0:dt:tk
  23. %dla punktów na brzegu
  24. for i=1:n^2
  25. if i<=n
  26. A(i,i)=1;
  27. elseif i>(n*n-n)
  28. A(i,i)=1;
  29. elseif mod(i,n) == 1
  30. A(i,i)=1;
  31. elseif mod(i,n) == 0
  32. A(i,i)=1;
  33. else
  34. %dla punktów wewnątrz obszaru
  35. A(i,i)=-4*c^2*dt^2-h^2;
  36. A(i,i-1)=c^2*dt^2;
  37. A(i,i+1)=c^2*dt^2;
  38. A(i,i-n)=c^2*dt^2;
  39. A(i,i+n)=c^2*dt^2;
  40.  
  41. end
  42. end
  43. %wektor b dla punktów na brzegu
  44. for i=1:n^2
  45. if i<=n
  46. b(i,1)=0;
  47. elseif i>(n*n-n)
  48. b(i,1)=0;
  49. elseif mod(i,n) == 0
  50. b(i,1)=0;
  51. elseif mod(i,n) == 1
  52. b(i,1)=0;
  53. else
  54. b(i,1)=-2*h^2*u(i)+up(i)*h^2;
  55. end
  56. end
  57.  
  58. x1=[];
  59. y1=[];
  60. un=gmres(A,b,8,1e-9,100);
  61. y=reshape(u,n,n);
  62. surf(y);
  63. axis([0 n+1 0 n+1 -1 1]);
  64. shading interp
  65. colormap();
  66. pause(0.01);
  67. up=u;
  68. u=un;
  69. u(153,1)=sin(5*t);
  70. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement