Advertisement
martaczaska

Untitled

May 8th, 2021
1,303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.90 KB | None | 0 0
  1. % Lab 4.
  2. % Marta Trzaska 171632 SiSR
  3.  
  4. function [x] = newton(x0, f, Jf)
  5.     x = x0;
  6.     global x_k normdiff;
  7.     x_k = zeros(3, 15);
  8.    
  9.     for i=1:15
  10.         %poszukiwana wartość y z równania -> Jf(x_k)*y = f(x_k)
  11.         %Jf(x_k) = L*U -> L*U*y = f(x_k) -> U*y = L\f(x_k) = z -> y = U\z
  12.         [L, U] = lu(Jf(x));
  13.         z = L\f(x);
  14.         y = U\z;
  15.         x = x - y;
  16.         x_k(:,i) = x;
  17.     end
  18.    
  19.     %wykres zbieżności Newtona:
  20.     xref = x_k(:,15);
  21.     normdiff = zeros(15,1);
  22.     for i=1:15
  23.         normdiff(i) = norm(x_k(:,i) - xref);
  24.     end
  25.    
  26.     figure;
  27.     semilogy([1:15], normdiff);
  28.     title('Wykres zbieżności Newtona');
  29.     xlabel('Liczba iteracji');
  30.     ylabel('Błąd');
  31.    
  32.     % szybkość zbieżności
  33.     for j=1:7
  34.         A(j, 1) = log(normdiff(j));
  35.         A(j, 2) = 1;
  36.         B(j, 1) = log(normdiff(j+1));
  37.     end
  38.     alfa = A\B
  39.  
  40. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement