Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [ lambda, x, OK ] = MPI(A, y, maxiter, epsilon)
- [n n] = size(A);
- k = 0;
- e = 2 * epsilon;
- OK = 1;
- u = y' * A * y;
- while e >= epsilon
- if k > maxiter
- OK = 0;
- error("Eroare!");
- endif
- %Rezolvarea sistemului folosind transformarea ortogonala
- B = A-u*eye(n);
- [Q, R] = Gram-Schmidt(B); %Algoritmul Gram-Schmidt
- y1 = Q'*y;
- x = SST(R, y1); %Rezolvarea unui sistem triunghiular superior prin subtitutii inverse
- %Sfarsit rezolvarea sistemului
- %x = (A - u*eye(n)) \ y;
- x = x / norm(x);
- lambda = x' * A * x;
- e = abs(1 - abs(y' * x));
- y = x;
- k = k + 1;
- u = lambda;
- endwhile
- endfunction
- function [Q, R] = Gram-Schmidt(A)
- [n , n] = size(A);
- Q = A;
- R = zeros(n);
- for k=1:n
- R(k, k) = norm(Q(:,k));
- Q(:. k) = Q(:, k) / R(k, k);
- for j = k+1:n
- R(k, j) = Q(:, k)'*Q(:, j);
- Q(:, j) = Q(:, j) - Q(:, k)*R(k, j):
- endfor
- endfor
- endfunction
- function x = SST (A,b)
- [n,n]=size(A);
- x=zeros(1,n);
- x(n)=b (n)/A(n,n);
- for i=n-1:-1:1
- x(i)=(b(i)-A(i,i+1:n)*x (i+1:n)')/A(i,i);
- endfor
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment