Escolar Documentos
Profissional Documentos
Cultura Documentos
%"A" es una matriz de rango completo, la función devuelve dos matrices: Q (la matriz ortonormal) y R (la
%matriz triangular).
%Problemas con este algoritmo: Sólo da la factorización QR reducida, y sólo funciona para matrices
%de rango completo (es decir: ninguna columna es múltiplo de, y/o resultado de, sumar otras columnas de
%la mariz entre sí).
for i =1:n
R(i,i)= norm(V(:,i));
Q(:,i)= V(:,i)/R(i,i);
for j=i+1:n
R(i,j)= (Q(:,i)')*V(:,j);
V(:,j)=V(:,j) - R(i,j)*Q(:,i);
end
end
for i =1:n
R(i,i)= norm(V(:,i));
Q(:,i)= r;
Q(k, i)=1;
k=k+1;
Q2 = Q; % Q2 tendrá los valores de Q, en Q irá la nueva base
ortonormal
for j=i+1:n
R(i,j)= (Q(:,i)')*V(:,j);
V(:,j)=V(:,j) - R(i,j)*Q(:,i);
end
end
k=0;
for i=n+1:m
for j = 1 : n + k
r(j) = (V(:,j)')*V(:,i);
Q(:,i)=Q(:,i) - r(j)*V(:,j);
Q(:,i)=Q(:,i)/norm(Q(:,i));
end
k=k+1;
end
end
R= A;
Q = eye(m,m);
n1=min(m,n);
for i= 1:n1
x = R(i:m, i);
s=0;
if x(1)==0
s = 1;
else
s= sign(x(1));
end
e = zeros(m - i + 1, 1);
e(1)=1;
u = s * norm(x) * e + x;
u = u / norm(u);
R(i:m, i:n) = R(i:m, i:n) - 2*(u*u')*R(i:m, i:n);
Q(:,i:m) = Q(:,i:m) - Q(:,i:m)*(2*u*u');
end