Articulo de referencia

Algoritmo de autovalores de divide y vencerás

Los algoritmos de autovalores de divide y vencerás son una clase de algoritmos para matrices simétricas hermíticas o reales que recientemente (alrededor de la década de 1990) se...

Los algoritmos de autovalores de divide y vencerás son una clase de algoritmos para matrices simétricas hermíticas o reales que recientemente (alrededor de la década de 1990) se han vuelto competitivos en términos de estabilidad y eficiencia con algoritmos más tradicionales como el algoritmo QR . El concepto básico detrás de estos algoritmos es el enfoque de divide y vencerás de la informática . Un problema de autovalores se divide en dos problemas de aproximadamente la mitad del tamaño, cada uno de ellos se resuelve recursivamente y los autovalores del problema original se calculan a partir de los resultados de estos problemas más pequeños.

Este artículo aborda la idea básica del algoritmo tal como lo propuso originalmente Cuppen en 1981, la cual no es numéricamente estable sin mejoras adicionales.

Fondo

Como ocurre con la mayoría de los algoritmos de valores propios para matrices hermíticas, el método de divide y vencerás comienza con una reducción a la forma tridiagonal . Para unmetro×metro{\displaystyle m\times m}matriz, el método estándar para esto, a través de las reflexiones de Householder , toma43metro3{\displaystyle {\frac {4}{3}}m^{3}}operaciones de punto flotante, o83metro3{\displaystyle {\frac {8}{3}}m^{3}}Si también se necesitan los autovectores . Existen otros algoritmos, como la iteración de Arnoldi , que pueden funcionar mejor para ciertas clases de matrices; no los analizaremos aquí con más detalle.

En ciertos casos, es posible descomponer un problema de valores propios en problemas más pequeños. Consideremos una matriz diagonal por bloques.

T=[T100T2].{\displaystyle T={\begin{bmatrix}T_{1}&0\\0&T_{2}\end{bmatrix}}.}

Los valores propios y los vectores propios deT{\displaystyle T}son simplemente los deT1{\displaystyle T_{1}}yT2{\displaystyle T_{2}}Y casi siempre será más rápido resolver estos dos problemas más pequeños que resolver el problema original de una sola vez. Esta técnica puede utilizarse para mejorar la eficiencia de muchos algoritmos de autovalores, pero tiene especial relevancia para la estrategia de divide y vencerás.

Para el resto de este artículo, asumiremos que la entrada al algoritmo de divide y vencerás es unametro×metro{\displaystyle m\times m}matriz tridiagonal simétrica realT{\displaystyle T}El algoritmo puede modificarse para matrices hermíticas.

Dividir

La parte de división del algoritmo de divide y vencerás surge de la constatación de que una matriz tridiagonal es "casi" diagonal por bloques.

El tamaño de la submatrizT1{\displaystyle T_{1}}llamaremosnorte×norte{\displaystyle n\times n}, y luegoT2{\displaystyle T_{2}}es(metronorte)×(metronorte){\displaystyle (mn)\times (mn)}. T{\displaystyle T}es casi diagonal de bloques independientemente de cómonorte{\displaystyle n}se elige. Para mayor eficiencia, normalmente elegimosnortemetro/2{\displaystyle n\approx m/2}.

EscribimosT{\displaystyle T}como una matriz diagonal por bloques, más una corrección de rango 1 :

La única diferencia entreT1{\displaystyle T_{1}}yT^1{\displaystyle {\hat {T}}_{1}}es que la entrada inferior derechatnortenorte{\displaystyle t_{nn}}enT^1{\displaystyle {\hat {T}}_{1}}ha sido reemplazado portnortenorteβ{\displaystyle t_{nn}-\beta }y de manera similar, enT^2{\displaystyle {\hat {T}}_{2}}la entrada superior izquierdatnorte+1,norte+1{\displaystyle t_{n+1,n+1}}ha sido reemplazado portnorte+1,norte+1β{\displaystyle t_{n+1,n+1}-\beta }.

El resto del paso de división consiste en resolver para los valores propios (y si se desea, los vectores propios) deT^1{\displaystyle {\hat {T}}_{1}}yT^2{\displaystyle {\hat {T}}_{2}}, es decir, encontrar las diagonalizacionesT^1=Q1D1Q1T{\displaystyle {\hat {T}}_{1}=Q_{1}D_{1}Q_{1}^{T}}yT^2=Q2D2Q2T{\displaystyle {\hat {T}}_{2}=Q_{2}D_{2}Q_{2}^{T}}Esto se puede lograr con llamadas recursivas al algoritmo de divide y vencerás, aunque las implementaciones prácticas a menudo cambian al algoritmo QR desplazado implícitamente para submatrices suficientemente pequeñas. [ 1 ]

