Algoritmo de Lanczos

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Cálculo Numérico eigenvalue

El algoritmo de lanczos es un método iterativo ideado por Cornelius Lanczos que es una adaptación de métodos de poder para encontrar el m{displaystyle m} eigenvalues y eigenvectores de un n× × n{displaystyle ntimes n} Matriz hermitiana, donde m{displaystyle m} es a menudo pero no necesariamente mucho más pequeño que n{displaystyle n}. Aunque en principio era computacionalmente eficiente, 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 de gran tamaño sometidas a cargas dinámicas. 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) con cualquier grado de precisión, 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 obra original, estos autores también sugirieron cómo seleccionar un vector inicial (es decir, utilizar un generador de números aleatorios para seleccionar cada elemento del vector inicial) y sugirieron un método empíricamente determinado para determinar m{displaystyle m}, el número reducido de vectores (es decir, debe ser seleccionado para ser aproximadamente 1,5 veces el número de eigenvalues precisos deseados). Poco después su trabajo fue seguido por Paige, quien también proporcionó un análisis de errores. En 1988, Ojalvo produjo una historia más detallada de este algoritmo y una prueba de error de eigenvalue eficiente.

El algoritmo

Input a Hermitian matriz A{displaystyle A} de tamaño n× × n{displaystyle ntimes n}, y opcionalmente varias iteraciones m{displaystyle m} (como predeterminado, dejar m=n{displaystyle m=n}).
  • Estrictamente hablando, el algoritmo no necesita acceso a la matriz explícita, pero sólo una función v↦ ↦ Av{displaystyle vmapsto Av} que computa el producto de la matriz por un vector arbitrario. Esta función se llama a la mayoría m{displaystyle m} veces.
