Articulo de referencia

Iteración de potencia

En matemáticas , la iteración de potencia (también conocida como método de potencia ) es un algoritmo de valores propios : dada una matriz diagonalizable A {\displaystyle A} , e...

En matemáticas , la iteración de potencia (también conocida como método de potencia ) es un algoritmo de valores propios : dada una matriz diagonalizableA{\displaystyle A}, el algoritmo producirá un númeroλ{\displaystyle \lambda }, que es el mayor valor propio (en valor absoluto) deA{\displaystyle A}y un vector distinto de cerov{\displaystyle v}, que es un vector propio correspondiente deλ{\displaystyle \lambda }, eso es,Av=λv{\displaystyle Av=\lambda v}El algoritmo también se conoce como iteración de Von Mises . [ 1 ]

La iteración de potencia es un algoritmo muy simple, pero puede converger lentamente. La operación que consume más tiempo del algoritmo es la multiplicación de matrices.A{\displaystyle A}mediante un vector, por lo que resulta eficaz para una matriz dispersa muy grande con la implementación adecuada. La velocidad de convergencia es como(λ2/λ1)k{\displaystyle (\lambda _{2}/\lambda _{1})^{k}}dóndek{\displaystyle k}es el número de iteraciones, yλ1{\displaystyle \lambda _{1}}y λ2{\displaystyle \lambda _{2}}son, respectivamente, el autovalor de mayor valor absoluto y un autovalor de segundo mayor valor absoluto (véase una sección posterior ). En otras palabras, la convergencia es exponencial con base en la brecha espectral .

El método

Animación que visualiza el algoritmo de iteración de potencia en una matriz de 2 x 2. La matriz se representa mediante sus dos vectores propios. El error se calcula como||aproximaciónvector propio más grande||{\displaystyle ||{\text{aproximación}}-{\text{vector propio más grande}}||}

El algoritmo de iteración de potencia comienza con un vectorb0{\displaystyle b_{0}}, que puede ser una aproximación al vector propio dominante o un vector aleatorio. El método se describe mediante la relación de recurrencia.

bk+1=AbkAbk{\displaystyle b_{k+1}={\frac {Ab_{k}}{\lVert Ab_{k}\rVert }}}

Así, en cada iteración, el vectorbk{\displaystyle b_{k}}se multiplica por la matrizA{\displaystyle A}y normalizado.

Si asumimosA{\displaystyle A}tiene un valor propio que es estrictamente mayor en magnitud que sus otros valores propios, es decir,

|λ1|>|λ2||λnorte|0{\displaystyle \left\vert \lambda _{1}\right\vert >\left\vert \lambda _{2}\right\vert \geq \ldots \geq \left\vert \lambda _{n}\right\vert \geq 0}

y el vector inicialb0{\displaystyle b_{0}}tiene un componente distinto de cero en la dirección de un vector propio asociado con el valor propio dominante, entonces una subsecuencia(bk){\displaystyle \left(b_{k}\right)}converge a un vector propio asociado con el valor propio dominante.

Sin las dos suposiciones anteriores, la secuencia(bk){\displaystyle \left(b_{k}\right)}no necesariamente converge. En esta secuencia,

bk=miiϕkv1+rk{\ Displaystyle b_ {k} = e ^ {i \ phi _ {k}} v_ {1} + r_ {k}},

dóndev1{\displaystyle v_{1}}es un vector propio asociado con el valor propio dominante, yrk0{\displaystyle \|r_{k}\|\rightarrow 0}. La presencia del términomiiϕk{\displaystyle e^{i\phi _ {k}}}implica que(bk){\displaystyle \left(b_{k}\right)}no converge a menos quemiiϕk=1{\displaystyle e^{i\phi _ {k}}=1}Bajo las dos suposiciones enumeradas anteriormente, la secuencia(μk){\displaystyle \left(\mu _{k}\right)}definido por

μk=bkAbkbkbk{\displaystyle \mu _{k}={\frac {b_{k}^{*}Ab_{k}}{b_{k}^{*}b_{k}}}}

