Articulo de referencia

Algoritmo de Lanczos

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 el metro {\displaystyle m} autovalore...

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 elmetro{\displaystyle m}autovalores y autovectores "más útiles" (que tienden a los valores más altos/más bajos extremos) de unnorte×norte{\displaystyle n\times n}Matriz hermitiana , dondemetro{\displaystyle m}suele ser, pero no necesariamente, mucho más pequeño quenorte{\displaystyle n}. [ 1 ] Aunque computacionalmente eficiente en principio, el método tal como se formuló inicialmente no fue ú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 ] a cualquier grado de precisión, lo que, cuando no se realizaba, producía 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 inicial (es decir, usar un generador de números aleatorios para seleccionar cada elemento del vector inicial) y sugirieron un método determinado empíricamente para determinarmetro{\displaystyle m}, el número reducido de vectores (es decir, debe seleccionarse para que sea aproximadamente 1,5 veces el número de autovalores 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 autovalores eficiente. [ 5 ]

El algoritmo

Introduzca una matriz hermitianaA{\displaystyle A}de tamañonorte×norte{\displaystyle n\times n}y, opcionalmente, un número de iteracionesmetro{\displaystyle m}(por defecto, dejemetro=norte{\displaystyle m=n}).
  • Estrictamente hablando, el algoritmo no necesita acceso a la matriz explícita, sino solo a una función.vAv{\displaystyle v\mapsto Av}que calcula el producto de la matriz por un vector arbitrario. Esta función se llama como máximometro{\displaystyle m}veces.
Salida ynorte×metro{\displaystyle n\times m}matrizV{\displaystyle V}con columnas ortonormales y una matriz simétrica real tridiagonalT=VAV{\displaystyle T=V^{*}AV}de tamañometro×metro{\displaystyle m\times m}. Simetro=norte{\displaystyle m=n}, entoncesV{\displaystyle V}es unitario yA=VTV{\displaystyle A=VTV^{*}}.
Advertencia: La iteración de Lanczos es propensa a la inestabilidad numérica. Al ejecutarla con aritmética no exacta, se deben tomar medidas adicionales (como se describe en secciones posteriores) para garantizar la validez de los resultados.
  1. Dejarv1donorte{\displaystyle v_{1}\in \mathbb {C} ^{n}}sea ​​un vector arbitrario con norma euclidiana1{\displaystyle 1}.
  2. Paso de iteración inicial abreviado:
    1. Dejarw1=Av1{\displaystyle w_{1}'=Av_{1}}.
    2. Dejarα1=w1v1{\displaystyle \alpha _{1}=w_{1}'^{*}v_{1}}.
    3. Dejarw1=w1α1v1{\displaystyle w_{1}=w_{1}'-\alpha _{1}v_{1}}.
  3. Paraj=2,,metro{\displaystyle j=2,\dots ,m}hacer:
    1. Dejarβj=wj1{\displaystyle \beta _{j}=\|w_{j-1}\|}(también norma euclidiana ).
    2. Siβj0{\displaystyle \beta _{j}\neq 0}, entonces dejavj=wj1/βj{\displaystyle v_{j}=w_{j-1}/\beta _{j}},
      de lo contrario, elija comovj{\displaystyle v_{j}}un vector arbitrario con norma euclidiana1{\displaystyle 1}que es ortogonal a todov1,,vj1{\displaystyle v_{1},\dots ,v_{j-1}}.
    3. Dejarwj=Avjβjvj1{\displaystyle w_{j}'=Av_{j}-\beta _{j}v_{j-1}}.
    4. Dejarαj=wjvj{\displaystyle \alpha _{j}=w_{j}'^{*}v_{j}}.
    5. Dejarwj=wjαjvj{\displaystyle w_{j}=w_{j}'-\alpha _{j}v_{j}}.
  4. DejarV{\displaystyle V}Sea la matriz con columnasv1,,vmetro{\displaystyle v_{1},\dots ,v_{m}}. DejarT=(α1β20β2α2β3β3α3βmetro1βmetro1αmetro1βmetro0βmetroαmetro){\displaystyle T={\begin{pmatrix}\alpha _{1}&\beta _{2}&&&&0\\\beta _{2}&\alpha _{2}&\beta _{3}&&&\\&\beta _{3}&\alpha _{3}&\ddots &&\\&&\ddots &\ddots &\beta _{m-1}&\\&&&\beta _{m-1}&\alpha _{m-1}&\beta _{m}\\0&&&&\beta _{m}&\alpha _{m}\\\end{pmatrix}}}.
NotaAvj=βj+1vj+1+αjvj+βjvj1{\displaystyle Av_{j}=\beta _{j+1}v_{j+1}+\alpha _{j}v_{j}+\beta _{j}v_{j-1}}para2<j<metro{\displaystyle 2<j<m}.

En principio, existen cuatro maneras de escribir el procedimiento de iteración. Paige y otros trabajos demuestran que el orden de operaciones anterior es el más estable numéricamente. [ 6 ] [ 7 ] En la práctica, el vector inicialv1{\displaystyle v_{1}}puede tomarse como otro argumento del procedimiento, conβj=0{\displaystyle \beta _{j}=0}y la inclusión de indicadores de imprecisión numérica como condiciones adicionales para la terminación del bucle.

Sin contar la multiplicación matriz-vector, cada iteración haceO(norte){\displaystyle O(n)}operaciones aritméticas. La multiplicación matriz-vector se puede realizar enO(dnorte){\displaystyle O(dn)}operaciones aritméticas donded{\displaystyle d}es el número promedio de elementos distintos de cero en una fila. La complejidad total es, por lo tanto,O(dmetronorte){\displaystyle O(dmn)}, oO(dnorte2){\displaystyle O(dn^{2})}simetro=norte{\displaystyle m=n}El algoritmo de Lanczos puede ser muy rápido para matrices dispersas. Los métodos para mejorar la estabilidad numérica suelen evaluarse en función de este alto rendimiento.

Los vectoresvj{\displaystyle v_{j}}se denominan vectores de Lanczos . El vectorwj{\displaystyle w_{j}'}no se utiliza despuéswj{\displaystyle w_{j}}se calcula y el vectorwj{\displaystyle w_{j}}no se utiliza despuésvj+1{\displaystyle v_{j+1}}se calcula. Por lo tanto, se puede usar el mismo almacenamiento para los tres. Del mismo modo, si solo la matriz tridiagonalT{\displaystyle T}Si se busca, entonces no se necesita la iteración bruta.vj1{\displaystyle v_{j-1}}después de haber calculadowj{\displaystyle w_{j}}, aunque algunos esquemas para mejorar la estabilidad numérica lo necesitarían más adelante. A veces, los vectores de Lanczos subsiguientes se vuelven a calcular a partir dev1{\displaystyle v_{1}}cuando sea necesario.

Aplicación al problema propio

El algoritmo de Lanczos se suele mencionar para hallar los autovalores y autovectores de una matriz. Sin embargo, mientras que una diagonalización convencional de una matriz permite identificar los autovalores y autovectores a simple vista, esto no ocurre con la tridiagonalización que realiza el algoritmo de Lanczos; se requieren pasos adicionales complejos para calcular incluso un solo autovalor o autovector. No obstante, la aplicación del algoritmo de Lanczos suele representar un avance significativo en el cálculo de la descomposición en autovalores.

Siλ{\displaystyle \lambda }es un valor propio deT{\displaystyle T}, yincógnita{\displaystyle x}su vector propio (Tincógnita=λincógnita{\displaystyle Tx=\lambda x}), entoncesy=Vincógnita{\displaystyle y=Vx}es un vector propio correspondiente deA{\displaystyle A}con el mismo valor propio:

Ay=AVincógnita=VTVVincógnita=VTIincógnita=VTincógnita=V(λincógnita)=λVincógnita=λy.{\displaystyle {\begin{aligned}Ay&=AVx\\&=VTV^{*}Vx\\&=VTIx\\&=VTx\\&=V(\lambda x)\\&=\lambda Vx\\&=\lambda y.\end{aligned}}}

De este modo, el algoritmo de Lanczos transforma el problema de descomposición en valores propios paraA{\displaystyle A}en el problema de descomposición de valores propios paraT{\displaystyle T}.

  1. Para matrices tridiagonales, existen varios algoritmos especializados, a menudo con una complejidad computacional mejor que la de los algoritmos de propósito general. Por ejemplo, siT{\displaystyle T}es unmetro×metro{\displaystyle m\times m}Matriz simétrica tridiagonal entonces:
  2. Se sabe que algunos algoritmos generales de descomposición en valores 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 esO(metro2){\displaystyle O(m^{2})}igual que para el algoritmo de divide y vencerás (aunque el factor constante puede ser diferente); puesto que los autovectores juntos tienenmetro2{\displaystyle m^{2}}elementos, esto es asintóticamente óptimo .
  3. 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 obtener beneficios de rendimiento de bajo nivel al aplicarse a la matriz tridiagonal.T{\displaystyle T}en lugar de la matriz originalA{\displaystyle A}. DesdeT{\displaystyle T}es muy disperso 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é . Asimismo,T{\displaystyle T}es una matriz real con todos los vectores propios y valores propios reales, mientras queA{\displaystyle A}En general, puede tener elementos y vectores propios complejos, por lo que la aritmética real es suficiente para encontrar los vectores propios y los valores propios deT{\displaystyle T}.
  4. Sinorte{\displaystyle n}es muy grande, luego reducirmetro{\displaystyle m}de modo queT{\displaystyle T}es de un tamaño manejable aún permitirá encontrar los valores propios y vectores propios más extremos deA{\displaystyle A}; en elmetronorte{\displaystyle m\ll n}En esta región, el algoritmo de Lanczos puede considerarse un esquema de compresión con pérdidas para matrices hermíticas, que hace hincapié en 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 calcularlos todos) son las principales razones para optar por utilizar el algoritmo de Lanczos.

Aplicación a la tridiagonalización

Aunque el problema de valores propios suele ser la motivación para aplicar el algoritmo de Lanczos, la operación que realiza principalmente es la tridiagonalización de una matriz, para la cual se han preferido las transformaciones de Householder numéricamente estables desde la década de 1950. Durante la década de 1960, el algoritmo de Lanczos cayó en desuso. El interés en él se reavivó con 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 la alternativa que se prueba solo si Householder no resulta satisfactorio. [ 9 ]

Entre los aspectos en los que difieren los dos algoritmos se incluyen:

  • Lanczos aprovechaA{\displaystyle A}siendo una matriz dispersa, mientras que Householder no lo es, y generará relleno .
  • Lanczos trabaja en todo momento con la matriz original.A{\displaystyle A}(y no tiene problema con que se conozca solo implícitamente), mientras que Householder, en su forma 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.V{\displaystyle V}, mientras que una iteración de Householder produce otro factor en una factorización unitariaQ1Q2Qnorte{\displaystyle Q_{1}Q_{2}\dots Q_{n}}deV{\displaystyle V}Sin embargo, cada factor está determinado por un único vector, por lo que los requisitos de almacenamiento son los mismos para ambos algoritmos, yV=Q1Q2Qnorte{\displaystyle V=Q_{1}Q_{2}\dots Q_{n}}se puede calcular enO(norte3){\displaystyle O(n^{3})}tiempo.
  • Householder es numéricamente estable, mientras que Lanczos en bruto no lo es.
  • Lanczos es altamente paralelo, con soloO(norte){\displaystyle O(n)}puntos de sincronización (los cálculos deαj{\displaystyle \alpha _{j}}yβj{\displaystyle \beta _{j}}). Householder es menos paralelo, teniendo una secuencia deO(norte2){\displaystyle O(n^{2})}Cantidades escalares calculadas que dependen cada una de la cantidad anterior en la secuencia.

Derivación del algoritmo

Existen varias líneas de razonamiento que conducen al algoritmo de Lanczos.

Un método de energía más previsor

El método de potencia para encontrar el valor propio de mayor magnitud y un vector propio correspondiente de una matriz.A{\displaystyle A}es aproximadamente

  1. Elige un vector aleatorio10{\displaystyle u_{1}\neq 0}.
  2. Paraj1{\displaystyle j\geqslant 1}(hasta la dirección dej{\displaystyle u_{j}}ha convergido) hacer:
    1. Dejarj+1=Aj.{\displaystyle u_{j+1}'=Au_{j}.}
    2. Dejarj+1=j+1/j+1.{\displaystyle u_{j+1}=u_{j+1}'/\|u_{j+1}'\|.}
  • En el grandej{\displaystyle j}límite,j{\displaystyle u_{j}}se aproxima al vector propio normalizado 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.A{\displaystyle A}pero solo presta atención al último resultado; las implementaciones suelen usar la misma variable para todos los vectores.j{\displaystyle u_{j}}En este caso, cada nueva iteración sobrescribe los resultados de la anterior. Quizás sea preferible conservar todos los resultados intermedios y organizar los datos.

Una información que está disponible trivialmente a partir de los vectoresj{\displaystyle u_{j}}es una cadena de subespacios de Krylov . Una forma de afirmarlo sin introducir conjuntos en el algoritmo es decir que calcula

un subconjunto{vj}j=1metro{\displaystyle \{v_{j}\}_{j=1}^{m}}de una base dedonorte{\displaystyle \mathbb {C} ^{n}}de tal manera queAincógnitadurar(v1,,vj+1){\displaystyle Ax\in \operatorname {span} (v_{1},\dotsc ,v_{j+1})}por cadaincógnitadurar(v1,,vj){\displaystyle x\in \operatorname {span} (v_{1},\dotsc ,v_{j})}y todo1j<metro;{\displaystyle 1\leqslant j<m;}

Esto se satisface trivialmente mediantevj=j{\displaystyle v_{j}=u_{j}}mientrasj{\displaystyle u_{j}}es linealmente independiente de1,,j1{\displaystyle u_{1},\dotsc ,u_{j-1}}(y en caso de que exista tal dependencia, entonces se puede continuar la secuencia eligiendo comovj{\displaystyle v_{j}}un vector arbitrario linealmente independiente de1,,j1{\displaystyle u_{1},\dotsc ,u_{j-1}}). Una base que contiene elj{\displaystyle u_{j}}Sin embargo, es probable que los vectores estén numéricamente mal condicionados , ya que esta secuencia de vectores está diseñada para converger a un vector propio deA{\displaystyle A}Para evitar eso, se puede combinar la iteración de potencias con un proceso de Gram-Schmidt , para producir en su lugar una base ortonormal de estos subespacios de Krylov.

  1. Elige un vector aleatorio1{\displaystyle u_{1}}de norma euclidiana1{\displaystyle 1}. Dejarv1=1{\displaystyle v_{1}=u_{1}}.
  2. Paraj=1,,metro1{\displaystyle j=1,\dotsc ,m-1}hacer:
    1. Dejarj+1=Aj{\displaystyle u_{j+1}'=Au_{j}}.
    2. A pesar dek=1,,j{\displaystyle k=1,\dotsc ,j}dejargramok,j=vkj+1{\displaystyle g_{k,j}=v_{k}^{*}u_{j+1}'}. (Estas son las coordenadas deAj=j+1{\displaystyle Au_{j}=u_{j+1}'}con respecto a los vectores basev1,,vj{\displaystyle v_{1},\dotsc ,v_{j}}.)
    3. Dejarwj+1=j+1k=1jgramok,jvk{\displaystyle w_{j+1}=u_{j+1}'-\sum _{k=1}^{j}g_{k,j}v_{k}}. (Cancelar el componente dej+1{\displaystyle u_{j+1}'}eso está endurar(v1,,vj){\displaystyle \operatorname {span} (v_{1},\dotsc ,v_{j})}.)
    4. Siwj+10{\displaystyle w_{j+1}\neq 0}entonces dejaj+1=j+1/j+1{\displaystyle u_{j+1}=u_{j+1}'/\|u_{j+1}'\|}yvj+1=wj+1/wj+1{\displaystyle v_{j+1}=w_{j+1}/\|w_{j+1}\|},
      de lo contrario, elija comoj+1=vj+1{\displaystyle u_{j+1}=v_{j+1}}un vector arbitrario de norma euclidiana1{\displaystyle 1}que es ortogonal a todov1,,vj{\displaystyle v_{1},\dotsc ,v_{j}}.

La relación entre los vectores de iteración de potenciaj{\displaystyle u_{j}}y los vectores ortogonalesvj{\displaystyle v_{j}}es que

Aj=j+1j+1=j+1=wj+1+k=1jgramok,jvk=wj+1vj+1+k=1jgramok,jvk{\displaystyle Au_{j}=\|u_{j+1}'\|u_{j+1}=u_{j+1}'=w_{j+1}+\sum _{k=1}^{j}g_{k,j}v_{k}=\|w_{j+1}\|v_{j+1}+\sum _{k=1}^{j}g_{k,j}v_{k}}.

Aquí se puede observar que en realidad no necesitamos elj{\displaystyle u_{j}}vectores para calcular estosvj{\displaystyle v_{j}}, porquejvjdurar(v1,,vj1){\displaystyle u_{j}-v_{j}\in \operatorname {span} (v_{1},\dotsc ,v_{j-1})}y por lo tanto la diferencia entrej+1=Aj{\displaystyle u_{j+1}'=Au_{j}}ywj+1=Avj{\displaystyle w_{j+1}'=Av_{j}}está endurar(v1,,vj){\displaystyle \operatorname {span} (v_{1},\dotsc ,v_{j})}, 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

  1. Elige un vector aleatoriov1{\displaystyle v_{1}}de norma euclidiana1{\displaystyle 1}.
  2. Paraj=1,,metro1{\displaystyle j=1,\dotsc ,m-1}hacer:
    1. Dejarwj+1=Avj{\displaystyle w_{j+1}'=Av_{j}}.
    2. A pesar dek=1,,j{\displaystyle k=1,\dotsc ,j}dejarhk,j=vkwj+1{\displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'}.
    3. Dejarwj+1=wj+1k=1jhk,jvk{\displaystyle w_{j+1}=w_{j+1}'-\sum _{k=1}^{j}h_{k,j}v_{k}}.
    4. Dejarhj+1,j=wj+1{\displaystyle h_{j+1,j}=\|w_{j+1}\|}.
    5. Sihj+1,j0{\displaystyle h_{j+1,j}\neq 0}entonces dejavj+1=wj+1/hj+1,j{\displaystyle v_{j+1}=w_{j+1}/h_{j+1,j}},
      de lo contrario, elija comovj+1{\displaystyle v_{j+1}}un vector arbitrario de norma euclidiana1{\displaystyle 1}que es ortogonal a todov1,,vj{\displaystyle v_{1},\dotsc ,v_{j}}.

A priori los coeficienteshk,j{\displaystyle h_{k,j}}satisfacer

Avj=k=1j+1hk,jvk{\displaystyle Av_{j}=\sum _{k=1}^{j+1}h_{k,j}v_{k}}a pesar dej<metro{\displaystyle j<m};

la definiciónhj+1,j=wj+1{\displaystyle h_{j+1,j}=\|w_{j+1}\|}Puede parecer un poco extraño, pero encaja con el patrón general.hk,j=vkwj+1{\displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'}desde

vj+1wj+1=vj+1wj+1=wj+1vj+1vj+1=wj+1.{\displaystyle v_{j+1}^{*}w_{j+1}'=v_{j+1}^{*}w_{j+1}=\|w_{j+1}\|v_{j+1}^{*}v_{j+1}=\|w_{j+1}\|.}

Debido a los vectores de iteración de potenciaj{\displaystyle u_{j}}que fueron eliminados de esta recursión satisfacenjdurar(v1,,vj),{\displaystyle u_{j}\in \operatorname {span} (v_{1},\ldots ,v_{j}),}los vectores{vj}j=1metro{\displaystyle \{v_{j}\}_{j=1}^{m}}y coeficienteshk,j{\displaystyle h_{k,j}}contienen suficiente información deA{\displaystyle A}que todo1,,metro{\displaystyle u_{1},\ldots ,u_{m}}Se puede calcular, por lo que no se perdió nada al cambiar los vectores. (De hecho, resulta que los datos recopilados aquí proporcionan aproximaciones significativamente mejores del mayor valor propio que las que se obtienen con un número igual de iteraciones en el método de potencia, aunque esto no sea 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 pasos de cálculo que resultan ser triviales cuandoA{\displaystyle A}es hermitiano, en particular la mayor parte dehk,j{\displaystyle h_{k,j}}Los coeficientes resultan ser cero.

Elementalmente, siA{\displaystyle A}entonces es hermitiano

hk,j=vkwj+1=vkAvj=vkAvj=(Avk)vj.{\displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'=v_{k}^{*}Av_{j}=v_{k}^{*}A^{*}v_{j}=(Av_{k})^{*}v_{j}.}

Parak<j1{\displaystyle k<j-1}sabemos queAvkdurar(v1,,vj1){\displaystyle Av_{k}\in \operatorname {span} (v_{1},\ldots ,v_{j-1})}y desde entoncesvj{\displaystyle v_{j}}Por construcción, es ortogonal a este subespacio, por lo que este producto interno debe ser cero. (Esta es esencialmente también la razón por la que a las secuencias de polinomios ortogonales siempre se les puede dar una relación de recurrencia de tres términos ). Parak=j1{\displaystyle k=j-1}uno consigue

hj1,j=(Avj1)vj=vjAvj1¯=hj,j1¯=hj,j1{\displaystyle h_{j-1,j}=(Av_{j-1})^{*}v_{j}={\overline {v_{j}^{*}Av_{j-1}}}={\overline {h_{j,j-1}}}=h_{j,j-1}}

ya que este último es real por ser la norma de un vector. Parak=j{\displaystyle k=j}uno consigue

hj,j=(Avj)vj=vjAvj¯=hj,j¯,{\displaystyle h_{j,j}=(Av_{j})^{*}v_{j}={\overline {v_{j}^{*}Av_{j}}}={\overline {h_{j,j}}},}

lo que significa que esto también es real.

De forma más abstracta, siV{\displaystyle V}es la matriz con columnasv1,,vmetro{\displaystyle v_{1},\ldots ,v_{m}}luego los númeroshk,j{\displaystyle h_{k,j}}pueden identificarse como elementos de la matrizH=VAV{\displaystyle H=V^{*}AV}, yhk,j=0{\displaystyle h_{k,j}=0}parak>j+1;{\displaystyle k>j+1;}la matrizH{\displaystyle H}es el Hessenberg superior . Desde

H=(VAV)=VAV=VAV=H{\displaystyle H^{*}=\left(V^{*}AV\right)^{*}=V^{*}A^{*}V=V^{*}AV=H}

la matrizH{\displaystyle H}es hermitiano. Esto implica queH{\displaystyle H}También es Hessenberg inferior, por lo que de hecho debe ser tridiagnática. Al ser hermitiana, su diagonal principal es real, y dado que su primera subdiagonal es real por construcción, lo mismo ocurre con su primera superdiagonal. Por lo tanto,H{\displaystyle H}es una matriz real y simétrica: la matrizT{\displaystyle T}de la especificación del algoritmo de Lanczos.

Aproximación simultánea de valores propios extremos

Una forma de caracterizar los autovectores de una matriz hermitianaA{\displaystyle A}es como puntos estacionarios del cociente de Rayleigh

r(incógnita)=incógnitaAincógnitaincógnitaincógnita,incógnitadonorte.{\displaystyle r(x)={\frac {x^{*}Ax}{x^{*}x}},\qquad x\in \mathbb {C} ^{n}.}

En particular, el mayor valor propioλmáximo{\displaystyle \lambda _{\max }}es el máximo global der{\displaystyle r}y el valor propio más pequeñoλmin{\displaystyle \lambda _{\min }}es el mínimo global der{\displaystyle r}.

Dentro de un subespacio de baja dimensiónL{\displaystyle {\mathcal {L}}}dedonorte{\displaystyle \mathbb {C} ^{n}}Puede ser factible localizar el máximoincógnita{\displaystyle x}y mínimoy{\displaystyle y}der{\displaystyle r}Repitiendo esto para una cadena creciente.L1L2{\displaystyle {\mathcal {L}}_{1}\subset {\mathcal {L}}_{2}\subset \cdots }produce dos secuencias de vectores:incógnita1,incógnita2,{\displaystyle x_{1},x_{2},\ldots }yy1,y2,{\displaystyle y_{1},y_{2},\dotsc }de tal manera queincógnitaj,yjLj{\displaystyle x_{j},y_{j}\in {\mathcal {L}}_{j}}y

r(incógnita1)r(incógnita2)λmáximor(y1)r(y2)λmin{\displaystyle {\begin{aligned}r(x_{1})&\leqslant r(x_{2})\leqslant \cdots \leqslant \lambda _{\max }\\r(y_{1})&\geqslant r(y_{2})\geqslant \cdots \geqslant \lambda _{\min }\end{aligned}}}

Surge entonces la pregunta de cómo elegir los subespacios de manera que estas secuencias converjan a una velocidad óptima.

Deincógnitaj{\displaystyle x_{j}}, la dirección óptima en la que buscar valores mayores der{\displaystyle r}es la del gradienter(incógnitaj){\displaystyle \nabla r(x_{j})}y asimismo deyj{\displaystyle y_{j}}la dirección óptima en la que buscar valores más pequeños der{\displaystyle r}es la del gradiente negativor(yj){\displaystyle -\nabla r(y_{j})}. En general

r(incógnita)=2incógnitaincógnita(Aincógnitar(incógnita)incógnita),{\displaystyle \nabla r(x)={\frac {2}{x^{*}x}}(Ax-r(x)x),}

por lo que las direcciones de interés son bastante fáciles de calcular en aritmética matricial, pero si uno desea mejorar ambasincógnitaj{\displaystyle x_{j}}yyj{\displaystyle y_{j}}Entonces hay dos nuevas direcciones a tener en cuenta:Aincógnitaj{\displaystyle Ax_{j}}yAyj;{\displaystyle Ay_{j};}desdeincógnitaj{\displaystyle x_{j}}yyj{\displaystyle y_{j}}pueden ser vectores linealmente independientes (de hecho, son casi ortogonales), en general no se puede esperarAincógnitaj{\displaystyle Ax_{j}}yAyj{\displaystyle Ay_{j}}ser paralelo. No es necesario aumentar la dimensión deLj{\displaystyle {\mathcal {L}}_{j}}por2{\displaystyle 2}en cada paso si{Lj}j=1metro{\displaystyle \{{\mathcal {L}}_{j}\}_{j=1}^{m}}se consideran subespacios de Krylov, porque entoncesAzLj+1{\displaystyle Az\in {\mathcal {L}}_{j+1}}a pesar dezLj,{\displaystyle z\in {\mathcal {L}}_{j},}así en particular para ambosz=incógnitaj{\displaystyle z=x_{j}}yz=yj{\displaystyle z=y_{j}}.

En otras palabras, podemos comenzar con un vector inicial arbitrario.incógnita1=y1,{\displaystyle x_{1}=y_{1},}construir los espacios vectoriales

Lj=durar(incógnita1,Aincógnita1,,Aj1incógnita1){\displaystyle {\mathcal {L}}_{j}=\operatorname {span} (x_{1},Ax_{1},\ldots ,A^{j-1}x_{1})}

y luego buscarincógnitaj,yjLj{\displaystyle x_{j},y_{j}\in {\mathcal {L}}_{j}}de tal manera que

r(incógnitaj)=máximozLjr(z)yr(yj)=minzLjr(z).{\displaystyle r(x_{j})=\max _{z\in {\mathcal {L}}_{j}}r(z)\qquad {\text{and}}\qquad r(y_{j})=\min _{z\in {\mathcal {L}}_{j}}r(z).}

Desde elj{\displaystyle j}método de potencia iterarj{\displaystyle u_{j}}pertenece aLj,{\displaystyle {\mathcal {L}}_{j},}De ello se deduce que una iteración para producir elincógnitaj{\displaystyle x_{j}}yyj{\displaystyle y_{j}}no puede converger más lentamente que el método de potencia y logrará más aproximando ambos extremos de los valores propios. Para el subproblema de optimizaciónr{\displaystyle r}en algunosLj{\displaystyle {\mathcal {L}}_{j}}Es conveniente tener una base ortonormal.{v1,,vj}{\displaystyle \{v_{1},\ldots ,v_{j}\}}para este espacio vectorial . Así, volvemos 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 los vectores propios deA{\displaystyle A}como dado, aunque no sean explícitamente conocidos por el usuario. Para corregir la notación, dejemosλ1λ2λnorte{\displaystyle \lambda _{1}\geqslant \lambda _{2}\geqslant \dotsb \geqslant \lambda _{n}}sean los autovalores (se sabe que todos son reales y, por lo tanto, se pueden ordenar) y seaz1,,znorte{\displaystyle z_{1},\dotsc ,z_{n}}sea ​​un conjunto ortonormal de autovectores tal queAzk=λkzk{\displaystyle Az_{k}=\lambda _{k}z_{k}}a pesar dek=1,,norte{\displaystyle k=1,\dotsc ,n}.

También es conveniente fijar una notación para los coeficientes del vector de Lanczos inicial.v1{\displaystyle v_{1}}con respecto a esta base propia; seadk=zkv1{\displaystyle d_{k}=z_{k}^{*}v_{1}}a pesar dek=1,,norte{\displaystyle k=1,\dotsc ,n}, de modo quev1=k=1nortedkzk{\displaystyle \textstyle v_{1}=\sum _{k=1}^{n}d_{k}z_{k}}. Un vector inicialv1{\displaystyle v_{1}}El agotamiento de algún componente propio retrasará la convergencia al valor propio correspondiente, y aunque esto solo se manifiesta como un factor constante en los límites de error, el agotamiento sigue siendo indeseable. Una técnica común para evitar verse afectado constantemente por esto es elegirv1{\displaystyle v_{1}}primero extrayendo los elementos aleatoriamente según la misma distribución normal con media0{\displaystyle 0}y luego reescalar el vector a la norma1{\displaystyle 1}. Antes del reescalado, esto provoca que los coeficientesdk{\displaystyle d_{k}}para ser también variables estocásticas independientes con distribución normal de la misma distribución normal (ya que el cambio de coordenadas es unitario), y después de reescalar el vector(d1,,dnorte){\displaystyle (d_{1},\dotsc ,d_{n})}tendrá una distribución uniforme en la esfera unitaria endonorte{\displaystyle \mathbb {C} ^{n}}Esto permite acotar la probabilidad de que, por ejemplo,|d1|<ε{\displaystyle |d_{1}|<\varepsilon }.

El hecho de que el algoritmo de Lanczos sea independiente de las coordenadas (las operaciones solo consideran los productos internos de vectores, nunca los elementos individuales de los vectores) facilita la construcción de ejemplos con autoestructura conocida para ejecutar el algoritmo:A{\displaystyle A}una matriz diagonal con los valores propios deseados en la diagonal; siempre que el vector inicialv1{\displaystyle v_{1}}tiene suficientes elementos distintos de cero, el algoritmo generará una matriz simétrica tridiagonal general comoT{\displaystyle T}.

teoría de convergencia de Kaniel-Paige

Despuésmetro{\displaystyle m}pasos de iteración del algoritmo de Lanczos,T{\displaystyle T}es unmetro×metro{\displaystyle m\times m}matriz simétrica real, que de manera similar a la anterior tienemetro{\displaystyle m}valores propiosθ1θ2θmetro.{\displaystyle \theta _{1}\geqslant \theta _{2}\geqslant \dots \geqslant \theta _{m}.}La convergencia se entiende principalmente como convergencia deθ1{\displaystyle \theta _{1}}aλ1{\displaystyle \lambda _{1}}(y la convergencia simétrica deθmetro{\displaystyle \theta _{m}}aλnorte{\displaystyle \lambda _{n}}) comometro{\displaystyle m}crece y, secundariamente, la convergencia de algún rangoθ1,,θk{\displaystyle \theta _{1},\ldots ,\theta _{k}}de valores propios deT{\displaystyle T}a sus homólogosλ1,,λk{\displaystyle \lambda _{1},\ldots ,\lambda _{k}}deA{\displaystyle A}La convergencia del algoritmo de Lanczos suele ser órdenes de magnitud más rápida que la del algoritmo de iteración de potencias. [ 9 ] : 477

Los límites paraθ1{\displaystyle \theta _{1}}provienen de la interpretación anterior de los autovalores como valores extremos del cociente de Rayleigh.r(incógnita){\displaystyle r(x)}. Desdeλ1{\displaystyle \lambda _{1}}es a priori el máximo der{\displaystyle r}en generaldonorte,{\displaystyle \mathbb {C} ^{n},}mientrasθ1{\displaystyle \theta _{1}}es simplemente el máximo en unmetro{\displaystyle m}Subespacio de Krylov de dimensión -, trivialmente obtenemosλ1θ1{\displaystyle \lambda _{1}\geqslant \theta _{1}}. Por el contrario, cualquier puntoincógnita{\displaystyle x}en ese subespacio de Krylov se proporciona un límite inferiorr(incógnita){\displaystyle r(x)}paraθ1{\displaystyle \theta _{1}}, entonces si se puede exhibir un punto para el cualλ1r(incógnita){\displaystyle \lambda _{1}-r(x)}es pequeño entonces esto proporciona un límite ajustado enθ1{\displaystyle \theta _{1}}.

La dimensiónmetro{\displaystyle m}El subespacio de Krylov es

durar{v1,Av1,A2v1,,Ametro1v1},{\displaystyle \operatorname {span} \left\{v_{1},Av_{1},A^{2}v_{1},\ldots ,A^{m-1}v_{1}\right\},}

por lo que cualquier elemento del mismo puede expresarse comopag(A)v1{\displaystyle p(A)v_{1}}para algún polinomiopag{\displaystyle p}de grado como máximometro1{\displaystyle m-1}; los coeficientes de ese polinomio son simplemente los coeficientes de la combinación lineal de los vectoresv1,Av1,A2v1,,Ametro1v1{\displaystyle v_{1},Av_{1},A^{2}v_{1},\ldots ,A^{m-1}v_{1}}El polinomio que buscamos tendrá coeficientes reales, pero por el momento debemos considerar también coeficientes complejos, y escribiremos: .pag{\displaystyle p^{*}}para el polinomio obtenido al conjugar de forma compleja todos los coeficientes depag{\displaystyle p}. En esta parametrización del subespacio de Krylov, tenemos

r(pag(A)v1)=(pag(A)v1)Apag(A)v1(pag(A)v1)pag(A)v1=v1pag(A)Apag(A)v1v1pag(A)pag(A)v1=v1pag(A)Apag(A)v1v1pag(A)pag(A)v1=v1pag(A)Apag(A)v1v1pag(A)pag(A)v1{\displaystyle r(p(A)v_{1})={\frac {(p(A)v_{1})^{*}Ap(A)v_{1}}{(p(A)v_{1})^{*}p(A)v_{1}}}={\frac {v_{1}^{*}p(A)^{*}Ap(A)v_{1}}{v_{1}^{*}p(A)^{*}p(A)v_{1}}}={\frac {v_{1}^{*}p^{*}(A^{*})Ap(A)v_{1}}{v_{1}^{*}p^{*}(A^{*})p(A)v_{1}}}={\frac {v_{1}^{*}p^{*}(A)Ap(A)v_{1}}{v_{1}^{*}p^{*}(A)p(A)v_{1}}}}

Usando ahora la expresión parav1{\displaystyle v_{1}}como una combinación lineal de autovectores, obtenemos

Av1=Ak=1nortedkzk=k=1nortedkλkzk{\displaystyle Av_{1}=A\sum _{k=1}^{n}d_{k}z_{k}=\sum _{k=1}^{n}d_{k}\lambda _{k}z_{k}}

y de forma más general

q(A)v1=k=1nortedkq(λk)zk{\displaystyle q(A)v_{1}=\sum _{k=1}^{n}d_{k}q(\lambda _{k})z_{k}}

para cualquier polinomioq{\displaystyle q}.

De este modo

λ1r(pag(A)v1)=λ1v1k=1nortedkpag(λk)λkpag(λk)zkv1k=1nortedkpag(λk)pag(λk)zk=λ1k=1norte|dk|2λkpag(λk)pag(λk)k=1norte|dk|2pag(λk)pag(λk)=k=1norte|dk|2(λ1λk)|pag(λk)|2k=1norte|dk|2|pag(λk)|2.{\displaystyle \lambda _{1}-r(p(A)v_{1})=\lambda _{1}-{\frac {v_{1}^{*}\sum _{k=1}^{n}d_{k}p^{*}(\lambda _{k})\lambda _{k}p(\lambda _{k})z_{k}}{v_{1}^{*}\sum _{k=1}^{n}d_{k}p^{*}(\lambda _{k})p(\lambda _{k})z_{k}}}=\lambda _{1}-{\frac {\sum _{k=1}^{n}|d_{k}|^{2}\lambda _{k}p(\lambda _{k})^{*}p(\lambda _{k})}{\sum _{k=1}^{n}|d_{k}|^{2}p(\lambda _{k})^{*}p(\lambda _{k})}}={\frac {\sum _{k=1}^{n}|d_{k}|^{2}(\lambda _{1}-\lambda _{k})\left|p(\lambda _{k})\right|^{2}}{\sum _{k=1}^{n}|d_{k}|^{2}\left|p(\lambda _{k})\right|^{2}}}.}

Una diferencia clave entre numerador y denominador aquí es quek=1{\displaystyle k=1}El término desaparece en el numerador, pero no en el denominador. Por lo tanto, si se puede elegirpag{\displaystyle p}ser grande enλ1{\displaystyle \lambda _{1}}pero pequeño en todos los demás autovalores, se obtendrá una cota ajustada para el error.λ1θ1{\displaystyle \lambda _{1}-\theta _{1}}.

DesdeA{\displaystyle A}tiene muchos más valores propios quepag{\displaystyle p}tiene coeficientes, esto puede parecer una tarea difícil, pero una forma de lograrlo es usar polinomios de Chebyshev . Escribiendodok{\displaystyle c_{k}}para el títulok{\displaystyle k}Polinomio de Chebyshev de primera especie (aquel que satisfacedok(porqueincógnita)=porque(kincógnita){\displaystyle c_{k}(\cos x)=\cos(kx)}a pesar deincógnita{\displaystyle x}), tenemos un polinomio que permanece en el rango[1,1]{\displaystyle [-1,1]}en el intervalo conocido[1,1]{\displaystyle [-1,1]}pero crece rápidamente fuera de él. Con algún escalado del argumento, podemos hacer que mapee todos los autovalores exceptoλ1{\displaystyle \lambda _{1}}en[1,1]{\displaystyle [-1,1]}. Dejar

pag(incógnita)=dometro1(2incógnitaλ2λnorteλ2λnorte){\displaystyle p(x)=c_{m-1}\left({\frac {2x-\lambda _{2}-\lambda _{n}}{\lambda _{2}-\lambda _{n}}}\right)}

(En casoλ2=λ1{\displaystyle \lambda _{2}=\lambda _{1}}, en su lugar, utilice el mayor valor propio estrictamente menor queλ1{\displaystyle \lambda _{1}}), entonces el valor máximo de|pag(λk)|2{\displaystyle |p(\lambda _{k})|^{2}}parak2{\displaystyle k\geqslant 2}es1{\displaystyle 1}y el valor mínimo es0{\displaystyle 0}, entonces

λ1θ1λ1r(pag(A)v1)=k=2norte|dk|2(λ1λk)|pag(λk)|2k=1norte|dk|2|pag(λk)|2k=2norte|dk|2(λ1λk)|d1|2|pag(λ1)|2(λ1λnorte)k=2norte|dk|2|pag(λ1)|2|d1|2.{\displaystyle \lambda _{1}-\theta _{1}\leqslant \lambda _{1}-r(p(A)v_{1})={\frac {\sum _{k=2}^{n}|d_{k}|^{2}(\lambda _{1}-\lambda _{k})|p(\lambda _{k})|^{2}}{\sum _{k=1}^{n}|d_{k}|^{2}|p(\lambda _{k})|^{2}}}\leqslant {\frac {\sum _{k=2}^{n}|d_{k}|^{2}(\lambda _{1}-\lambda _{k})}{|d_{1}|^{2}|p(\lambda _{1})|^{2}}}\leqslant {\frac {(\lambda _{1}-\lambda _{n})\sum _{k=2}^{n}|d_{k}|^{2}}{|p(\lambda _{1})|^{2}|d_{1}|^{2}}}.}

Además

pag(λ1)=dometro1(2λ1λ2λnorteλ2λnorte)=dometro1(2λ1λ2λ2λnorte+1);{\displaystyle p(\lambda _{1})=c_{m-1}\left({\frac {2\lambda _{1}-\lambda _{2}-\lambda _{n}}{\lambda _{2}-\lambda _{n}}}\right)=c_{m-1}\left(2{\frac {\lambda _{1}-\lambda _{2}}{\lambda _{2}-\lambda _{n}}}+1\right);}

la cantidad

ρ=λ1λ2λ2λnorte{\displaystyle \rho ={\frac {\lambda _{1}-\lambda _{2}}{\lambda _{2}-\lambda _{n}}}}

(es decir, la relación entre el primer eigengap y el diámetro del resto del espectro ) es, por lo tanto, de vital importancia para la tasa de convergencia en este caso. También escribir

R=miarcosh(1+2ρ)=1+2ρ+2ρ2+ρ,{\displaystyle R=e^{\operatorname {arcosh} (1+2\rho )}=1+2\rho +2{\sqrt {\rho ^{2}+\rho }},}

podemos concluir que

λ1θ1(λ1λnorte)(1|d1|2)dometro1(2ρ+1)2|d1|2=1|d1|2|d1|2(λ1λnorte)1aporrear2((metro1)arcosh(1+2ρ))=1|d1|2|d1|2(λ1λnorte)4(Rmetro1+R(metro1))241|d1|2|d1|2(λ1λnorte)R2(metro1){\displaystyle {\begin{aligned}\lambda _{1}-\theta _{1}&\leqslant {\frac {(\lambda _{1}-\lambda _{n})\left(1-|d_{1}|^{2}\right)}{c_{m-1}(2\rho +1)^{2}|d_{1}|^{2}}}\\[6pt]&={\frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(\lambda _{1}-\lambda _{n}){\frac {1}{\cosh ^{2}((m-1)\operatorname {arcosh} (1+2\rho ))}}\\[6pt]&={\frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(\lambda _{1}-\lambda _{n}){\frac {4}{\left(R^{m-1}+R^{-(m-1)}\right)^{2}}}\\[6pt]&\leqslant 4{\frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(\lambda _{1}-\lambda _{n})R^{-2(m-1)}\end{aligned}}}

La tasa de convergencia está controlada principalmente porR{\displaystyle R}, ya que este límite se reduce por un factorR2{\displaystyle R^{-2}}por cada iteración adicional.

Para comparar, se puede considerar cómo la tasa de convergencia del método de potencia depende deρ{\displaystyle \rho }, pero dado que el método de potencia es principalmente sensible al cociente entre los valores absolutos de los valores propios, necesitamos|λnorte||λ2|{\displaystyle |\lambda _{n}|\leqslant |\lambda _{2}|}para la brecha propia entreλ1{\displaystyle \lambda _{1}}yλ2{\displaystyle \lambda _{2}}ser el dominante. Bajo esa restricción, el caso que más favorece el método de potencia es queλnorte=λ2{\displaystyle \lambda _{n}=-\lambda _{2}}, así que considérelo. Al final del método de potencia, el vector de iteración:

=(1t2)1/2z1+tz2z1+tz2,{\displaystyle u=(1-t^{2})^{1/2}z_{1}+tz_{2}\approx z_{1}+tz_{2},}[ nota 1 ]

donde cada nueva iteración efectivamente multiplica elz2{\displaystyle z_{2}}-amplitudt{\displaystyle t}por

λ2λ1=λ2λ2+(λ1λ2)=11+λ1λ2λ2=11+2ρ.{\displaystyle {\frac {\lambda _{2}}{\lambda _{1}}}={\frac {\lambda _{2}}{\lambda _{2}+(\lambda _{1}-\lambda _{2})}}={\frac {1}{1+{\frac {\lambda _{1}-\lambda _{2}}{\lambda _{2}}}}}={\frac {1}{1+2\rho }}.}

La estimación del mayor valor propio es entonces

A=(1t2)λ1+t2λ2,{\displaystyle u^{*}Au=(1-t^{2})\lambda _{1}+t^{2}\lambda _{2},}

por lo que el límite anterior para la tasa de convergencia del algoritmo de Lanczos debe compararse con

λ1A=(λ1λ2)t2,{\displaystyle \lambda _{1}-u^{*}Au=(\lambda _{1}-\lambda _{2})t^{2},}

que se reduce por un factor de(1+2ρ)2{\displaystyle (1+2\rho )^{-2}}para cada iteración. La diferencia, por lo tanto, se reduce a que entre1+2ρ{\displaystyle 1+2\rho }yR=1+2ρ+2ρ2+ρ{\displaystyle R=1+2\rho +2{\sqrt {\rho ^{2}+\rho }}}. En elρ1{\displaystyle \rho \gg 1}región, esta última es más parecida1+4ρ{\displaystyle 1+4\rho }y se comporta como lo haría el método de potencia con una brecha propia dos veces mayor; una mejora notable. Sin embargo, el caso más desafiante es el deρ1,{\displaystyle \rho \ll 1,}en el cualR1+2ρ{\displaystyle R\approx 1+2{\sqrt {\rho }}}es una mejora aún mayor en el eigengap; elρ1{\displaystyle \rho \gg 1}La región es donde el algoritmo de Lanczos, en términos de convergencia, realiza la menor mejora con respecto al 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 principal para evaluar la utilidad de implementar un algoritmo en una computadora con redondeo.

Para el algoritmo de Lanczos, se puede demostrar que con aritmética exacta , el conjunto de vectoresv1,v2,,vmetro+1{\displaystyle v_{1},v_{2},\cdots ,v_{m+1}}El algoritmo de Lanczos construye una base ortonormal y los autovalores/vectores obtenidos son buenas aproximaciones a los de la matriz original. Sin embargo, en la práctica (dado que los cálculos se realizan con aritmética de punto flotante, donde la imprecisión es inevitable), la ortogonalidad se pierde rápidamente y, en algunos casos, el nuevo vector podría incluso depender linealmente del conjunto ya construido. Como resultado, algunos de los autovalores 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 ]

  1. Evitar la pérdida de ortogonalidad,
  2. Recuperar la ortogonalidad después de que se haya generado la base.
  3. Una vez identificados todos los valores propios válidos y los "espurios", elimine los espurios.

Variaciones

Existen variantes del algoritmo de Lanczos en las que los vectores involucrados son matrices altas y estrechas en lugar de vectores, y las constantes de normalización son matrices cuadradas pequeñas. Estos se denominan algoritmos de Lanczos por bloques y pueden ser mucho más rápidos en ordenadores con un gran número de registros y tiempos de acceso a memoria prolongados.

Muchas implementaciones del algoritmo de Lanczos se reinician después de un cierto número de iteraciones. Una de las variaciones reiniciadas más influyentes es el método de Lanczos reiniciado implícitamente, [ 10 ] implementado en ARPACK . [ 11 ] Esto ha dado lugar a otras variaciones reiniciadas, como la bidiagonalización de Lanczos reiniciada. [ 12 ] Otra variación reiniciada exitosa es el método de Lanczos Thick-Restart, [ 13 ] implementado en un paquete de software llamado TRLan. [ 14 ]

Espacio nulo sobre un campo 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 cuerpos finitos y el conjunto de personas interesadas en problemas de valores propios grandes apenas se superponen, a menudo también se le llama algoritmo de Lanczos por bloques sin causar una confusión irrazonable.

Aplicaciones

Los algoritmos de Lanczos son muy atractivos porque la multiplicación porA{\displaystyle A\,}Es la única operación lineal a gran escala. Dado que los motores de recuperación de texto con ponderación de términos implementan precisamente esta operación, el algoritmo de Lanczos se puede aplicar de manera eficiente a documentos de texto (véase indexación semántica latente ). Los autovectores también son importantes para 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 la materia condensada como método para resolver hamiltonianos de sistemas de electrones 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 a gran escala y problemas de valores propios que utilizan el algoritmo de Lanczos.

ARPACK ( FORTRAN 77 , también disponible en MATLAB, GNU Octave (eigs) , Juliay Python a través de SciPyEl paquete se centra en problemas de valores propios y admite matrices tanto almacenadas como implícitas.

Una implementación en Matlab del algoritmo de Lanczos (tenga en cuenta los problemas de precisión) está disponible como parte del paquete de Matlab Gaussian Belief Propagation . La biblioteca de filtrado colaborativo GraphLab [ 18 ] incorpora una implementación paralela a gran escala del algoritmo de Lanczos (en C++ ) para multinúcleo.

Las implementaciones en Julia de los métodos de Lanczos y otros métodos relacionados de Krylov se pueden encontrar en Krylov.jl , KrylovKit.jl , IterativeSolvers.jl y ArnoldiMethod.jl .

La biblioteca PRIMME también implementa un algoritmo similar al de Lanczos.

El paquete de código abierto Leymosun implementa el algoritmo de Lanczos en el contexto de la complejidad de Krylov en Python puro: su función llamada lanczos generará las bases de Krylov y los coeficientes.

Notas

  1. Los coeficientes no tienen por qué ser ambos reales, pero la fase es de poca importancia. Tampoco es necesario que los componentes de otros autovectores hayan desaparecido por completo, pero se contraen al menos tan rápido como el dez2{\displaystyle z_{2}}, entoncesz1+tz2{\displaystyle u\approx z_{1}+tz_{2}}Describe el peor escenario.

Referencias

  1. Lanczos, C. (1950). "Un método iterativo para la solución del problema de valores propios de operadores diferenciales e integrales lineales" (PDF) . Journal of Research of the National Bureau of Standards . 45 (4): 255– 282. doi : 10.6028/jres.045.026 .
  2. 1 2 Ojalvo, IU; Newman, M. (1970). "Modos de vibración de grandes estructuras mediante un método automático de reducción de matrices". AIAA Journal . 8 (7): 1234– 1239. Bibcode : 1970AIAAJ...8.1234N . doi : 10.2514/3.5878 .
  3. Paige, CC (1971). El cálculo de valores propios y vectores propios de matrices dispersas muy grandes (tesis doctoral). Universidad de Londres. OCLC 654214109 . 
  4. Paige, CC (1972). "Variantes computacionales del método de Lanczos para el problema de valores propios". J. Inst. Maths Applics . 10 (3): 373– 381. doi : 10.1093/imamat/10.3.373 .
  5. Ojalvo, IU (1988). "Orígenes y ventajas de los vectores de Lanczos para grandes sistemas dinámicos". Actas de la 6.ª Conferencia de Análisis Modal (IMAC), Kissimmee, FL . págs. 489–494 . 
  6. 1 2 Cullum; Willoughby (1985). Algoritmos de Lanczos para cálculos de valores propios simétricos grandes . Vol. 1. Birkhäuser. ISBN  0-8176-3058-9.
  7. 1 2 Yousef Saad (1992-06-22). Métodos numéricos para problemas de valores propios grandes . Wiley. ISBN 0-470-21820-7.
  8. 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 aplicado y computacional . 34 (3): 379– 414. doi : 10.1016/j.acha.2012.06.003 .
  9. 1 2 Golub, Gene H.; Van Loan, Charles F. (1996). Cálculos matriciales (3.ª ed.). Baltimore: Johns Hopkins Univ. Press. ISBN  0-8018-5413-X.
  10. D. Calvetti ; L. Reichel; DC Sorensen (1994). "Un método de Lanczos reiniciado implícitamente para grandes problemas de valores propios simétricos" . Electronic Transactions on Numerical Analysis . 2 : 1–21 .
  11. 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.
  12. E. Kokiopoulou; C. Bekas; E. Gallopoulos (2004). "Cálculo de 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 .
  13. Kesheng Wu; Horst Simon (2000). "Método de Lanczos de reinicio grueso para problemas de valores propios simétricos grandes" . SIAM Journal on Matrix Analysis and Applications . 22 (2). SIAM: 602– 616. doi : 10.1137/S0895479898334605 .
  14. Kesheng Wu; Horst Simon (2001). "Paquete de software TRLan" . Archivado del original el 1 de julio de 2007. Recuperado el 30 de junio de 2007 .
  15. Chen, HY; Atkinson, WA; Wortis, R. (julio de 2011). "Anomalía de polarización 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 . 
  16. Shimizu, Noritaka (21 de octubre de 2013). "Código de modelo de capa nuclear para computación paralela masiva, "KSHELL"". arXiv : 1310.5431 [ nucl-th ].
  17. El Grupo de Algoritmos Numéricos. "Índice de palabras clave: Lanczos" . Manual de la Biblioteca NAG, Mark 23. Consultado el 9 de febrero de 2012 .
  18. GraphLab archivado el 14 de marzo de 2011 en Wayback Machine

Lecturas adicionales

  • Golub, Gene H .; Van Loan, Charles F. (1996). «Métodos de Lanczos» . Computación matricial . 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) . Actas de la 17.ª Conferencia Internacional Conjunta sobre Inteligencia Artificial (IJCAI'01 ). 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.