Producto an n× × m{displaystyle ntimes m} matriz V{displaystyle V} con columnas ortonormales y una matriz simétrica real tridiagonal T=VAlternativa Alternativa AV{displaystyle T=V^{*}AV} de tamaño m× × m{displaystyle mtimes m}. Si m=n{displaystyle m=n}Entonces V{displaystyle V} es unitario, y A=VTVAlternativa Alternativa {displaystyle A=VTV^{*}.
Advertencia La iteración Lanczos es propensa a la inestabilidad numérica. Cuando se ejecute en aritmética no exacta, deberán adoptarse medidas adicionales (como se indica en secciones posteriores) para garantizar la validez de los resultados.
  1. Vamos. v1▪ ▪ Cn{displaystyle v_{1}in mathbb {C} ser un vector arbitrario con la norma Euclidea 1{displaystyle 1}.
  2. Paso de iteración inicial Abreviada:
    1. Vamos. w1.=Av1{displaystyle ¿Qué?.
    2. Vamos. α α 1=w1.Alternativa Alternativa v1{displaystyle alpha ¿Qué?.
    3. Vamos. w1=w1.− − α α 1v1{displaystyle {}=w_{1}-alpha ¿Qué?.
  3. Para j=2,... ... ,m{displaystyle j=2,dotsm} hacer:
    1. Vamos. β β j=. . wj− − 1. . {displaystyle beta _{j}=fxi_{j-1}fnción} (también la norma Euclideana).
    2. Si β β jل ل 0{displaystyle beta _{j}neq 0}, entonces deja vj=wj− − 1/β β j{displaystyle v_{j}=w_{j-1}/beta ¿Qué?,
      más elegir como vj{displaystyle v_{j} un vector arbitrario con la norma Euclidea 1{displaystyle 1} que es ortogonal a todos v1,... ... ,vj− − 1{displaystyle v_{1},dotsv_{j-1}.
    3. Vamos. wj.=Avj{displaystyle ¿Qué?.
    4. Vamos. α α j=wj.Alternativa Alternativa vj{displaystyle alpha ¿Qué?.
    5. Vamos. wj=wj.− − α α jvj− − β β jvj− − 1{displaystyle {fnMicrosoft Sans Serif} ¿Qué?.
  4. Vamos. V{displaystyle V} ser la matriz con columnas v1,... ... ,vm{displaystyle v_{1},dotsv_{m}. Vamos. T=()α α 1β β 20β β 2α α 2β β 3β β 3α α 3⋱ ⋱ ⋱ ⋱ ⋱ ⋱ β β m− − 1β β m− − 1α α m− − 1β β m0β β mα α m){displaystyle T={begin{pmatrix}alpha ################################################################################################################################################################################################################################################################ ################################################################################################################################################################################################################################################################ - ¿Qué? ################################################################################################################################################################################################################################################################ ¿Por qué? ################################################################################################################################################################################################################################################################ ################################################################################################################################################################################################################################################################ ################################################################################################################################################################################################################################################################ ################################################################################################################################################################################################################################################################ ################################################################################################################################################################################################################################################################ ¿Qué?.
Nota Avj=wj.=β β j+1vj+1+α α jvj+β β jvj− − 1{displaystyle Av_{j}=w_{j}=beta _{j+1}v_{j+1}+alpha _{j}v_{j}beta _{j}v_{j-1} para <math alttext="{displaystyle 2<j2c)jc)m{displaystyle 2 segÃ3n]<img alt="{displaystyle 2<j.

Hay en principio cuatro maneras de escribir el procedimiento de iteración. Paige y otros trabajos muestran que el orden de operaciones anterior es el más numérico estable. En la práctica el vector inicial v1{displaystyle v_{1} puede ser tomado como otro argumento del procedimiento, con β β j=0{displaystyle beta _{j}=0} e indicadores de imprecisión numérica que se incluyen como condiciones adicionales de terminación de bucle.

Sin contar la multiplicación de la matriz-vector, cada iteración lo hace O()n){displaystyle O(n)} operaciones aritméticas. La multiplicación de la matriz-vector se puede hacer en O()dn){displaystyle O(dn)} operaciones aritméticas donde d{displaystyle d} es el número promedio de elementos no cero seguidos. La complejidad total es así O()dmn){displaystyle O(dmn)}o O()dn2){displaystyle O(dn^{2}} si m=n{displaystyle m=n}; el algoritmo Lanczos puede ser muy rápido para las matrices escasas. Los esquemas para mejorar la estabilidad numérica suelen juzgarse contra este alto rendimiento.

Los vectores vj{displaystyle v_{j} se llaman vectores Lanczos. El vector wj.{displaystyle w_{j}} no se utiliza después wj{displaystyle w_{j} es computado, y el vector wj{displaystyle w_{j} no se utiliza después vj+1{displaystyle v_{j+1} está computado. Por lo tanto, uno puede utilizar el mismo almacenamiento para los tres. Del mismo modo, si sólo la matriz tridiagonal T{displaystyle T} se busca, entonces la iteración cruda no necesita vj− − 1{displaystyle v_{j-1} después de haber computado wj{displaystyle w_{j}, aunque algunos planes para mejorar la estabilidad numérica lo necesitarían más adelante. A veces los vectores Lanczos posteriores son recomputados de v1{displaystyle v_{1} cuando sea necesario.

Aplicación al problema propio

El algoritmo de Lanczos se plantea con más frecuencia en el contexto de encontrar los valores eigenvectores y eigenvectores de una matriz, pero mientras que una diagonalización ordinaria de una matriz haría que los eigenvectores y los eigenvalues aparentes de la inspección, lo mismo no es cierto para la tridiagonalización realizada por el algoritmo de Lanczos; se necesitan pasos adicionales notriviales para computar un solo eige Sin embargo, aplicar el algoritmo Lanczos es a menudo un avance significativo en la computación de la eigendecomposición. Si λ λ {displaystyle lambda } es un eigenvalue de A{displaystyle A}Y si Tx=λ λ x{displaystyle Tx=lambda x} ()x{displaystyle x} es un eigenvector de T{displaystyle T}entonces Sí.=Vx{displaystyle y=Vx} es el eigenvector correspondiente A{displaystyle A} (since ASí.=AVx=VTVAlternativa Alternativa Vx=VTIx=VTx=V()λ λ x)=λ λ Vx=λ λ Sí.{displaystyle Ay=AVx=VTV^{*}Vx=VTIx=VTx=V(lambda x)=lambda Vx=lambda y}). Así el algoritmo Lanczos transforma el problema de la eigendecomposición para A{displaystyle A} en el problema de la eigendecomposición T{displaystyle T}.

  1. Para las matrices tridiagonales existen varios algoritmos especializados, a menudo con mejor complejidad computacional que algoritmos de uso general. Por ejemplo, si T{displaystyle T} es un m× × m{displaystyle mtimes m} matriz simétrica tridiagonal entonces:
    • La recurrencia continua permite calcular el polinomio característico en O()m2){displaystyle O(m^{2}} operaciones y evaluación en un punto O()m){displaystyle O(m)} operaciones.
    • El algoritmo eigenvalue divide y conquista puede utilizarse para calcular toda la eigendecomposición de T{displaystyle T} dentro O()m2){displaystyle O(m^{2}} operaciones.
    • El Multipollo rápido El método puede calcular todos los eigenvalues en sólo O()mlog⁡ ⁡ m){displaystyle O(mlog m)} operaciones.
  2. Algunos algoritmos generales de eigendecomposición, en particular el algoritmo QR, se sabe que convergen más rápido para matrices tridiagonales que para matrices generales. La complejidad asintotica de QR tridiagonal es O()m2){displaystyle O(m^{2}} así como para el algoritmo de división y conquista (aunque el factor constante puede ser diferente); ya que los eigenvectores juntos tienen m2{displaystyle m^{2} elementos, esto es asintóticamente óptimo.
  3. Incluso algoritmos cuyas tasas de convergencia no son afectadas por transformaciones unitarias, como el método de potencia y la iteración inversa, pueden disfrutar de beneficios de bajo nivel de rendimiento de ser aplicados a la matriz tridiagonal T{displaystyle T} en lugar de la matriz original A{displaystyle A}. Desde T{displaystyle T} es muy escaso con todos los elementos no cero en posiciones altamente predecibles, permite un almacenamiento compacto con excelente rendimiento frente al caché. Del mismo modo, T{displaystyle T} es una matriz real con todos los eigenvectores y eigenvalues reales, mientras que A{displaystyle A} en general puede tener elementos complejos y eigenvectores, por lo que la aritmética real es suficiente para encontrar los eigenvectores y eigenvalues de T{displaystyle T}.
  4. Si n{displaystyle n} es muy grande, luego reducir m{displaystyle m} así T{displaystyle T} es de un tamaño manejable todavía permitirá encontrar los eigenvalues más extremos y eigenvectores de A{displaystyle A}; en m≪ ≪ n{displaystyle mll n} región, el algoritmo Lanczos se puede ver como un esquema de compresión perdido para matrices hermitianas, que enfatiza la preservación de los eigenvalues extremos.

La combinación de buen rendimiento para matrices dispersas y la capacidad de calcular varios (sin calcular todos) los valores propios 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 realiza principalmente el algoritmo es la tridiagonalización de una matriz, para la cual las transformaciones de Householder numéricamente estables se han favorecido desde la década de 1950. Durante la década de 1960, se hizo caso omiso del algoritmo de Lanczos. El interés en él se vio rejuvenecido por la teoría de la 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 sólo si Householder no es satisfactorio.

Los aspectos en los que difieren los dos algoritmos incluyen:

  • Lanczos se aprovecha de A{displaystyle A} ser una matriz escasa, mientras que el dueño de la casa no, y generará relleno.
  • Lanczos trabaja con la matriz original A{displaystyle A} (y no tiene ningún problema con que se le conozca sólo implícitamente), mientras que el titular de la Casa cruda quiere modificar la matriz durante la computación (aunque eso puede evitarse).
  • Cada iteración del algoritmo Lanczos produce otra columna de la matriz de transformación final V{displaystyle V}, mientras que una iteración de los propietarios de la casa produce otro factor en una factorización unitaria Q1Q2... ... Qn{displaystyle Q_{1}Q_{2}dots Q_{n} de V{displaystyle V}. Cada factor está determinado por un solo vector, por lo que los requisitos de almacenamiento son los mismos para ambos algoritmos, y V=Q1Q2... ... Qn{displaystyle V=Q_{1}Q_{2}dots Q_{n} puede ser calculado en O()n3){displaystyle O(n^{3}} tiempo.
  • El dueño de la casa es numéricamente estable, mientras que el Lanczos crudo no es.
  • Lanczos es muy paralelo, con sólo O()n){displaystyle O(n)} puntos de sincronización (las computaciones de α α j{displaystyle alpha _{j}} y β β j{displaystyle beta _{j}}). El dueño de la casa es menos paralelo, teniendo una secuencia de O()n2){displaystyle O(n^{2}} cantidades de escalar calculadas que cada uno depende 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 eigenvalo de mayor magnitud y un eigenvector correspondiente de una matriz A{displaystyle A} es difícil

  1. Elija un vector aleatorio u1ل ل 0{displaystyle u_{1}neq 0}.
  2. Para j⩾ ⩾ 1{displaystyle jgeqslant 1} (hasta la dirección uj{displaystyle u_{j} ha convergedo) hacer:
    1. Vamos. uj+1.=Auj.{displaystyle U_{j+1}'=Au_{j}
    2. Vamos. uj+1=uj+1./. . uj+1.. . .{displaystyle u_{j+1}=u_{j+1}'/ eternau_{j+1}' eterna.}
  • En grande j{displaystyle j} límite, uj{displaystyle u_{j} se acerca al eigenvector normado correspondiente al eigenvalu de mayor magnitud.

Una crítica que se puede plantear contra este método es que es desperdicio: gasta mucho trabajo (los productos matriciales-vector en el paso 2.1) extrayendo información de la matriz A{displaystyle A}, pero presta atención sólo al último resultado; las implementaciones suelen utilizar la misma variable para todos los vectores uj{displaystyle u_{j}, tener cada nueva iteración sobreescribir los resultados de la anterior. Puede ser conveniente mantener todos los resultados intermedios y organizar los datos.

Un pedazo de información que trivialmente está disponible de los vectores uj{displaystyle u_{j} es una cadena de subespacios Krylov. Una manera de afirmar que sin introducir conjuntos en el algoritmo es afirmar que compute

a subconjunto {}vj}j=1m{displaystyle ¿Qué? de una base Cn{displaystyle mathbb {C} {n}} tales que Ax▪ ▪ lapso⁡ ⁡ ()v1,... ... ,vj+1){displaystyle Axin operatorname {span} (v_{1},dotscv_{j+1})} para todos x▪ ▪ lapso⁡ ⁡ ()v1,... ... ,vj){displaystyle xin operatorname {span} (v_{1},dotscv_{j})} y todos <math alttext="{displaystyle 1leqslant j1⩽ ⩽ jc)m;{displaystyle 1leqslant jierem;}<img alt="{displaystyle 1leqslant j

esto es trivialmente satisfecho vj=uj{displaystyle ¿Qué? mientras uj{displaystyle u_{j} es linealmente independiente de u1,... ... ,uj− − 1{displaystyle u_{1},dotscu_{j-1} (y en el caso de que haya tal dependencia entonces uno puede continuar la secuencia escogiendo como vj{displaystyle v_{j} un vector arbitrario linealmente independiente u1,... ... ,uj− − 1{displaystyle u_{1},dotscu_{j-1}). Una base que contiene uj{displaystyle u_{j} vectores, sin embargo, es probable que estén numéricamente mal condicionados, ya que esta secuencia de vectores es por diseño destinado a converger a un eigenvector de A{displaystyle A}. Para evitarlo, se puede combinar la iteración de energía con un proceso Gram-Schmidt, para producir en cambio una base ortonormal de estos subespacios de Krylov.

  1. Elija un vector aleatorio u1{displaystyle U_{1} de la norma euclidiana 1{displaystyle 1}. Vamos. v1=u1{displaystyle ¿Qué?.
  2. Para j=1,... ... ,m− − 1{displaystyle j=1,dotscm-1} hacer:
    1. Vamos. uj+1.=Auj{displaystyle U_{j+1}=Au_{j}.
    2. Para todos k=1,... ... ,j{displaystyle k=1,dotscj} Deja gk,j=vkAlternativa Alternativa uj+1.{displaystyle G_{k,j}=v_{*}u_{j+1}. (Estas son las coordenadas de Auj=uj+1.{displaystyle Au_{j}=u_{j+1} con respecto a los vectores de base v1,... ... ,vj{displaystyle v_{1},dotscv_{j})
    3. Vamos. wj+1=uj+1.− − . . k=1jgk,jvk{displaystyle w_{j+1}=u_{j+1}-sum ¿Qué?. (Cancelar el componente de uj+1.{displaystyle u_{j+1}} que está dentro lapso⁡ ⁡ ()v1,... ... ,vj){displaystyle operatorname {span} (v_{1},dotscv_{j}})
    4. Si wj+1ل ل 0{displaystyle w_{j+1}neq 0} Entonces déjalo uj+1=uj+1./. . uj+1.. . {displaystyle u_{j+1}=u_{j+1}'/ habitu_{j+1}' y vj+1=wj+1/. . wj+1. . {displaystyle v_{j+1}=w_{j+1}/ eternaw_{j+1},
      de otro modo uj+1=vj+1{displaystyle U_{j+1}=v_{j+1} un vector arbitrario de la norma euroclidiana 1{displaystyle 1} que es ortogonal a todos v1,... ... ,vj{displaystyle v_{1},dotscv_{j}.

La relación entre los vectores de la iteración de poder uj{displaystyle u_{j} y los vectores ortogonales vj{displaystyle v_{j} es que

Auj=. . uj+1.. . uj+1=uj+1.=wj+1+. . k=1jgk,jvk=. . wj+1. . vj+1+. . k=1jgk,jvk{displaystyle Au_{j}=tu_{j+1}' eternau_{j+1}=u_{j+1}'=w_{j+1}+sum ¿Por qué? ¿Qué?.

Aquí se puede observar que no necesitamos realmente uj{displaystyle u_{j} vectores para computar estos vj{displaystyle v_{j}, porque uj− − vj▪ ▪ lapso⁡ ⁡ ()v1,... ... ,vj− − 1){displaystyle u_{j}-v_{j}in operatorname {span} (v_{1},dotscv_{j-1})} y por lo tanto la diferencia entre uj+1.=Auj{displaystyle U_{j+1}=Au_{j} y wj+1.=Avj{displaystyle ¿Qué? está dentro. lapso⁡ ⁡ ()v1,... ... ,vj){displaystyle operatorname {span} (v_{1},dotscv_{j}}, que es cancelado por el proceso de ortogonalización. Así, la misma base para la cadena de subespacios Krylov es calculada por

  1. Elija un vector aleatorio v1{displaystyle v_{1} de la norma euclidiana 1{displaystyle 1}.
  2. Para j=1,... ... ,m− − 1{displaystyle j=1,dotscm-1} hacer:
    1. Vamos. wj+1.=Avj{displaystyle ¿Qué?.
    2. Para todos k=1,... ... ,j{displaystyle k=1,dotscj} Deja hk,j=vkAlternativa Alternativa wj+1.{displaystyle ¿Qué?.
    3. Vamos. wj+1=wj+1.− − . . k=1jhk,jvk{displaystyle w_{j+1}=w_{j+1}-sum ¿Qué?.
    4. Vamos. hj+1,j=. . wj+1. . {displaystyle h_{j+1,j}=.
    5. Si hj+1,jل ل 0{displaystyle h_{j+1,j}neq 0} Entonces déjalo vj+1=wj+1/hj+1,j{displaystyle v_{j+1}=w_{j+1}/h_{j+1,j},
      de otro modo vj+1{displaystyle v_{j+1} un vector arbitrario de la norma euroclidiana 1{displaystyle 1} que es ortogonal a todos v1,... ... ,vj{displaystyle v_{1},dotscv_{j}.

A priori los coeficientes hk,j{displaystyle h_{k,j} satisfacer satisfacción

Avj=. . k=1j+1hk,jvk{displaystyle Av_{j}=sum ¿Qué? para todos <math alttext="{displaystyle jjc)m{displaystyle j)<img alt="{displaystyle j;

la definición hj+1,j=. . wj+1. . {displaystyle h_{j+1,j}= puede parecer un poco extraño, pero se ajusta al patrón general hk,j=vkAlternativa Alternativa wj+1.{displaystyle ¿Qué? desde entonces

vj+1Alternativa Alternativa wj+1.=vj+1Alternativa Alternativa wj+1=. . wj+1. . vj+1Alternativa Alternativa vj+1=. . wj+1. . .{displaystyle v_{j+1}{*}w_{j+1}'=v_{j+1}^{*}w_{j+1}= eternaw_{j+1} eternav_{j+1}{*}v_{j+1}= eternaw_{j+1}f}f.}

Porque el poder iteración vectores uj{displaystyle u_{j} que fueron eliminados de esta satisfacción de recursión uj▪ ▪ lapso⁡ ⁡ ()v1,... ... ,vj),{displaystyle u_{j}in operatorname {span} (v_{1},ldotsv_{j}),} los vectores {}vj}j=1m{displaystyle ¿Qué? y coeficientes hk,j{displaystyle h_{k,j} contener suficiente información A{displaystyle A} que todo u1,... ... ,um{displaystyle u_{1},ldotsu_{m} puede ser calculado, así que nada se perdió cambiando vectores. (De hecho, resulta que los datos reunidos aquí dan unas aproximaciones significativamente mejores del valor más grande que uno obtiene 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 Arnoldi. El algoritmo de Lanczos entonces surge como la simplificación se obtiene de eliminar pasos de cálculo que resultan ser triviales cuando A{displaystyle A} es Hermitian - en particular la mayoría de los hk,j{displaystyle h_{k,j} los coeficientes resultan ser cero.

Elementalmente, A{displaystyle A} Hermitian entonces

hk,j=vkAlternativa Alternativa wj+1.=vkAlternativa Alternativa Avj=vkAlternativa Alternativa AAlternativa Alternativa vj=()Avk)Alternativa Alternativa vj.{displaystyle ¿Qué? ¿Qué?

Para <math alttext="{displaystyle kkc)j− − 1{displaystyle k madej-1}<img alt="{displaystyle k sabemos que Avk▪ ▪ lapso⁡ ⁡ ()v1,... ... ,vj− − 1){displaystyle Av_{k}in operatorname {span} (v_{1},ldotsv_{j-1})}y desde vj{displaystyle v_{j} por la construcción es ortogonal a este subespacio, este producto interno debe ser cero. (Esto es esencialmente también la razón por la cual las secuencias de polinomios ortogonales siempre pueden ser dadas una relación de recurrencia de tres plazos.) Para k=j− − 1{displaystyle k=j-1} uno se pone

hj− − 1,j=()Avj− − 1)Alternativa Alternativa vj=vjAlternativa Alternativa Avj− − 1̄ ̄ =hj,j− − 1̄ ̄ =hj,j− − 1{displaystyle h_{j-1,j}=(Av_{j-1})^{*}v_{j}={overline {fnK} {fnK}}= {fnMicrosoft} {h_{j,j-1}}=h_{j,j-1}

ya que este último es real por ser la norma de un vector. Para k=j{displaystyle k=j} uno se pone

hj,j=()Avj)Alternativa Alternativa vj=vjAlternativa Alternativa Avj̄ ̄ =hj,j̄ ̄ ,{displaystyle h_{j,j}=(Av_{j})^{*}v_{j}={overline {fnK}= {fnMicrosoft}}= {fnMicrosoft} {h_{j,j}}}}

lo que significa que esto también es real.

Más abstracto, si V{displaystyle V} es la matriz con columnas v1,... ... ,vm{displaystyle v_{1},ldotsv_{m} entonces los números hk,j{displaystyle h_{k,j} se puede identificar como elementos de la matriz H=VAlternativa Alternativa AV{displaystyle H=V^{*}AV}, y hk,j=0{displaystyle h_{k,j}=0} para j+1;}" xmlns="http://www.w3.org/1998/Math/MathML">k■j+1;{displaystyle k títuloj+1;}j+1;}" aria-hidden="true" class="mwe-math-fallback-image-inline mw-invert" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ac2349a70f6e89d239e891a0836afc1d2c449897" style="vertical-align: -0.671ex; width:9.917ex; height:2.509ex;"/> la matriz H{displaystyle H. Está arriba de Hessenberg. Desde

HAlternativa Alternativa =()VAlternativa Alternativa AV)Alternativa Alternativa =VAlternativa Alternativa AAlternativa Alternativa V=VAlternativa Alternativa AV=H{displaystyle ¿Qué?

la matriz H{displaystyle H. es Hermitian. Esto implica que H{displaystyle H. es también menor Hessenberg, por lo que debe ser tridiagional. Siendo Hermitian, su diagonal principal es real, y como su primera subdiagonal es real por la construcción, lo mismo es cierto para su primera superdiagonal. Por lo tanto, H{displaystyle H. es una matriz real, simétrica— la matriz T{displaystyle T} de la especificación del algoritmo Lanczos.

Aproximación simultánea de valores propios extremos

Una manera de caracterizar a los eigenvectores de una matriz hermitiana A{displaystyle A} es como puntos estacionarios del cociente Rayleigh

r()x)=xAlternativa Alternativa AxxAlternativa Alternativa x,x▪ ▪ Cn.{displaystyle r(x)={frac {x^{*}{x^{*}x}qquad xin mathbb {C} ^{n}

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

Dentro de un subespacio de baja dimensión L{displaystyle {fnMithcal}} de Cn{displaystyle mathbb {C} {n}} puede ser factible localizar el máximo x{displaystyle x} mínimo Sí.{displaystyle y} de r{displaystyle r}. Repita eso para una cadena creciente L1⊂ ⊂ L2⊂ ⊂ ⋯ ⋯ {displaystyle {mathcal {}_{1}subset {mathcal {}_{2}subset cdots} produce dos secuencias de vectores: x1,x2,... ... {displaystyle x_{1},x_{2},ldots } y Sí.1,Sí.2,... ... {displaystyle Y... tales que xj,Sí.j▪ ▪ Lj{displaystyle ¿Qué? y

r()x1)⩽ ⩽ r()x2)⩽ ⩽ ⋯ ⋯ ⩽ ⩽ λ λ maxr()Sí.1)⩾ ⩾ r()Sí.2)⩾ ⩾ ⋯ ⋯ ⩾ ⩾ λ λ min{displaystyle {begin{aligned}r(x_{1}) {leqslant r(x_{2})leqslant cdots leqslant lambda _{max }r(y_{1}) adultgeqslant r(y_{2}

Entonces surge la pregunta de cómo elegir los subespacios para que estas secuencias converjan a un ritmo óptimo.

Desde xj{displaystyle x_{j}, la dirección óptima en la que buscar mayores valores r{displaystyle r} es el del gradiente Silencio Silencio r()xj){displaystyle nabla r(x_{j})}, y también de Sí.j{displaystyle y_{j} la dirección óptima en la que buscar valores más pequeños r{displaystyle r} es el del gradiente negativo − − Silencio Silencio r()Sí.j){displaystyle -nabla r(y_{j}}. En general

Silencio Silencio r()x)=2xAlternativa Alternativa x()Ax− − r()x)x),{displaystyle nabla r(x)={frac {2}{x^{*}x}(Ax-r(x)x),}

por lo que las direcciones de interés son lo suficientemente fáciles para calcular en matriz aritmética, pero si uno desea mejorar en ambos xj{displaystyle x_{j} y Sí.j{displaystyle y_{j} entonces hay dos nuevas direcciones para tener en cuenta: Axj{displaystyle Ax_{j} y ASí.j;{displaystyle Ay... desde entonces xj{displaystyle x_{j} y Sí.j{displaystyle y_{j} pueden ser vectores linealmente independientes (de hecho, están cerca de ortogonal), uno no puede esperar en general Axj{displaystyle Ax_{j} y ASí.j{displaystyle Ay. para ser paralelo. No es necesario aumentar la dimensión de Lj{fnMicrosoft Sans Serif} {fnMicrosoft Sans Serif} por 2{displaystyle 2} en cada paso si {}Lj}j=1m{displaystyle {fnK} {fnh}\fnh} {fnh} {fnh} {fnh}} {fn}}\fn}\fn}\fn}\\fn}}\\\\\\\cH3}}}\\\\\\\fn}}}\\\\\\\\\\\\\\\\\cH3}}}}}}}}}}}}}}}}}}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\cH3}}}}}}}}}}} son tomados para ser subespacios Krylov, porque entonces Az▪ ▪ Lj+1{displaystyle Az. para todos z▪ ▪ Lj,{displaystyle zin {fnMitcal {L}_{j},} en particular para ambos z=xj{displaystyle z=x_{j} y z=Sí.j{displaystyle z=y_{j}.

En otras palabras, podemos empezar con algún vector inicial arbitrario x1=Sí.1,{displaystyle x_{1}=y_{1} construir los espacios vectoriales

Lj=lapso⁡ ⁡ ()x1,Ax1,... ... ,Aj− − 1x1){displaystyle {mathcal {}_{j}=operatorname {span} (x_{1},Ax_{1},ldotsA^{j-1}x_{1}}

y luego buscar xj,Sí.j▪ ▪ Lj{displaystyle ¿Qué? tales que

r()xj)=maxz▪ ▪ Ljr()z)yr()Sí.j)=minz▪ ▪ Ljr()z).{displaystyle r(x_{j})=max _{zin {fnMitcal {fnMicrosoft Sans Serif}qquad r(y_{j})=min _{zin {mthcal}_{j}r(z). }

Desde j{displaystyle j}el método de energía iterate uj{displaystyle u_{j} pertenece a Lj,{displaystyle {mathcal {}_{j}} sigue que una iteración para producir xj{displaystyle x_{j} y Sí.j{displaystyle y_{j} no puede converger más lento que el del método de energía, y logrará más aproximando ambos extremos eigenvalue. Para el subproblema de optimizar r{displaystyle r} algunos Lj{fnMicrosoft Sans Serif} {fnMicrosoft Sans Serif}, es conveniente tener una base ortonormal {}v1,... ... ,vj}{displaystyle {v_{1},ldotsv_{j}}} para este espacio vectorial. Por lo tanto, estamos nuevamente llevados al problema de calcular iterativamente tal base para la secuencia de subespacios de Krylov.

Convergencia y otras dinámicas

Al analizar la dinámica del algoritmo, es conveniente tomar los eigenvalues y eigenvectores de A{displaystyle A} como se da, aunque no sean explícitamente conocidos por el usuario. Para fijar la notación, λ λ 1⩾ ⩾ λ λ 2⩾ ⩾ ⋯ ⋯ ⩾ ⩾ λ λ n{displaystyle lambda _{1}geqslant lambda _{2}geqslant dotsb geqslant lambda ¿Qué? ser los eigenvalues (estos son conocidos por todos ser reales, y por lo tanto posible para ordenar) y dejar z1,... ... ,zn{displaystyle z_{1},dotscz_{n} ser un conjunto ortonormal de eigenvectores tal que Azk=λ λ kzk{displaystyle Az_{k}=lambda ¿Qué? para todos k=1,... ... ,n{displaystyle k=1,dotscn}.

También es conveniente fijar una notación para los coeficientes del vector Lanczos inicial v1{displaystyle v_{1} con respecto a esta eigenbasis; dk=zkAlternativa Alternativa v1{displaystyle ¿Qué? para todos k=1,... ... ,n{displaystyle k=1,dotscn}Así que v1=. . k=1ndkzk{displaystyle textstyle v_{1}=sum ¿Qué?. Un vector inicial v1{displaystyle v_{1} El agotamiento de algunos eigencomponentes retrasará la convergencia al eigenvalue correspondiente, e incluso aunque esto simplemente salga como un factor constante en los límites del error, el agotamiento sigue siendo indeseable. Una técnica común para evitar ser golpeada constantemente por él es elegir v1{displaystyle v_{1} por primera vez dibujar los elementos aleatoriamente según la misma distribución normal con media 0{displaystyle 0} y luego reescala el vector a la norma 1{displaystyle 1}. Antes de la escalada, esto causa los coeficientes dk{displaystyle ♪♪ ser independiente normalmente distribuida variables estocásticas de la misma distribución normal (ya que el cambio de coordenadas es unitario), y después de escalar el vector ()d1,... ... ,dn){displaystyle (d_{1},dotscd_{n}} tendrá una distribución uniforme en el ámbito de la unidad en Cn{displaystyle mathbb {C} {n}}. Esto hace posible ligar la probabilidad de que por ejemplo <math alttext="{displaystyle |d_{1}|Silenciod1Silencioc)ε ε {displaystyle Silencio.<img alt="{displaystyle |d_{1}|.

El hecho de que el algoritmo de Lanczos es coordinámica – las operaciones sólo miran los productos interiores de vectores, nunca en elementos individuales de vectores – hace fácil construir ejemplos con eigenestructura conocida para ejecutar el algoritmo en: A{displaystyle A} una matriz diagonal con los eigenvalues deseados en la diagonal; siempre y cuando el vector inicial v1{displaystyle v_{1} tiene suficientes elementos no cero, el algoritmo producirá una matriz simétrica tridiagonal general como T{displaystyle T}.

Teoría de la convergencia de Kaniel-Paige

Después m{displaystyle m} pasos de la iteración del algoritmo Lanczos, T{displaystyle T} es un m× × m{displaystyle mtimes m} matriz simétrica real, que similarmente a lo anterior tiene m{displaystyle m} eigenvalues Silencio Silencio 1⩾ ⩾ Silencio Silencio 2⩾ ⩾ ⋯ ⋯ ⩾ ⩾ Silencio Silencio m.{displaystyle theta _{1}geqslant theta _{2}geqslant dots geqslant theta _{m} Por convergencia se entiende principalmente la convergencia Silencio Silencio 1{displaystyle theta ¿Qué? a λ λ 1{displaystyle lambda ¿Qué? (y la convergencia simétrica de Silencio Silencio m{displaystyle theta ¿Qué? a λ λ n{displaystyle lambda ¿Qué?como m{displaystyle m} crece, y en segundo lugar la convergencia de algún rango Silencio Silencio 1,... ... ,Silencio Silencio k{displaystyle theta _{1},ldotstheta ¿Qué? of eigenvalues of T{displaystyle T} a sus homólogos λ λ 1,... ... ,λ λ k{displaystyle lambda _{1},ldotslambda ¿Qué? de A{displaystyle A}. La convergencia para el algoritmo Lanczos es a menudo órdenes de magnitud más rápido que eso para el algoritmo de iteración de energía.

Los límites para Silencio Silencio 1{displaystyle theta ¿Qué? proviene de la interpretación anterior de eigenvalues como valores extremos del cociente Rayleigh r()x){displaystyle r(x)}. Desde λ λ 1{displaystyle lambda ¿Qué? es a priori el máximo r{displaystyle r} en todo el Cn,{displaystyle mathbb {C} } mientras que Silencio Silencio 1{displaystyle theta ¿Qué? es simplemente el máximo en un m{displaystyle m}-dimensional Subespacial de Krylov, trivialmente obtenemos λ λ 1⩾ ⩾ Silencio Silencio 1{displaystyle lambda _{1}geqslant theta ¿Qué?. Por el contrario, cualquier punto x{displaystyle x} en que el subespacio Krylov proporciona un límite inferior r()x){displaystyle r(x)} para Silencio Silencio 1{displaystyle theta ¿Qué?, así que si se puede exhibir un punto λ λ 1− − r()x){displaystyle lambda _{1}-r(x)} es pequeño entonces esto proporciona un límite apretado Silencio Silencio 1{displaystyle theta ¿Qué?.

La dimensión m{displaystyle m} El subespacio de Krylov

lapso⁡ ⁡ {}v1,Av1,A2v1,... ... ,Am− − 1v1},{displaystyle operatorname {span} left{v_{1},Av_{1},A^{2}v_{1},ldotsA^{m-1}v_{1}right}

para que cualquier elemento de ella pueda expresarse como p()A)v1{displaystyle p(A)v_{1} para algunos polinomios p{displaystyle p} de grado en la mayoría m− − 1{displaystyle m-1}; los coeficientes de ese polinomio son simplemente los coeficientes en la combinación lineal de los vectores v1,Av1,A2v1,... ... ,Am− − 1v1{displaystyle v_{1},Av_{1},A^{2}v_{1},ldotsA^{m-1}v_{1}}. El polinomio que queremos resultará tener coeficientes reales, pero por el momento debemos permitir también los coeficientes complejos, y escribiremos pAlternativa Alternativa {displaystyle p^{*} para el polinomio obtenido por complejo conjugando todos los coeficientes de p{displaystyle p}. En esta parametrización del subespacio Krylov, tenemos

r()p()A)v1)=()p()A)v1)Alternativa Alternativa Ap()A)v1()p()A)v1)Alternativa Alternativa p()A)v1=v1Alternativa Alternativa p()A)Alternativa Alternativa Ap()A)v1v1Alternativa Alternativa p()A)Alternativa Alternativa p()A)v1=v1Alternativa Alternativa pAlternativa Alternativa ()AAlternativa Alternativa )Ap()A)v1v1Alternativa Alternativa pAlternativa Alternativa ()AAlternativa Alternativa )p()A)v1=v1Alternativa Alternativa pAlternativa Alternativa ()A)Ap()A)v1v1Alternativa Alternativa pAlternativa Alternativa ()A)p()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}{1}{*}p(A)^{*}p(A)v_{1}}={frac}=frac ¿Qué? Ap(A)v_{1}{1}{*}p^{*}(A^{*}p(A)v_{1}}={frac Ap (A)v_{1}{*}{*}p^{*}(A)p(A)v_{1}}}} {*}p^{*}(A)p(A)v_{1}}}}}}} {cH}}}} {f}} {c]} {cH00_}}}}}}}}}}}}} {}} {}}}}} {}}}}}}}}} {p}}}}}}} {p} {p}p} {p}p}p}p}p}p}p} {p}p}p}p} {p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}p} {p}p}p}p}p}p} {p}p}p} {p}p}p}p}p}p}p}p}p}p}p}p}p}p}p}

