Algoritmo de Lanczos

Aunque computacionalmente eficiente, en principio, el método formulado inicialmente no era útil, debido a su inestabilidad numérica.

En 1970, Ojalvo y Newman mostraron cómo hacer el método numéricamente estable.

[2]​ Esto se logró utilizando un método para la corrección de los vectores a cualquier grado de precisión que, cuando no se realiza, produce una serie de vectores que están altamente contaminados por los asociados con las frecuencias naturales más bajas.

En su trabajo original, estos autores también sugirieron cómo seleccionar un vector de partida (utilizan un generador de números aleatorios para seleccionar cada elemento del vector de partida) y propusieron un método determinado empíricamente para determinar

Poco después su trabajo fue seguido por más artículos[3]​[4]​ que también proporciaron un análisis del error cometido.

En el año 1988, Ojalvo[5]​ produjo una historia más detallada de este algoritmo y una prueba de error eficiente para un valor propio.

El método iterativo para encontrar el mayor valor propio de una matriz

convergerán al mayor valor propio y

Luego de haber encontrado el primer vector propio / valor, uno puede restringir sucesivamente el algoritmo para el espacio nulo (kernel) de los vectores propios conocidos para obtener el segundo mayor vector propio / valores y así sucesivamente.

Durante el procedimiento de aplicación del método, al obtener el último valor propio

El algoritmo de Lanczos puede ser visto como un sistema simplificado del algoritmo de Arnoldi que se aplica a matrices hermitianas.

Se quiere calcular la matriz tridiagonal y simétrica

, Y los elementos fuera de la diagonal son denotados por

(Nota: siguiendo estos pasos solamente no se encontraran correctamente los valores y vectores propios.

Se deben tener en cuenta más consideraciones para corregir errores numéricos.

Paige[1972] y otros trabajos muestran que el siguiente procedimiento es el más estable numéricamente.

, que es útil para el cálculo de los vectores propios (ver más abajo).

En cada iteración del algoritmo realiza una multiplicación matriz-vector y otras operaciones de punto flotantes.

(Por ejemplo, usando el algoritmo QR o Multiple Relatively Robust Representations (MRRR)).

es la matriz de transformación cuyos vectores columna son

Estabilidad significa cuánto se verá afectado el algoritmo (es decir, se encontrara un resultado aproximado cercano al original) si hay pequeños errores numéricos introducidos y acumulados.

forman una base ortonormal, los valores y vectores propios encontrados son buenas aproximaciones a los de la matriz original.

Sin embargo, en la práctica (como los cálculos se realizan en aritméticas de punto flotante donde la inexactitud es inevitable, la ortogonalidad se pierde rápidamente y en algunos casos el nuevo vector incluso podría ser linealmente dependiente del conjunto que ya está construido.

Por lo que, el algoritmo de Lanczos no es muy estable.

Los que usen el algoritmo deben ser capaz de encontrar y eliminar los valores propios "con errores".

Las implementaciones prácticas del algoritmo de Lanczos van en tres direcciones para luchar contra este problema de estabilidad:[6]​[7]​ Existen variantes en el algoritmo de Lanczos donde los vectores involucrados son vectores columnas, matrices estrechas y las constantes de la normalización son pequeñas matrices cuadradas.

Una de las variaciones del reinicio más influyentes es el método de Lanczos con reinicio implícito,[8]​ que se implementa enARPACK.

Los vectores propios son también importantes para los métodos de clasificación a gran escala tales como el algoritmo HITS desarrollado por Jon Kleinberg, o el PageRank algoritmo usado por Google.

MATLAB y GNU Octave vienen con ARPACK incorporado.

La biblioteca PRIMME también implementa el algoritmo de Lanczos.