Fattorizzazione QR di una matrice rettangolare.
Salve,
ho necessità di effettuare la fattorizzazione QR su una matrice rettangolare in C, con numero di colonne inferiore rispetto al numero di righe. Io ho implementato un algoritmo, ma riesco a farlo funzionare solo con matrici quadrate. Nel caso di matrici rettangolari i valori ottenuti sono poco diversi da quelli ottenibili con la fattorizzazione QR in matlab, ma io ho necessità di precisione..
Che posso fare?
ho necessità di effettuare la fattorizzazione QR su una matrice rettangolare in C, con numero di colonne inferiore rispetto al numero di righe. Io ho implementato un algoritmo, ma riesco a farlo funzionare solo con matrici quadrate. Nel caso di matrici rettangolari i valori ottenuti sono poco diversi da quelli ottenibili con la fattorizzazione QR in matlab, ma io ho necessità di precisione..
Che posso fare?
Risposte
Salve,
ho provato l'algoritmo segnalato in matlab, però purtroppo alcuni segni della matrice triangolare R sono differenti da quelli ottenuti con l'algoritmo qr di matlab.
Come mai?
Grazie.
ho provato l'algoritmo segnalato in matlab, però purtroppo alcuni segni della matrice triangolare R sono differenti da quelli ottenuti con l'algoritmo qr di matlab.
Come mai?
Grazie.
Scusate, l'algoritmo è il seguente:
function [Q,R] = factorization(A)
[m,n] = size(A)
Q = zeros(m,n)
Q(1:m,1) = A(1:m,1)
R = zeros(n)
R(1,1) = 1
for k = 1:n
R(k,k) = norm(A(1:m,k))
Q(1:m,k) = A(1:m,k)/R(k,k)
for j=k+1:n
R(k,j) = Q(1:m,k)'*A(1:m,j)
A(1:m,j) = A(1:m,j) - Q(1:m,k)*R(k,j)
end,
end
function [Q,R] = factorization(A)
[m,n] = size(A)
Q = zeros(m,n)
Q(1:m,1) = A(1:m,1)
R = zeros(n)
R(1,1) = 1
for k = 1:n
R(k,k) = norm(A(1:m,k))
Q(1:m,k) = A(1:m,k)/R(k,k)
for j=k+1:n
R(k,j) = Q(1:m,k)'*A(1:m,j)
A(1:m,j) = A(1:m,j) - Q(1:m,k)*R(k,j)
end,
end