Usando ahora la expresión para v1{displaystyle v_{1} como una combinación lineal de eigenvectores, obtenemos

Av1=A. . k=1ndkzk=. . k=1ndkλ λ kzk{displaystyle Av_{1}=Asum ¿Qué? ################################################################################################################################################################################################################################################################ ¿Qué?

y más en general

q()A)v1=. . k=1ndkq()λ λ k)zk{displaystyle q(A)v_{1}=sum ¿Qué? ¿Qué?

para cualquier polinomio q{displaystyle q}.

Así

λ λ 1− − r()p()A)v1)=λ λ 1− − v1Alternativa Alternativa . . k=1ndkpAlternativa Alternativa ()λ λ k)λ λ kp()λ λ k)zkv1Alternativa Alternativa . . k=1ndkpAlternativa Alternativa ()λ λ k)p()λ λ k)zk=λ λ 1− − . . k=1nSilenciodkSilencio2λ λ kp()λ λ k)Alternativa Alternativa p()λ λ k). . k=1nSilenciodkSilencio2p()λ λ k)Alternativa Alternativa p()λ λ k)=. . k=1nSilenciodkSilencio2()λ λ 1− − λ λ k)Silenciop()λ λ k)Silencio2. . k=1nSilenciodkSilencio2Silenciop()λ λ k)Silencio2.{displaystyle lambda _{1}-r(p(A)v_{1}=lambda ¿Qué? {fnK} {fnMicrosoft}} {fnK}} {fnK} {fnK}} {fn}}}} {fn} {fnK}}} {fnK}}}}}}}}} {fnK}}}}} {fnKf}}}}} {f}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} {be}}}}}}}}}}}}}}}}}}}} {be}}}}}}}}}}}}}}}}}}}}}}}}} {be}}}}}} {be}}}}}}}}}}}}}}}}}}}}}}}}}}}} {be}}}}}}}}}}}}}}}}}}}}}}}}}}} ¿Qué? lambda _{k})lambda _{k}p(lambda ¿Qué? ¿Por qué? ¿Qué? - ¿Por qué? ¿Por qué? ¿Por qué? _{1}-lambda _{k})left sometidap(lambda _{k})right sometida^{2}{sum ¿Por qué? ¿Qué?

Una diferencia clave entre numerador y denominador aquí es que el k=1{displaystyle k=1} el término desaparece en el numerador, pero no en el denominador. Así si uno puede elegir p{displaystyle p} para ser grande λ λ 1{displaystyle lambda ¿Qué? pero pequeño en todos los otros eigenvalues, uno conseguirá un vínculo estrecho en el error λ λ 1− − Silencio Silencio 1{displaystyle lambda ¿Qué? ¿Qué?.

Desde A{displaystyle A} tiene muchos más valores que p{displaystyle p} tiene coeficientes, esto puede parecer un orden alto, pero una forma de conocerlo es utilizar polinomios Chebyshev. Escritura ck{displaystyle C_{k} para el grado k{displaystyle k} Polinomio Chebyshev del primer tipo (lo que satisfice ck()#⁡ ⁡ x)=#⁡ ⁡ ()kx){displaystyle c_{k}(cos x)=cos(kx)} para todos x{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 ella. Con alguna escalada del argumento, podemos tener que mapear todos los eigenvalues excepto λ λ 1{displaystyle lambda ¿Qué? en [− − 1,1]{displaystyle [-1,1]}. Vamos.

p()x)=cm− − 1()2x− − λ λ 2− − λ λ nλ λ 2− − λ λ n){displaystyle p(x)=c_{m-1}left({frac {2x-lambda ¿Qué? ¿Qué? ¿Qué?

(en caso λ λ 2=λ λ 1{displaystyle lambda ##{2}=lambda ¿Qué?, utilizar en su lugar el mayor eigenvalue estrictamente menos que λ λ 1{displaystyle lambda ¿Qué?), entonces el valor máximo de Silenciop()λ λ k)Silencio2{fnMicrosoft Sans Serif} para k⩾ ⩾ 2{displaystyle kgeqslant 2} es 1{displaystyle 1} y el valor mínimo es 0{displaystyle 0}, entonces

λ λ 1− − Silencio Silencio 1⩽ ⩽ λ λ 1− − r()p()A)v1)=. . k=2nSilenciodkSilencio2()λ λ 1− − λ λ k)Silenciop()λ λ k)Silencio2. . k=1nSilenciodkSilencio2Silenciop()λ λ k)Silencio2⩽ ⩽ . . k=2nSilenciodkSilencio2()λ λ 1− − λ λ k)Silenciod1Silencio2Silenciop()λ λ 1)Silencio2⩽ ⩽ ()λ λ 1− − λ λ n). . k=2nSilenciodkSilencio2Silenciop()λ λ 1)Silencio2Silenciod1Silencio2.{displaystyle lambda ¿Qué? _{1}leqslant lambda _{1}-r(p(A)v_{1})={frac {sum ¿Qué? _{1}-lambda _{k}) ¿Por qué? {fnMicroc {fnMicroc} ¿Qué? _{1}-lambda _{k}}}{1}? {fnMicroc {fnMicrosoft} _{1}-lambda _{n})sum ¿Por qué?

Además

p()λ λ 1)=cm− − 1()2λ λ 1− − λ λ 2− − λ λ nλ λ 2− − λ λ n)=cm− − 1()2λ λ 1− − λ λ 2λ λ 2− − λ λ n+1);{displaystyle p(lambda _{1})=c_{m-1}left({frac {2lambda ¿Qué? ¿Qué? ¿Qué? ¿Qué? ¿Por qué? {lambda _{1}-lambda ¿Qué? ¿Qué?

la cantidad

*** *** =λ λ 1− − λ λ 2λ λ 2− − λ λ n{displaystyle rho ={frac {fnMicrode ¿Qué? ¿Qué? ¿Qué? ♪♪

(es decir, la relación entre el primer espacio propio y el diámetro del resto del espectro) es, por tanto, de importancia clave para la tasa de convergencia. tambien escribiendo

R=earcosh⁡ ⁡ ()1+2*** *** )=1+2*** *** +2*** *** 2+*** *** ,{displaystyle R=e^{operatorname {arcosh}=1+2rho +2{sqrt {rho ^{2}}}}

podemos concluir que

λ λ 1− − Silencio Silencio 1⩽ ⩽ ()λ λ 1− − λ λ n)()1− − Silenciod1Silencio2)cm− − 1()2*** *** +1)2Silenciod1Silencio2=1− − Silenciod1Silencio2Silenciod1Silencio2()λ λ 1− − λ λ n)1cosh2⁡ ⁡ ()()m− − 1)arcosh⁡ ⁡ ()1+2*** *** ))=1− − Silenciod1Silencio2Silenciod1Silencio2()λ λ 1− − λ λ n)4()Rm− − 1+R− − ()m− − 1))2⩽ ⩽ 41− − Silenciod1Silencio2Silenciod1Silencio2()λ λ 1− − λ λ n)R− − 2()m− − 1){displaystyle {begin{aligned}lambda ¿Qué? _{1}-lambda _{n})left(1-privd_{1}{2}right)}{c_{c_{2}}{c_{m-1}(2rho +1)^{2}hid_{1}{2}}}}}[6pt]} {={2}}}}}}} {[6pt]}}}}} {={={2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} { { { { { {= {= {= {=}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} {1-privd_{1}{2} {fn_{1} ¿Por qué? {1-privd_{1}{2} {fn_{1} ¿Por qué? (R^{m-1}+R^{-(m-1)}right)}[6pt] {1-privd_{1}{2} {fn_{1} ¿Por qué?

La tasa de convergencia está controlada principalmente por R{displaystyle R., ya que este límite se reduce por un factor R− − 2{displaystyle R^{-2} para cada iteración extra.

Para la comparación, se puede considerar cómo la tasa de convergencia del método de potencia depende de *** *** {displaystyle rho }, pero como el método de poder es sensible principalmente al cociente entre valores absolutos de los eigenvalues, necesitamos Silencioλ λ nSilencio⩽ ⩽ Silencioλ λ 2Silencio{displaystyle Silenciolambda _{n}Sobrevivirleqslant _{2} para el eigengap entre λ λ 1{displaystyle lambda ¿Qué? y λ λ 2{displaystyle lambda _{2} ser el dominante. Bajo esa limitación, el caso que más favorece el método de potencia es que λ λ n=− − λ λ 2{displaystyle lambda ¿Qué? ¿Qué?, así que considera eso. Tarde en el método de potencia, el vector de iteración:

u=()1− − t2)1/2z1+tz2. . z1+tz2,{displaystyle u=(1-t^{2})}{1/2}z_{1}+tz_{2}approx z_{1}+tz_{2}

donde cada nueva iteración multiplica eficazmente z2{displaystyle z_{2}-La libertad t{displaystyle t} por

λ λ 2λ λ 1=λ λ 2λ λ 2+()λ λ 1− − λ λ 2)=11+λ λ 1− − λ λ 2λ λ 2=11+2*** *** .{fnMicroc {fnMicrosoft {fnMicrosoft {fnMicrosoft {\fnMicrosoft {\\fnMicrosoft {\fnMicrosoft {\\\fnMicrosoft\\\fnMicrosoft\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ¿Qué? ¿Por qué? ¿Qué? ¿Qué? {1}{1+{frac {lambda ¿Qué? ¿Qué? ¿Qué? {1}{1+2rho}}

La estimación del valor propio más grande es entonces

uAlternativa Alternativa Au=()1− − t2)λ λ 1+t2λ λ 2,{displaystyle u^{*}Au=(1-t^{2}lambda ¿Qué? - ¿Qué?

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

λ λ 1− − uAlternativa Alternativa Au=()λ λ 1− − λ λ 2)t2,{displaystyle lambda - ¿Qué? ¿Qué?

que se reduce por un factor de ()1+2*** *** )− − 2{displaystyle (1+2rho)}{-2} para cada iteración. La diferencia así se reduce a eso entre 1+2*** *** {displaystyle 1+2rho} y R=1+2*** *** +2*** *** 2+*** *** {displaystyle R=1+2rho ¿Qué?. En el *** *** ≫ ≫ 1{displaystyle rho gg 1} región, este último es más como 1+4*** *** {displaystyle 1+4rho}, y realiza como el método de energía con un eigengap dos veces más grande; una mejora notable. El caso más difícil es sin embargo el de *** *** ≪ ≪ 1,{displaystyle rho ll 1,} en que R. . 1+2*** *** {displaystyle Rapprox 1+2{sqrt {rho }} es una mejora aún mayor en el eigengap; el *** *** ≫ ≫ 1{displaystyle rho gg 1} región es donde el algoritmo de la convergencia de Lanczos hace que más pequeña mejora en el método de potencia.

Estabilidad numérica

La estabilidad significa 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.

Para el algoritmo de Lanczos, se puede probar que con aritmética exacta, el conjunto de vectores v1,v2,⋯ ⋯ ,vm+1{displaystyle v_{1},v_{2},cdotsv_{m+1} construye un ortonormal base, y los eigenvalues/vectores resueltos son buenas aproximaciones a las de la matriz original. Sin embargo, en la práctica (como los cálculos se realizan en punto flotante aritmética donde la inexactitud es inevitable), la ortogonalidad se pierde rápidamente y en algunos casos el nuevo vector podría incluso depender linealmente del conjunto que ya está construido. Como resultado, algunos de los eigenvalues de la matriz tridiagonal resultante pueden no ser aproximaciones a la matriz original. Por lo tanto, el algoritmo Lanczos no es muy estable.

Los usuarios de este algoritmo deben poder encontrar y eliminar esos mensajes "falsos" valores propios. Las implementaciones prácticas del algoritmo Lanczos van en tres direcciones para combatir este problema de estabilidad:

  1. Prevenir la pérdida de ortogonalidad,
  2. Recuperar la ortogonalidad después de que se genere la base.
  3. Después de que se identifiquen los eigenvalues buenos y "espuriosos", retire los espurios.

Variaciones

Existen variaciones en el algoritmo de Lanczos donde 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 "bloque" Los algoritmos de Lanczos 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 un cierto número de iteraciones. Una de las variaciones reiniciadas más influyentes es el método Lanczos reiniciado implícitamente, que se implementa en ARPACK. Esto ha llevado a una serie de otras variaciones reiniciadas, como la bidiagonalización reiniciada de Lanczos. Otra variación reiniciada exitosa es el método Lanczos de reinicio grueso, que se implementó en un paquete de software llamado TRLan.

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 grandes matrices dispersas sobre campos finitos y el conjunto de personas interesadas en grandes problemas de valores propios apenas se superponen, esto a menudo también se denomina algoritmo de bloque de Lanczos sin causar una confusión irrazonable.

Aplicaciones

Los algoritmos de Lanczos son muy atractivos porque la multiplicación por A{displaystyle A,} es la única operación lineal a gran escala. Dado que los motores de recuperación de texto de largo plazo implementan esta operación, el algoritmo Lanczos se puede aplicar eficientemente a los documentos de texto (ver indexación semántica latente). Eigenvectors 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, así como en códigos de modelos de capas en física nuclear.

Implementaciones

La biblioteca NAG contiene varias rutinas para la solución de sistemas lineales a gran escala y problemas propios que utilizan el algoritmo de Lanczos.

MATLAB y GNU Octave vienen con ARPACK integrado. 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.

Hay disponible una implementación en Matlab del algoritmo Lanczos (tenga en cuenta los problemas de precisión) como parte del paquete Matlab de propagación de creencias gaussianas. La biblioteca de filtrado colaborativo GraphLab incorpora una implementación paralela a gran escala del algoritmo Lanczos (en C++) para multinúcleo.

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

Contenido relacionado

Conjunto vacío

En matemáticas, el conjunto vacío es el conjunto único que no tiene elementos; su tamaño o cardinalidad es cero. Algunas teorías axiomáticas de...

Historia de la lógica

La historia de la lógica se ocupa del estudio del desarrollo de la ciencia de la inferencia válida tal como se encuentran en el Organon, encontraron una...

Símbolo Mayor que (>)

El signo mayor que es un símbolo matemático que representa una desigualdad entre dos valores, el primer valor es mayor que el segundo valor (derecha). Se...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save