Conquistar

La parte de conquista del algoritmo es la menos intuitiva. Dadas las diagonalizaciones de las submatrices, calculadas anteriormente, ¿cómo hallamos la diagonalización de la matriz original?

Primero, definazT=(q1T,q2T){\displaystyle z^{T}=(q_{1}^{T},q_{2}^{T})}, dóndeq1T{\displaystyle q_{1}^{T}}es la última fila deQ1{\displaystyle Q_{1}}yq2T{\displaystyle q_{2}^{T}}es la primera fila deQ2{\displaystyle Q_{2}}Ahora es elemental demostrar que

T=[Q1Q2]([D1D2]+βzzT)[Q1TQ2T]{\displaystyle T={\begin{bmatrix}Q_{1}&\\&Q_{2}\end{bmatrix}}\left({\begin{bmatrix}D_{1}&\\&D_{2}\end{bmatrix}}+\beta zz^{T}\right){\begin{bmatrix}Q_{1}^{T}&\\&Q_{2}^{T}\end{bmatrix}}}

La tarea restante se ha reducido a encontrar los valores propios de una matriz diagonal más una corrección de rango uno. Antes de mostrar cómo hacerlo, simplifiquemos la notación. Buscamos los valores propios de la matrizD+wwT{\displaystyle D+ww^{T}}, dóndeD{\displaystyle D}es diagonal con entradas distintas yw{\displaystyle w}es cualquier vector con entradas distintas de cero. En este casow=|β|z{\displaystyle w={\sqrt {|\beta |}}\cdot z}.

El caso de una entrada cero es simple, ya que si w i es cero, (mii{\displaystyle e_{i}},d i ) es un par propio (mii{\displaystyle e_{i}}está en la base estándar) deD+wwT{\displaystyle D+ww^{T}}desde (D+wwT)mii=Dmii=dimii{\displaystyle (D+ww^{T})e_{i}=De_{i}=d_{i}e_{i}}.

Siλ{\displaystyle \lambda }es un valor propio, tenemos:

(D+wwT)q=λq{\displaystyle (D+ww^{T})q=\lambda q}

dóndeq{\displaystyle q}es el vector propio correspondiente. Ahora

(DλI)q+w(wTq)=0{\displaystyle (D-\lambda I)q+w(w^{T}q)=0}
q+(DλI)1w(wTq)=0{\displaystyle q+(D-\lambda I)^{-1}w(w^{T}q)=0}
wTq+wT(DλI)1w(wTq)=0{\displaystyle w^{T}q+w^{T}(D-\lambda I)^{-1}w(w^{T}q)=0}

Ten en cuenta quewTq{\displaystyle w^{T}q}es un escalar distinto de cero.w{\displaystyle w}niq{\displaystyle q}son cero. SiwTq{\displaystyle w^{T}q}si fueran cero,q{\displaystyle q}sería un vector propio deD{\displaystyle D}por(D+wwT)q=λq{\displaystyle (D+ww^{T})q=\lambda q}Si ese fuera el caso,q{\displaystyle q}contendría solo una posición distinta de cero ya queD{\displaystyle D}es diagonal distinta y por lo tanto el producto internowTq{\displaystyle w^{T}q}Después de todo, no puede ser cero. Por lo tanto, tenemos:

1+wT(DλI)1w=0{\displaystyle 1+w^{T}(D-\lambda I)^{-1}w=0}

o escrita como una ecuación escalar,

1+j=1metrowj2djλ=0.{\displaystyle 1+\sum _{j=1}^{m}{\frac {w_{j}^{2}}{d_{j}-\lambda }}=0.}

Esta ecuación se conoce como la ecuación secular . Por lo tanto, el problema se ha reducido a hallar las raíces de la función racional definida por el lado izquierdo de esta ecuación.

La resolución de la ecuación secular no lineal se puede realizar utilizando una técnica iterativa, como el método de Newton-Raphson . Sin embargo, cada raíz se puede encontrar en O (1) iteraciones, cada una de las cuales requiereΘ(metro){\displaystyle \Theta (m)}fracasos (para unmetro{\displaystyle m}-función racional de grado), lo que hace que el costo de la parte iterativa de este algoritmoΘ(metro2){\displaystyle \Theta (m^{2})}. El método multipolar rápido también se ha empleado para resolver la ecuación secular enΘ(metroregistro(metro)){\displaystyle \Theta (m\log(m))}operaciones. [ 2 ] [ 1 ]