converge al valor propio dominante (con cociente de Rayleigh ).

Esto se puede calcular con el siguiente algoritmo (mostrado en Python con NumPy):

import numpy as npfrom numpy import typing as nptdef random_vector ( dimensión : int ) -> npt . NDArray [ np . float64 ]:rng = np.random.default_rng ( )devolver rng.random ( dimensión )def método_de_potencia (R : npt . NDArray [ np . flotador64 ],num_iteraciones : int ,) -> tnp . NDArray [ np . flotador64 ]:Si A.forma [ 0 ] ! = A.forma [ 1 ] :generar ValueError ( "A debe ser una matriz cuadrada." )# Elija un vector inicial aleatorio para reducir la probabilidad# que sea ortogonal al vector propio dominante.b_k = vector_aleatorio ( A . forma [ 1 ])# Normalizar el vector inicial.b_k /= np . linalg . norm ( b_k )para _ en rango ( num_iteraciones ):# Multiplicar por la matriz.b_k1 = A @ b_k# Calcula la longitud del nuevo vector.b_k1_norm = np . linalg . norm ( b_k1 )# Detenerse si el nuevo vector está dentro de la precisión de la máquina de 0.Si np.isclose ( b_k1_norm , 0.0 ) :generar ValueError ( "El método Power produjo el vector cero." )# Normaliza el vector para la siguiente iteración.b_k = b_k1 / b_k1_norm# Devuelve el vector propio dominante aproximado.devolver b_k

El vectorbk{\displaystyle b_{k}}converge a un vector propio asociado. Idealmente, se debería usar el cociente de Rayleigh para obtener el valor propio asociado.

Este algoritmo se utiliza para calcular el PageRank de Google .

El método también se puede utilizar para calcular el radio espectral (el valor propio con la mayor magnitud, para una matriz cuadrada) calculando el cociente de Rayleigh.

ρ(A)=máximo{|λ1|,|λ2|,,|λnorte|}=bkAbkbkbk.{\displaystyle \rho (A)=\max \left\{\vert \lambda _{1}\vert ,\vert \lambda _{2}\vert ,\ldots ,\vert \lambda _{n}\vert \right\}={\frac {b_{k}^{\top }Ab_{k}}{b_{k}^{\top }b_{k}}}.}

Análisis

DejarA{\displaystyle A}descomponerse en su forma canónica de Jordan :A=VJV1{\displaystyle A=VJV^{-1}}, donde la primera columna deV{\displaystyle V}es un vector propio deA{\displaystyle A}correspondiente al valor propio dominanteλ1{\displaystyle \lambda _{1}}Dado que, en general , el valor propio dominante deA{\displaystyle A}es único, el primer bloque de Jordan deJ{\displaystyle J}es el1×1{\displaystyle 1\times 1}matriz[λ1],{\displaystyle [\lambda _{1}],}dóndeλ1{\displaystyle \lambda _{1}}es el mayor valor propio deA{\displaystyle A}en magnitud. El vector inicialb0{\displaystyle b_{0}}se puede escribir como una combinación lineal de las columnas deV{\displaystyle V}:

b0=do1v1+do2v2++donortevnorte.{\displaystyle b_{0}=c_{1}v_{1}+c_{2}v_{2}+\ldots +c_{n}v_{n}.}

Por suposición,b0{\displaystyle b_{0}}tiene un componente distinto de cero en la dirección del vector propio dominante, por lo quedo10{\displaystyle c_{1}\neq 0}.

La relación de recurrencia computacionalmente útil parabk+1{\displaystyle b_{k+1}}se puede reescribir como:

bk+1=AbkAbk=Ak+1b0Ak+1b0,{\displaystyle b_{k+1}={\frac {Ab_{k}}{\|Ab_{k}\|}}={\frac {A^{k+1}b_{0}}{\|A^{k+1}b_{0}\|}},}

donde la expresión:Ak+1b0Ak+1b0{\displaystyle {\frac {A^{k+1}b_{0}}{\|A^{k+1}b_{0}\|}}}se presta mejor al siguiente análisis:

