Cálculo de valores propios numéricos
El algoritmo de Lanczos es un método iterativo ideado por Cornelius Lanczos que es una adaptación de los métodos de potencia para encontrar los valores propios y vectores propios "más útiles" (que tienden hacia los extremos más altos/más bajos) de una matriz hermítica , donde es a menudo, pero no necesariamente, mucho menor que . [1] Aunque computacionalmente eficiente en principio, el método tal como se formuló inicialmente no era útil, debido a su inestabilidad numérica .
En 1970, Ojalvo y Newman demostraron cómo hacer que el método fuera numéricamente estable y lo aplicaron a la solución de estructuras de ingeniería muy grandes sometidas a carga dinámica. [2] Esto se logró utilizando un método para purificar los vectores de Lanczos (es decir, reortogonalizando repetidamente cada vector recién generado con todos los generados previamente) [2] hasta cualquier grado de precisión, lo que cuando no se realizó, produjo una serie de vectores que estaban altamente contaminados por aquellos asociados con las frecuencias naturales más bajas.
En su trabajo original, estos autores también sugirieron cómo seleccionar un vector de inicio (es decir, usar un generador de números aleatorios para seleccionar cada elemento del vector de inicio) y sugirieron un método determinado empíricamente para determinar , el número reducido de vectores (es decir, debe seleccionarse para que sea aproximadamente 1,5 veces el número de valores propios precisos deseados). Poco después, su trabajo fue seguido por Paige, quien también proporcionó un análisis de errores. [3] [4] En 1988, Ojalvo produjo una historia más detallada de este algoritmo y una prueba de error de valor propio eficiente. [5]
El algoritmo
- Introduzca una matriz hermítica de tamaño y, opcionalmente, un número de iteraciones (por defecto, sea ).
- En sentido estricto, el algoritmo no necesita acceder a la matriz explícita, sino únicamente a una función que calcule el producto de la matriz por un vector arbitrario. Esta función se invoca en la mayoría de los casos.
- Genere una matriz con columnas ortonormales y una matriz simétrica real tridiagonal de tamaño . Si , entonces es unitaria y .
- Advertencia La iteración de Lanczos es propensa a la inestabilidad numérica. Cuando se ejecuta en aritmética no exacta, se deben tomar medidas adicionales (como se describe en secciones posteriores) para garantizar la validez de los resultados.
- Sea un vector arbitrario con norma euclidiana .
- Paso de iteración inicial abreviado:
- Dejar .
- Dejar .
- Dejar .
- Para hacer:
- Sea (también norma euclidiana ).
- Si , entonces sea ,
- de lo contrario, elija un vector arbitrario con norma euclidiana que sea ortogonal a todos los .
- Dejar .
- Dejar .
- Dejar .
- Sea la matriz con columnas . Sea .
- Nota para .
En principio, existen cuatro formas de escribir el procedimiento de iteración. Paige y otros trabajos muestran que el orden de operaciones anterior es el más estable numéricamente. [6] [7]
En la práctica, el vector inicial puede tomarse como otro argumento del procedimiento, y se pueden incluir indicadores de imprecisión numérica como condiciones adicionales de terminación del bucle.
Sin contar la multiplicación de matriz-vector, cada iteración realiza operaciones aritméticas. La multiplicación de matriz-vector se puede realizar en operaciones aritméticas donde es el número promedio de elementos distintos de cero en una fila. La complejidad total es, por lo tanto , o si ; el algoritmo de Lanczos puede ser muy rápido para matrices dispersas. Los esquemas para mejorar la estabilidad numérica generalmente se evalúan en función de este alto rendimiento.
Los vectores se denominan vectores de Lanczos . El vector no se utiliza después de que se calcula y el vector no se utiliza después de que se calcula. Por lo tanto, se puede utilizar el mismo almacenamiento para los tres. Del mismo modo, si solo se busca la matriz tridiagonal, entonces la iteración en bruto no necesita después de haber calculado , aunque algunos esquemas para mejorar la estabilidad numérica lo necesitarían más adelante. A veces, los vectores de Lanczos posteriores se vuelven a calcular cuando es necesario.
Aplicación al problema propio
El algoritmo de Lanczos se utiliza con mayor frecuencia en el contexto de la búsqueda de los valores y vectores propios de una matriz, pero mientras que una diagonalización ordinaria de una matriz haría que los vectores y valores propios fueran evidentes a partir de la inspección, no sucede lo mismo con la tridiagonalización realizada por el algoritmo de Lanczos; se necesitan pasos adicionales no triviales para calcular incluso un único valor o vector propio. No obstante, la aplicación del algoritmo de Lanczos suele suponer un avance significativo en el cálculo de la descomposición propia.
Si es un valor propio de , y su vector propio ( ), entonces es un vector propio correspondiente de con el mismo valor propio:
De esta forma, el algoritmo de Lanczos transforma el problema de descomposición propia para en el problema de descomposición propia para .
- Para matrices tridiagonales, existen varios algoritmos especializados, a menudo con una complejidad computacional mejor que los algoritmos de propósito general. Por ejemplo, si es una matriz simétrica tridiagonal, entonces:
- La recursión continua permite calcular el polinomio característico en las operaciones y evaluarlo en un punto de las operaciones.
- El algoritmo de valores propios de dividir y vencer se puede utilizar para calcular toda la descomposición propia de las operaciones.
- El método multipolar rápido [8] puede calcular todos los valores propios en sólo operaciones.
- Se sabe que algunos algoritmos generales de descomposición de vectores propios, en particular el algoritmo QR , convergen más rápido para matrices tridiagonales que para matrices generales. La complejidad asintótica del algoritmo QR tridiagonal es igual a la del algoritmo divide y vencerás (aunque el factor constante puede ser diferente); dado que los vectores propios juntos tienen elementos, esto es asintóticamente óptimo.
- Incluso los algoritmos cuyas tasas de convergencia no se ven afectadas por las transformaciones unitarias, como el método de potencia y la iteración inversa , pueden disfrutar de beneficios de rendimiento de bajo nivel al ser aplicados a la matriz tridiagonal en lugar de a la matriz original . Dado que es muy esparcido con todos los elementos distintos de cero en posiciones altamente predecibles, permite un almacenamiento compacto con un rendimiento excelente en comparación con el almacenamiento en caché . Del mismo modo, es una matriz real con todos los vectores propios y valores propios reales, mientras que en general puede tener elementos complejos y vectores propios, por lo que la aritmética real es suficiente para encontrar los vectores propios y valores propios de .
- Si es muy grande, entonces reducirlo para que tenga un tamaño manejable aún permitirá encontrar los valores propios y vectores propios más extremos de ; en la región, el algoritmo de Lanczos puede verse como un esquema de compresión con pérdida para matrices hermíticas, que enfatiza la preservación de los valores propios extremos.
La combinación de un buen rendimiento para matrices dispersas y la capacidad de calcular varios valores propios (sin calcular todos) son las principales razones para elegir utilizar el algoritmo de Lanczos.
Aplicación a la tridiagonalización
Aunque el problema propio es a menudo la motivación para aplicar el algoritmo de Lanczos, la operación que el algoritmo realiza principalmente es la tridiagonalización de una matriz, para la cual se han favorecido las transformaciones de Householder numéricamente estables desde la década de 1950. Durante la década de 1960, el algoritmo de Lanczos fue ignorado. El interés en él fue rejuvenecido por la teoría de convergencia de Kaniel-Paige y el desarrollo de métodos para prevenir la inestabilidad numérica, pero el algoritmo de Lanczos sigue siendo el algoritmo alternativo que se prueba solo si Householder no es satisfactorio. [9]
Los aspectos en los que difieren ambos algoritmos incluyen:
- Lanczos aprovecha el hecho de ser una matriz dispersa, mientras que Householder no, y generará un relleno .
- Lanczos trabaja todo el tiempo con la matriz original (y no tiene problemas con que ésta sea conocida sólo implícitamente), mientras que Householder en su versión básica quiere modificar la matriz durante el cálculo (aunque eso se puede evitar).
- Cada iteración del algoritmo de Lanczos produce otra columna de la matriz de transformación final , mientras que una iteración de Householder produce otro factor en una factorización unitaria de . Sin embargo, cada factor está determinado por un único vector, por lo que los requisitos de almacenamiento son los mismos para ambos algoritmos y se pueden calcular a tiempo.
- El jefe de familia es numéricamente estable, mientras que el Lanczos en bruto no lo es.
- Lanczos es altamente paralelo, con solo puntos de sincronización (los cálculos de y ). Householder es menos paralelo, ya que tiene una secuencia de cantidades escalares calculadas que dependen cada una de la cantidad anterior en la secuencia.
Derivación del algoritmo
Hay varias líneas de razonamiento que conducen al algoritmo de Lanczos.
Un método de poder más previsor
El método de potencia para encontrar el valor propio de mayor magnitud y un vector propio correspondiente de una matriz es aproximadamente
- Elija un vector aleatorio .
- Para (hasta que la dirección de haya convergido) hacer:
- Dejar
- Dejar
- En el límite grande, se aproxima al vector propio normado correspondiente al valor propio de mayor magnitud.
Una crítica que se puede hacer a este método es que es un desperdicio: gasta mucho trabajo (los productos matriz-vector en el paso 2.1) extrayendo información de la matriz , pero presta atención solo al último resultado; las implementaciones suelen utilizar la misma variable para todos los vectores , haciendo que cada nueva iteración sobrescriba los resultados de la anterior. Puede ser conveniente, en cambio, conservar todos los resultados intermedios y organizar los datos.
Una pieza de información que está disponible de manera trivial a partir de los vectores es una cadena de subespacios de Krylov . Una forma de afirmar esto sin introducir conjuntos en el algoritmo es afirmar que calcula
- un subconjunto de una base tal que para cada uno y todos
esto se satisface trivialmente con siempre que sea linealmente independiente de (y en el caso de que exista tal dependencia, entonces se puede continuar la secuencia eligiendo como un vector arbitrario linealmente independiente de ). Sin embargo, es probable que una base que contenga los vectores esté numéricamente mal condicionada , ya que esta secuencia de vectores está diseñada para converger a un vector propio de . Para evitarlo, se puede combinar la iteración de potencia con un proceso de Gram-Schmidt , para producir en su lugar una base ortonormal de estos subespacios de Krylov.
- Elija un vector aleatorio de norma euclidiana . Sea .
- Para hacer:
- Dejar .
- Para todo sea . (Estas son las coordenadas de con respecto a los vectores base .)
- Sea . (Cancela el componente de que está en .)
- Si entonces sea y ,
- de lo contrario, elija como un vector arbitrario de norma euclidiana que sea ortogonal a todos los .
La relación entre los vectores de iteración de potencia y los vectores ortogonales es que
- .
Aquí se puede observar que en realidad no necesitamos los vectores para calcular estos , porque y por lo tanto la diferencia entre y está en , que se cancela mediante el proceso de ortogonalización. Por lo tanto, la misma base para la cadena de subespacios de Krylov se calcula mediante
- Elija un vector aleatorio de norma euclidiana .
- Para hacer:
- Dejar .
- Para todos dejar .
- Dejar .
- Dejar .
- Si entonces dejemos ,
- de lo contrario, elija como un vector arbitrario de norma euclidiana que sea ortogonal a todos los .
A priori los coeficientes satisfacen
- para todos ;
La definición puede parecer un poco extraña, pero se ajusta al patrón general ya que
Debido a que los vectores de iteración de potencia que se eliminaron de esta recursión satisfacen los vectores y los coeficientes que contienen suficiente información para que se puedan calcular todos , no se perdió nada al cambiar los vectores. (De hecho, resulta que los datos recopilados aquí brindan aproximaciones significativamente mejores del valor propio más grande que las que se obtienen a partir de un número igual de iteraciones en el método de potencia, aunque eso no es necesariamente obvio en este punto).
Este último procedimiento es la iteración de Arnoldi . El algoritmo de Lanczos surge entonces como la simplificación que se obtiene al eliminar los pasos de cálculo que resultan triviales cuando es hermítico, en particular la mayoría de los coeficientes resultan ser cero.
Elementalmente, si es hermitiano entonces
Porque sabemos que , y dado que por construcción es ortogonal a este subespacio, este producto interno debe ser cero. (Esta es esencialmente también la razón por la que a las sucesiones de polinomios ortogonales siempre se les puede dar una relación de recurrencia de tres términos ). Porque se obtiene
ya que este último es real por ser la norma de un vector. Porque se obtiene
lo que significa que esto también es real.
De manera más abstracta, si es la matriz con columnas , entonces los números pueden identificarse como elementos de la matriz , y para la matriz es Hessenberg superior . Dado que
La matriz es hermítica. Esto implica que también es Hessenberg inferior, por lo que, de hecho, debe ser tridiagional. Al ser hermítica, su diagonal principal es real y, dado que su primera subdiagonal es real por construcción, lo mismo es cierto para su primera superdiagonal. Por lo tanto, es una matriz real y simétrica: la matriz de la especificación del algoritmo de Lanczos.
Aproximación simultánea de valores propios extremos
Una forma de caracterizar los vectores propios de una matriz hermítica es como puntos estacionarios del cociente de Rayleigh.
En particular, el valor propio más grande es el máximo global de y el valor propio más pequeño es el mínimo global de .
Dentro de un subespacio de baja dimensión de puede ser factible localizar el máximo y el mínimo de . Repitiendo eso para una cadena creciente se producen dos secuencias de vectores: y tales que y
Surge entonces la pregunta de cómo elegir los subespacios para que estas secuencias converjan a una tasa óptima.
Desde , la dirección óptima en la que buscar valores mayores de es la del gradiente , y asimismo desde la dirección óptima en la que buscar valores menores de es la del gradiente negativo . En general
por lo tanto, las direcciones de interés son bastante fáciles de calcular en aritmética matricial, pero si uno desea mejorar en ambas y entonces hay dos nuevas direcciones a tener en cuenta: y dado que y pueden ser vectores linealmente independientes (de hecho, son casi ortogonales), en general no se puede esperar que y sean paralelos. No es necesario aumentar la dimensión de por en cada paso si se toman como subespacios de Krylov, porque entonces para todos por lo tanto en particular para ambos y .
En otras palabras, podemos empezar con algún vector inicial arbitrario para construir los espacios vectoriales.
y luego buscar tal que
Dado que el método de potencia th pertenece a iteración , se deduce que una iteración para producir y no puede converger más lentamente que la del método de potencia, y logrará más al aproximar ambos extremos de valores propios. Para el subproblema de optimizar en algún , es conveniente tener una base ortonormal para este espacio vectorial. Por lo tanto, nuevamente nos vemos llevados al problema de calcular iterativamente dicha base para la secuencia de subespacios de Krylov.
Convergencia y otras dinámicas
Al analizar la dinámica del algoritmo, es conveniente tomar los valores propios y vectores propios de como dados, aunque no sean conocidos explícitamente por el usuario. Para fijar la notación, sean los valores propios (se sabe que todos son reales y, por lo tanto, es posible ordenarlos) y sea un conjunto ortonormal de vectores propios tales que para todo .
También es conveniente fijar una notación para los coeficientes del vector de Lanczos inicial con respecto a esta base propia; sea para todo , de modo que . Un vector de partida empobrecido de algún componente propio retrasará la convergencia al valor propio correspondiente, y aunque esto simplemente salga como un factor constante en los límites de error, el empobrecimiento sigue siendo indeseable. Una técnica común para evitar ser golpeado constantemente por él es elegir primero extrayendo los elementos aleatoriamente de acuerdo con la misma distribución normal con media y luego reescalar el vector a la norma . Antes del reescalado, esto hace que los coeficientes también sean variables estocásticas distribuidas normalmente independientes de la misma distribución normal (ya que el cambio de coordenadas es unitario), y después del reescalado el vector tendrá una distribución uniforme en la esfera unitaria en . Esto hace posible limitar la probabilidad de que, por ejemplo , .
El hecho de que el algoritmo de Lanczos sea independiente de las coordenadas (las operaciones solo miran los productos internos de los vectores, nunca los elementos individuales de los vectores) hace que sea fácil construir ejemplos con una estructura propia conocida para ejecutar el algoritmo: crear una matriz diagonal con los valores propios deseados en la diagonal; siempre que el vector inicial tenga suficientes elementos distintos de cero, el algoritmo generará una matriz simétrica tridiagonal general como .
Teoría de convergencia de Kaniel-Paige
Después de los pasos de iteración del algoritmo de Lanczos, es una matriz simétrica real, que de manera similar a la anterior tiene valores propios. Por convergencia se entiende principalmente la convergencia de a (y la convergencia simétrica de a ) a medida que crece, y en segundo lugar la convergencia de un cierto rango de valores propios de a sus contrapartes de . La convergencia para el algoritmo de Lanczos es a menudo órdenes de magnitud más rápida que para el algoritmo de iteración de potencia. [9] : 477
Los límites para provienen de la interpretación anterior de los valores propios como valores extremos del cociente de Rayleigh . Dado que es a priori el máximo de en la totalidad de mientras que es simplemente el máximo en un subespacio de Krylov de dimensión , obtenemos trivialmente . Por el contrario, cualquier punto en ese subespacio de Krylov proporciona un límite inferior para , por lo que si se puede exhibir un punto para que es pequeño, entonces esto proporciona un límite estricto en .
La dimensión del subespacio de Krylov es
De modo que cualquier elemento de éste puede expresarse como para algún polinomio de grado como máximo ; los coeficientes de ese polinomio son simplemente los coeficientes en la combinación lineal de los vectores . El polinomio que queremos resultará tener coeficientes reales, pero por el momento deberíamos permitir también coeficientes complejos, y escribiremos para el polinomio obtenido mediante la conjugación compleja de todos los coeficientes de . En esta parametrización del subespacio de Krylov, tenemos
Usando ahora la expresión para como una combinación lineal de vectores propios, obtenemos
y de manera más general
para cualquier polinomio .
De este modo
Una diferencia clave entre numerador y denominador es que el término se anula en el numerador, pero no en el denominador. Por lo tanto, si se puede elegir que sea grande en pero pequeño en todos los demás valores propios, se obtendrá un límite estricto para el error .
Dado que tiene muchos más valores propios que coeficientes, esto puede parecer una tarea difícil, pero una forma de cumplirla es usar polinomios de Chebyshev . Escribiendo para el grado del polinomio de Chebyshev de primera especie (el que satisface para todos ), tenemos un polinomio que permanece en el rango del intervalo conocido pero crece rápidamente fuera de él. Con algún escalamiento del argumento, podemos hacer que mapee todos los valores propios excepto en . Sea
(en caso de , utilice en su lugar el valor propio más grande estrictamente menor que ), entonces el valor máximo de para es y el valor mínimo es , por lo que
Además
La cantidad
(es decir, la relación entre el primer intervalo propio y el diámetro del resto del espectro ) es, por lo tanto, de importancia clave para la tasa de convergencia aquí. También se escribe
Podemos concluir que
De este modo, la tasa de convergencia está controlada principalmente por , ya que este límite se reduce en un factor por cada iteración adicional.
A modo de comparación, se puede considerar cómo la tasa de convergencia del método de potencia depende de , pero dado que el método de potencia es principalmente sensible al cociente entre los valores absolutos de los valores propios, necesitamos que la brecha propia entre y sea la dominante. Bajo esa restricción, el caso que más favorece al método de potencia es que , así que considere que. Más adelante en el método de potencia, el vector de iteración:
- [nota 1]
donde cada nueva iteración multiplica efectivamente la amplitud por
La estimación del valor propio más grande es entonces
Por lo tanto, el límite anterior para la tasa de convergencia del algoritmo de Lanczos debe compararse con
que se reduce en un factor de para cada iteración. La diferencia, por tanto, se reduce a la que existe entre y . En la región, este último es más parecido a , y funciona como lo haría el método de potencia con un eigengap dos veces más grande; una mejora notable. Sin embargo, el caso más desafiante es el de en el que hay una mejora aún mayor en el eigengap; la región es donde el algoritmo de Lanczos en términos de convergencia hace la mejora más pequeña en el método de potencia.
Estabilidad numérica
La estabilidad se refiere a cuánto se verá afectado el algoritmo (es decir, si producirá un resultado aproximado cercano al original) si se introducen y acumulan pequeños errores numéricos. La estabilidad numérica es el criterio central para juzgar la utilidad de implementar un algoritmo en una computadora con redondeo.
En el caso del algoritmo de Lanczos, se puede demostrar que con aritmética exacta , el conjunto de vectores construye una base ortonormal , y los valores propios/vectores resueltos son buenas aproximaciones a los de la matriz original. Sin embargo, en la práctica (ya que los cálculos se realizan en aritmética de punto flotante donde la inexactitud es inevitable), la ortogonalidad se pierde rápidamente y en algunos casos el nuevo vector podría incluso ser linealmente dependiente del conjunto que ya está construido. Como resultado, algunos de los valores propios de la matriz tridiagonal resultante pueden no ser aproximaciones a la matriz original. Por lo tanto, el algoritmo de Lanczos no es muy estable.
Los usuarios de este algoritmo deben poder encontrar y eliminar esos valores propios "espurios". Las implementaciones prácticas del algoritmo de Lanczos van en tres direcciones para combatir este problema de estabilidad: [6] [7]
- Evitar la pérdida de ortogonalidad,
- Recuperar la ortogonalidad después de generar la base.
- Una vez identificados todos los valores propios buenos y "espurios", elimine los espurios.
Variaciones
Existen variaciones del algoritmo de Lanczos en las que los vectores implicados son matrices altas y estrechas en lugar de vectores y las constantes de normalización son matrices cuadradas pequeñas. Estos algoritmos se denominan algoritmos de Lanczos de "bloque" y pueden ser mucho más rápidos en computadoras con una gran cantidad de registros y tiempos de recuperación de memoria prolongados.
Muchas implementaciones del algoritmo Lanczos se reinician después de una cierta cantidad de iteraciones. Una de las variaciones reiniciadas más influyentes es el método Lanczos reiniciado implícitamente, [10] que se implementa en ARPACK . [11] Esto ha dado lugar a una serie de otras variaciones reiniciadas, como la bidiagonalización Lanczos reiniciada. [12] Otra variación reiniciada exitosa es el método Lanczos Thick-Restart, [13] que se ha implementado en un paquete de software llamado TRLan. [14]
Espacio nulo sobre un cuerpo finito
En 1995, Peter Montgomery publicó un algoritmo, basado en el algoritmo de Lanczos, para encontrar elementos del espacio nulo de una matriz dispersa grande sobre GF(2) ; dado que el conjunto de personas interesadas en matrices dispersas grandes sobre campos finitos y el conjunto de personas interesadas en problemas de valores propios grandes apenas se superponen, a menudo esto también se denomina algoritmo de bloque de Lanczos sin causar una confusión irrazonable. [ cita requerida ]
Aplicaciones
Los algoritmos de Lanczos son muy atractivos porque la multiplicación por es la única operación lineal a gran escala. Dado que los motores de recuperación de texto con términos ponderados implementan solo esta operación, el algoritmo de Lanczos se puede aplicar de manera eficiente a documentos de texto (consulte indexación semántica latente ). Los vectores propios también son importantes para los métodos de clasificación a gran escala, como el algoritmo HITS desarrollado por Jon Kleinberg o el algoritmo PageRank utilizado por Google.
Los algoritmos de Lanczos también se utilizan en física de materia condensada como método para resolver hamiltonianos de sistemas electrónicos fuertemente correlacionados , [15] así como en códigos de modelos de capas en física nuclear . [16]
Implementaciones
La biblioteca NAG contiene varias rutinas [17] para la solución de sistemas lineales de gran escala y problemas propios que utilizan el algoritmo de Lanczos.
MATLAB y GNU Octave vienen con ARPACK incorporado. Tanto las matrices almacenadas como las implícitas se pueden analizar mediante la función eigs() (Matlab/Octave).
De manera similar, en Python , el paquete SciPy tiene scipy.sparse.linalg.eigsh, que también es un contenedor para las funciones SSEUPD y DSEUPD de ARPACK que utilizan el método Lanczos reiniciado implícitamente.
Una implementación de Matlab del algoritmo Lanczos (nótese los problemas de precisión) está disponible como parte del paquete de Matlab de propagación de creencias gaussianas. La biblioteca de filtrado colaborativo GraphLab [18] incorpora una implementación paralela a gran escala del algoritmo Lanczos (en C++) para núcleos múltiples.
La biblioteca PRIMME también implementa un algoritmo similar a Lanczos.
Notas
- ^ No es necesario que ambos coeficientes sean reales, pero la fase tiene poca importancia. Tampoco es necesario que los componentes de otros vectores propios hayan desaparecido por completo, pero se reducen al menos tan rápido como el de , por lo que describe el peor caso.
Referencias
- ^ Lanczos, C. (1950). "Un método de iteración para la solución del problema de valores propios de operadores diferenciales e integrales lineales" (PDF) . Revista de investigación de la Oficina Nacional de Normas . 45 (4): 255–282. doi : 10.6028/jres.045.026 .
- ^ ab Ojalvo, IU; Newman, M. (1970). "Modos de vibración de grandes estructuras mediante un método automático de reducción matricial". AIAA Journal . 8 (7): 1234–1239. Bibcode :1970AIAAJ...8.1234N. doi :10.2514/3.5878.
- ^ Paige, CC (1971). El cálculo de valores propios y vectores propios de matrices dispersas muy grandes (tesis doctoral). Universidad de Londres. OCLC 654214109.
- ^ Paige, CC (1972). "Variantes computacionales del método de Lanczos para el problema propio". J. Inst. Maths Applics . 10 (3): 373–381. doi :10.1093/imamat/10.3.373.
- ^ Ojalvo, IU (1988). "Orígenes y ventajas de los vectores de Lanczos para grandes sistemas dinámicos". Proc. 6th Modal Analysis Conference (IMAC), Kissimmee, FL . págs. 489–494.
- ^ ab Cullum; Willoughby (1985). Algoritmos de Lanczos para cálculos de valores propios simétricos grandes . Vol. 1. ISBN 0-8176-3058-9.
- ^ ab Yousef Saad (22 de junio de 1992). Métodos numéricos para problemas de valores propios grandes. ISBN 0-470-21820-7.
- ^ Coakley, Ed S.; Rokhlin, Vladimir (2013). "Un algoritmo rápido de divide y vencerás para calcular los espectros de matrices tridiagonales simétricas reales". Análisis armónico computacional y aplicado . 34 (3): 379–414. doi :10.1016/j.acha.2012.06.003.
- ^ ab Golub, Gene H.; Van Loan, Charles F. (1996). Cálculos matriciales (3.ª ed.). Baltimore: Johns Hopkins Univ. Press. ISBN 0-8018-5413-X.
- ^ D. Calvetti ; L. Reichel; DC Sorensen (1994). "Un método de Lanczos reiniciado implícitamente para problemas de valores propios simétricos grandes". Transacciones electrónicas sobre análisis numérico . 2 : 1–21.
- ^ RB Lehoucq; DC Sorensen; C. Yang (1998). Guía del usuario de ARPACK: Solución de problemas de valores propios a gran escala con métodos de Arnoldi reiniciados implícitamente . SIAM. doi :10.1137/1.9780898719628. ISBN . 978-0-89871-407-4.
- ^ E. Kokiopoulou; C. Bekas; E. Gallopoulos (2004). "Cálculo de los tripletes singulares más pequeños con bidiagonalización de Lanczos reiniciada implícitamente" (PDF) . Appl. Numer. Math . 49 : 39–61. doi :10.1016/j.apnum.2003.11.011.
- ^ Kesheng Wu; Horst Simon (2000). "Método de Lanczos de reinicio grueso para problemas de valores propios simétricos grandes". Revista SIAM sobre análisis de matrices y aplicaciones . 22 (2). SIAM: 602–616. doi :10.1137/S0895479898334605.
- ^ Kesheng Wu; Horst Simon (2001). «Paquete de software TRLan». Archivado desde el original el 1 de julio de 2007. Consultado el 30 de junio de 2007 .
- ^ Chen, HY; Atkinson, WA; Wortis, R. (julio de 2011). "Anomalía de sesgo cero inducida por desorden en el modelo de Anderson-Hubbard: cálculos numéricos y analíticos". Physical Review B . 84 (4): 045113. arXiv : 1012.1031 . Bibcode :2011PhRvB..84d5113C. doi :10.1103/PhysRevB.84.045113. S2CID 118722138.
- ^ Shimizu, Noritaka (21 de octubre de 2013). "Código de modelo de capas nucleares para computación paralela masiva, "KSHELL"". arXiv : 1310.5431 [nucl-th].
- ^ The Numerical Algorithms Group. «Índice de palabras clave: Lanczos». Manual de la biblioteca NAG, Mark 23. Consultado el 9 de febrero de 2012 .
- ^ GraphLab Archivado el 14 de marzo de 2011 en Wayback Machine.
Lectura adicional
- Golub, Gene H. ; Van Loan, Charles F. (1996). "Métodos Lanczos". Cálculos matriciales . Baltimore: Johns Hopkins University Press. págs. 470–507. ISBN 0-8018-5414-8.
- Ng, Andrew Y .; Zheng, Alice X.; Jordan, Michael I. (2001). "Análisis de enlaces, vectores propios y estabilidad" (PDF) . IJCAI'01 Actas de la 17.ª Conferencia conjunta internacional sobre inteligencia artificial . 2 : 903–910.
- Erik Koch (2019). «Diagonalización Exacta y Método Lanczos» (PDF) . En E. Pavarini; E. Koch; S. Zhang (eds.). "Métodos de muchos cuerpos para materiales reales" . Jülich. ISBN 978-3-95806-400-3.