Análisis

W utilizará el teorema maestro para recurrencias de divide y vencerás para analizar el tiempo de ejecución. Recuerda que arriba dijimos que elegimosnortemetro/2{\displaystyle n\approx m/2}Podemos escribir la relación de recurrencia :

T(metro)=2×T(metro2)+Θ(metro2){\displaystyle T(m)=2\times T\left({\frac {m}{2}}\right)+\Theta (m^{2})}

En la notación del teorema maestro,a=b=2{\displaystyle a=b=2}y por lo tantoregistroba=1{\displaystyle \log _{b}a=1}. Claramente,Θ(metro2)=Ω(metro1){\displaystyle \Theta (m^{2})=\Omega (m^{1})}, así que tenemos

T(metro)=Θ(metro2){\displaystyle T(m)=\Theta (m^{2})}

Anteriormente, señalamos que reducir una matriz hermitiana a forma tridiagonal requiere43metro3{\displaystyle {\frac {4}{3}}m^{3}}fallos. Esto empequeñece el tiempo de ejecución de la parte de divide y vencerás, y en este punto no está claro qué ventaja ofrece el algoritmo de divide y vencerás sobre el algoritmo QR (que también tomaΘ(metro2){\displaystyle \Theta (m^{2})}flops para matrices tridiagonales).

La ventaja de dividir y conquistar se presenta cuando también se necesitan los autovectores. Si este es el caso, la reducción a la forma tridiagonal toma83metro3{\displaystyle {\frac {8}{3}}m^{3}}, pero la segunda parte del algoritmo tomaΘ(metro3){\displaystyle \Theta (m^{3})}También. Para el algoritmo QR con una precisión objetivo razonable, esto es6metro3{\displaystyle \approx 6m^{3}}, mientras que para la estrategia de divide y vencerás es43metro3{\displaystyle \approx {\frac {4}{3}}m^{3}}. La razón de esta mejora es que en divide y vencerás, elΘ(metro3){\displaystyle \Theta (m^{3})}parte del algoritmo (multiplicandoQ{\displaystyle Q}matrices) es independiente de la iteración, mientras que en QR, esto debe ocurrir en cada paso iterativo. Agregar la83metro3{\displaystyle {\frac {8}{3}}m^{3}}fracasos para la reducción, la mejora total es de9metro3{\displaystyle \approx 9m^{3}}a4metro3{\displaystyle \approx 4m^{3}}fracasos.

El uso práctico del algoritmo de divide y vencerás ha demostrado que, en la mayoría de los problemas de valores propios realistas, el algoritmo en realidad funciona mejor que esto. La razón es que muy a menudo las matricesQ{\displaystyle Q}y los vectoresz{\displaystyle z}Suelen ser numéricamente dispersos , lo que significa que tienen muchas entradas con valores menores que la precisión de punto flotante , lo que permite la deflación numérica , es decir, dividir el problema en subproblemas desacoplados.

Variantes e implementación

El algoritmo que se presenta aquí es la versión más sencilla. En muchas implementaciones prácticas, se utilizan correcciones de rango 1 más complejas para garantizar la estabilidad; algunas variantes incluso utilizan correcciones de rango 2.

Existen técnicas especializadas para encontrar raíces de funciones racionales que pueden superar al método de Newton-Raphson en rendimiento y estabilidad. Estas técnicas pueden utilizarse para mejorar la parte iterativa del algoritmo de divide y vencerás.

El algoritmo de divide y vencerás se puede paralelizar fácilmente , y los paquetes de cálculo de álgebra lineal , como LAPACK, contienen implementaciones paralelas de alta calidad.

Referencias

  1. 1 2 Demmel, James W. (1997). Álgebra lineal numérica aplicada (PDF) . Sociedad de Matemáticas Industriales y Aplicadas. págs. 216–228 . ISBN  9780898713893.
  2. Livne, Oren E.; Brandt, Achi. "N raíces de la ecuación secular en O(N) operaciones" . SIAM Journal on Matrix Analysis and Applications . 24 (2): 439– 453. doi : 10.1137/S0895479801383695 . ISSN 0895-4798 .