Hola,
Curiosidad: pasando a Matlab el método de ortogonalización de Gram-Schmidt:
function [V]=a48(V)
% V: matriz de vectores a ortonormalizar dados por columnas
% Los vectores deben ser linealmente independientes
[~,n]=size(V);
V(:,1)=V(:,1)/norm(V(:,1));
for k=2:n
S=0;
for i=1:k-1
S=S+V(:,k)'*V(:,i)*V(:,i);
end
V(:,k)=V(:,k)-S;
V(:,k)=V(:,k)/norm(V(:,k));
end
end
Le doy un conjunto de 5 vectores linealmente dependientes y me devuelve un conjunto de 5 vectores linealmente independientes. ¿Qué ha pasado?
Que el método hace que aparezca una resta de dos cantidades 'iguales', lo que da lugar a un vector del orden del número máquina. Al normalizar queda un vector que debería ser cero pero que no lo es.
Saludos.