bk=Akb0Akb0=(VJV1)kb0(VJV1)kb0(desdeAes diagonalizable)=VJkV1b0VJkV1b0=VJkV1(do1v1+do2v2++donortevnorte)VJkV1(do1v1+do2v2++donortevnorte)=VJk(do1mi1+do2mi2++donorteminorte)VJk(do1mi1+do2mi2++donorteminorte)=(λ1|λ1|)kdo1|do1|v1+1do1V(1λ1J)k(do2mi2++donorteminorte)v1+1do1V(1λ1J)k(do2mi2++donorteminorte){\displaystyle {\begin{aligned}b_{k}&={\frac {A^{k}b_{0}}{\|A^{k}b_{0}\|}}\\&={\frac {\left(VJV^{-1}\right)^{k}b_{0}}{\|\left(VJV^{-1}\right)^{k}b_{0}\|}}\quad {\text{(since}}\,A\,{\text{is diagonalizable)}}\\&={\frac {VJ^{k}V^{-1}b_{0}}{\|VJ^{k}V^{-1}b_{0}\|}}\\&={\frac {VJ^{k}V^{-1}\left(c_{1}v_{1}+c_{2}v_{2}+\cdots +c_{n}v_{n}\right)}{\|VJ^{k}V^{-1}\left(c_{1}v_{1}+c_{2}v_{2}+\cdots +c_{n}v_{n}\right)\|}}\\&={\frac {VJ^{k}\left(c_{1}e_{1}+c_{2}e_{2}+\cdots +c_{n}e_{n}\right)}{\|VJ^{k}\left(c_{1}e_{1}+c_{2}e_{2}+\cdots +c_{n}e_{n}\right)\|}}\\&=\left({\frac {\lambda _{1}}{|\lambda _{1}|}}\right)^{k}{\frac {c_{1}}{|c_{1}|}}{\frac {v_{1}+{\frac {1}{c_{1}}}V\left({\frac {1}{\lambda _{1}}}J\right)^{k}\left(c_{2}e_{2}+\cdots +c_{n}e_{n}\right)}{\left\|v_{1}+{\frac {1}{c_{1}}}V\left({\frac {1}{\lambda _{1}}}J\right)^{k}\left(c_{2}e_{2}+\cdots +c_{n}e_{n}\right)\right\|}}\end{aligned}}}

La expresión anterior se simplifica comok{\displaystyle k\to \infty }

(1λ1J)k=[[1](1λ1J2)k(1λ1Jmetro)k][100]comok.{\displaystyle \left({\frac {1}{\lambda _{1}}}J\right)^{k}={\begin{bmatrix}[1]&&&&\\&\left({\frac {1}{\lambda _{1}}}J_{2}\right)^{k}&&&\\&&\ddots &\\&&&\left({\frac {1}{\lambda _{1}}}J_{m}\right)^{k}\\\end{bmatrix}}\rightarrow {\begin{bmatrix}1&&&&\\&0&&&\\&&\ddots &\\&&&0\\\end{bmatrix}}\quad {\text{as}}\quad k\to \infty .}

El límite se deduce del hecho de que el valor propio de1λ1Ji{\displaystyle {\frac {1}{\lambda _{1}}}J_{i}}es menor que 1 en magnitud, por lo tanto

(1λ1Ji)k0comok.{\displaystyle \left({\frac {1}{\lambda _{1}}}J_{i}\right)^{k}\to 0\quad {\text{as}}\quad k\to \infty .}

Resulta que:

1do1V(1λ1J)k(do2mi2++donorteminorte)0comok{\displaystyle {\frac {1}{c_{1}}}V\left({\frac {1}{\lambda _{1}}}J\right)^{k}\left(c_{2}e_{2}+\cdots +c_{n}e_{n}\right)\to 0\quad {\text{as}}\quad k\to \infty }

Utilizando este hecho,bk{\displaystyle b_{k}}puede escribirse de una forma que enfatice su relación conv1{\displaystyle v_{1}}cuandok{\displaystyle k}es grande:

