Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.27 KB | None | 0 0
  1. %metoda Jacobiego
  2. clc
  3. clear all
  4. %funkcja
  5. F = @(x,y) -cos(x+y)-cos(x-y);
  6. %rozw analityczne
  7. z=@(x,y) cos(x).*cos(y);
  8.  
  9. %warunki brzegowe
  10. u1 = @(x) cos(x);
  11. u2 = @(y) -cos(y);
  12. u3 = @(x) 0;
  13. u4 = @(y) cos(y);
  14.  
  15. %przedział omega
  16. a=0;
  17. b=pi;
  18. c=0;
  19. d=pi/2;
  20.  
  21. n=5;
  22. m=5;
  23.  
  24. h=(b-a)/(n+1);
  25. k=(d-c)/(b-a)*(n+1)-1;
  26. x=[a:h:b];
  27. y=[c:h:d];
  28.  
  29. tol=1e-6; %tolerancja
  30. error = 1; %błąd
  31. licznik=0; %licznik iteracji
  32.  
  33. %wartość lambda
  34. dlgx=length(x)
  35. dlgy=length(y)
  36. lambda = (0.25)*((cos(pi/(dlgx-1))+cos(pi/(dlgy-1)))^2);
  37. %wartość omega
  38. w = 1+(lambda/((1+sqrt(1-lambda))^2));
  39.  
  40. %tworzenie macierzy
  41. U1(1:n+2) = u1(x);
  42. U2(1:k+2) = u2(y(1:(k+2)));
  43. U3(1:n+2) = u3(x);
  44. U4(1:k+2) = u4(y(1:(k+2)));
  45.  
  46. U(1,:) = U1(1:n+2);
  47. U(k+2,:) = U3(1:n+2);
  48. U(:,1) = U4(1:k+2);
  49. U(:,n+2) = U2(1:k+2);
  50.  
  51. Uk=U;
  52.  
  53.  
  54.  
  55. while error>tol
  56.     licznik = licznik+1;
  57.     for i=2:k+1
  58.         for j=2:n+1
  59.              Uk(i,j) =(0.25*w*(U(i,j+1)+U(i+1,j)+Uk(i,j-1)+Uk(i-1,j)))+((1-w)*U(i,j))-0.25*h^2*F(x(j),y(i));
  60.         end
  61.     end
  62.  
  63.    % error = sqrt(sum(sum((Uk-U).^2)))
  64.     error = max(max(abs(Uk-U)));
  65.  
  66.     U=Uk;
  67. end
  68. U;
  69. [X,Y] = meshgrid(x,y);
  70. subplot(1,2,1)
  71. surf(X,Y,U)
  72. title('Obliczone')
  73. subplot(1,2,2)
  74. surf(X,Y,(z(X,Y)))
  75. title('Analitycznie')
  76.  
  77. bb = abs(U-z(X,Y));
  78. max(max(bb))
  79. licznik
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement