-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPR_Inv.m
More file actions
36 lines (28 loc) · 1.04 KB
/
PR_Inv.m
File metadata and controls
36 lines (28 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function B = PR_Inv(A)
% Functia care calculeaza inversa matricii A folosind factorizari Gram-Schmidt
% Se va inlocui aceasta linie cu descrierea algoritmului de inversare
% algoritmul Gram-Schmidt
[m n] = size(A);
Q = zeros(m,n);
R = zeros(n);
for i = 1 : n
R(i,i) = norm(A(:,i), 2);
Q(:,i) = A(:,i) / R(i,i);
for j = i + 1 : n
R(i,j) = Q(:,i).' * A(:,j);
A(:,j) = A(:,j) - Q(:,i) * R(i,j);
end
end
% T · xi = ei => Q * R * xi = ei => R * xi = QT * ei
QT = Q.';
In = eye(n);
B = zeros(n,n);
for j = 1 : n % cate un sistem pentru fiecare coloana
b = QT * In(:,j); % coloana termenilor liberi
B(n,j) = b(n) / R(n,n); % se afla ultima necunoscuta
for i = (n - 1) : -1 : 1
sum = R(i,:) * B(:,j); % suma celorlalti termeni din ecuatie
B(i,j) = (b(i) - sum) / R(i,i);
end
end
end