bk=(λ1|λ1|)kdo1|do1|v1+1do1V(1λ1J)k(do2mi2++donorteminorte)v1+1do1V(1λ1J)k(do2mi2++donorteminorte)=miiϕkdo1|do1|v1v1+rk{\displaystyle {\begin{aligned}b_{k}&=\left({\frac {\lambda _{1}}{|\lambda _{1}|}}\right)^{k}{\frac {c_{1}}{|c_{1}|}}{\frac {v_{1}+{\frac {1}{c_{1}}}V\left({\frac {1}{\lambda _{1}}}J\right)^{k}\left(c_{2}e_{2}+\cdots +c_{n}e_{n}\right)}{\left\|v_{1}+{\frac {1}{c_{1}}}V\left({\frac {1}{\lambda _{1}}}J\right)^{k}\left(c_{2}e_{2}+\cdots +c_{n}e_{n}\right)\right\|}}\\[6pt]&=e^{i\phi _{k}}{\frac {c_{1}}{|c_{1}|}}{\frac {v_{1}}{\|v_{1}\|}}+r_{k}\end{aligned}}}

dóndemiiϕk=(λ1/|λ1|)k{\displaystyle e^{i\phi _{k}}=\left(\lambda _{1}/|\lambda _{1}|\right)^{k}}yrk0{\displaystyle \|r_{k}\|\to 0}comok{\displaystyle k\to \infty }

La secuencia(bk){\displaystyle \left(b_{k}\right)}está acotada, por lo que contiene una subsecuencia convergente. Nótese que el vector propio correspondiente al valor propio dominante es único salvo por un escalar, por lo que, aunque la secuencia(bk){\displaystyle \left(b_{k}\right)}puede que no converja, bk{\displaystyle b_{k}}es casi un vector propio deA{\displaystyle A}para grandesk{\displaystyle k}.

Alternativamente, siA{\displaystyle A}Si es diagonalizable , entonces la siguiente demostración produce el mismo resultado:

Dejarλ1,λ2,,λmetro{\displaystyle \lambda _{1},\lambda _{2},\ldots ,\lambda _{m}}ser elmetro{\displaystyle m}valores propios (contados con multiplicidad) deA{\displaystyle A}en orden descendente de valor absoluto (se permiten igualdades), es decir|λ1||λ2||λmetro|{\displaystyle |\lambda _{1}|\geq |\lambda _{2}|\ldots \geq |\lambda _{m}|}y dejarv1,v2,,vmetro{\displaystyle v_{1},v_{2},\ldots ,v_{m}}sean los vectores propios correspondientes. Supongamos queλ1{\displaystyle \lambda _{1}}es el valor propio dominante, de modo que|λ1|>|λj|{\displaystyle |\lambda _{1}|>|\lambda _{j}|}a pesar dej>1{\displaystyle j>1}.

El vector inicialb0{\displaystyle b_{0}}se puede escribir:

b0=do1v1+do2v2++dometrovmetro.{\displaystyle b_{0}=c_{1}v_{1}+c_{2}v_{2}+\cdots +c_{m}v_{m}.}

Sib0{\displaystyle b_{0}}se elige aleatoriamente (con probabilidad uniforme), entoncesdo10{\displaystyle c_{1}\neq 0}con probabilidad 1. Ahora,

Akb0=do1Akv1+do2Akv2++dometroAkvmetro=do1λ1kv1+do2λ2kv2++dometroλmetrokvmetro=do1λ1k(v1+do2do1(λ2λ1)kv2++dometrodo1(λmetroλ1)kvmetro)do1λ1kv1|λjλ1|<1 para j>1{\displaystyle {\begin{aligned}A^{k}b_{0}&=c_{1}A^{k}v_{1}+c_{2}A^{k}v_{2}+\cdots +c_{m}A^{k}v_{m}\\&=c_{1}\lambda _{1}^{k}v_{1}+c_{2}\lambda _{2}^{k}v_{2}+\cdots +c_{m}\lambda _{m}^{k}v_{m}\\&=c_{1}\lambda _{1}^{k}\left(v_{1}+{\frac {c_{2}}{c_{1}}}\left({\frac {\lambda _{2}}{\lambda _{1}}}\right)^{k}v_{2}+\cdots +{\frac {c_{m}}{c_{1}}}\left({\frac {\lambda _{m}}{\lambda _{1}}}\right)^{k}v_{m}\right)\\&\to c_{1}\lambda _{1}^{k}v_{1}&&\left|{\frac {\lambda _{j}}{\lambda _{1}}}\right|<1{\text{ for }}j>1\end{aligned}}}

