Autor Tema: Gram-Schmidt

0 Usuarios y 1 Visitante están viendo este tema.

26 Mayo, 2020, 08:01 pm
Leído 523 veces

Ricardo Boza

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 793
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Hola,

Curiosidad: pasando a Matlab el método de ortogonalización de Gram-Schmidt:

Código: [Seleccionar]
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.