Por otro lado:

bk=Akb0Akb0.{\displaystyle b_{k}={\frac {A^{k}b_{0}}{\|A^{k}b_{0}\|}}.}

Por lo tanto,bk{\displaystyle b_{k}}converge a (un múltiplo de) el vector propiov1{\displaystyle v_{1}}La convergencia es geométrica , con razón

|λ2λ1|.{\displaystyle \left|{\frac {\lambda _{2}}{\lambda _{1}}}\right|.}

Por lo tanto, el método converge lentamente si existe un valor propio de magnitud cercana al valor propio dominante.

Aplicaciones

Aunque el método de iteración de potencias solo aproxima un valor propio de una matriz, sigue siendo útil para ciertos problemas computacionales . Por ejemplo, Google lo utiliza para calcular el PageRank de los documentos en su motor de búsqueda [ 2 ] , y Twitter lo utiliza para mostrar a los usuarios recomendaciones sobre a quién seguir [ 3 ] . El método de iteración de potencias es especialmente adecuado para matrices dispersas , como la matriz web, o como método sin matriz que no requiere almacenar la matriz de coeficientes.A{\displaystyle A}explícitamente, pero en su lugar puede acceder a una función que evalúa productos matriz-vectorAincógnita{\displaystyle Ax}Para matrices no simétricas bien condicionadas , el método de iteración de potencias puede superar a la iteración de Arnoldi, más compleja . Para matrices simétricas, el método de iteración de potencias se usa raramente, ya que su velocidad de convergencia se puede aumentar fácilmente sin sacrificar el pequeño costo por iteración; véase, por ejemplo, la iteración de Lanczos y LOBPCG .

Algunos de los algoritmos de autovalores más avanzados pueden entenderse como variaciones de la iteración de potencia. Por ejemplo, el método de iteración inversa aplica la iteración de potencia a la matriz.A1{\displaystyle A^{-1}}Otros algoritmos analizan todo el subespacio generado por los vectores.bk{\displaystyle b_{k}}Este subespacio se conoce como subespacio de Krylov . Se puede calcular mediante la iteración de Arnoldi o la iteración de Lanczos . La iteración de Gram [ 4 ] es un método superlineal y determinista para calcular el par propio más grande.

Véase también

Referencias

  1. Richard von Mises y H. Pollaczek-Geiringer, Praktische Verfahren der Gleichungsauflösung , ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 9, 152-164 (1929).
  2. Ipsen, Ilse y Rebecca M. Wills (5–8 de mayo de 2005). "7º Simposio Internacional IMACS sobre Métodos Iterativos en Computación Científica" (PDF) . Fields Institute, Toronto, Canadá.{{cite news}}: CS1 maint: varios nombres: lista de autores ( enlace )
  3. Pankaj Gupta, Ashish Goel, Jimmy Lin, Aneesh Sharma, Dong Wang y Reza Bosagh Zadeh WTF: El sistema de a quién seguir en Twitter , Actas de la 22.ª conferencia internacional sobre la World Wide Web
  4. Delattre, B.; Barthélemy, Q.; Araujo, A.; Allauzen, A. (2023), " Límite eficiente de la constante de Lipschitz para capas convolucionales mediante iteración de Gram" , Actas de la 40.ª Conferencia Internacional sobre Aprendizaje Automático : 7513–7532
Obtenido de " https://en.wikipedia.org/w/index.php?title=Power_iteration&oldid=1353074721 "