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, el algoritmo producirá un número, que es el mayor valor propio (en valor absoluto) dey un vector distinto de cero, que es un vector propio correspondiente de, eso es,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.mediante un vector, por lo que resulta eficaz para una matriz dispersa muy grande con la implementación adecuada. La velocidad de convergencia es comodóndees el número de iteraciones, yy 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

El algoritmo de iteración de potencia comienza con un vector, 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.
Así, en cada iteración, el vectorse multiplica por la matrizy normalizado.
Si asumimostiene un valor propio que es estrictamente mayor en magnitud que sus otros valores propios, es decir,
y el vector inicialtiene un componente distinto de cero en la dirección de un vector propio asociado con el valor propio dominante, entonces una subsecuenciaconverge a un vector propio asociado con el valor propio dominante.
Sin las dos suposiciones anteriores, la secuenciano necesariamente converge. En esta secuencia,
- ,
dóndees un vector propio asociado con el valor propio dominante, y. La presencia del términoimplica queno converge a menos queBajo las dos suposiciones enumeradas anteriormente, la secuenciadefinido por
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_kEl vectorconverge 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.
Análisis
Dejardescomponerse en su forma canónica de Jordan :, donde la primera columna dees un vector propio decorrespondiente al valor propio dominanteDado que, en general , el valor propio dominante dees único, el primer bloque de Jordan dees elmatrizdóndees el mayor valor propio deen magnitud. El vector inicialse puede escribir como una combinación lineal de las columnas de:
Por suposición,tiene un componente distinto de cero en la dirección del vector propio dominante, por lo que.
La relación de recurrencia computacionalmente útil parase puede reescribir como:
donde la expresión:se presta mejor al siguiente análisis:
La expresión anterior se simplifica como
El límite se deduce del hecho de que el valor propio dees menor que 1 en magnitud, por lo tanto
Resulta que:
Utilizando este hecho,puede escribirse de una forma que enfatice su relación concuandoes grande:
dóndeycomo
La secuenciaestá 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 secuenciapuede que no converja, es casi un vector propio depara grandes.
Alternativamente, siSi es diagonalizable , entonces la siguiente demostración produce el mismo resultado:
Dejarser elvalores propios (contados con multiplicidad) deen orden descendente de valor absoluto (se permiten igualdades), es deciry dejarsean los vectores propios correspondientes. Supongamos quees el valor propio dominante, de modo quea pesar de.
El vector inicialse puede escribir:
Sise elige aleatoriamente (con probabilidad uniforme), entoncescon probabilidad 1. Ahora,
Por otro lado:
Por lo tanto,converge a (un múltiplo de) el vector propioLa convergencia es geométrica , con razón
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.explícitamente, pero en su lugar puede acceder a una función que evalúa productos matriz-vectorPara 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.Otros algoritmos analizan todo el subespacio generado por los vectores.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
- ↑ Richard von Mises y H. Pollaczek-Geiringer, Praktische Verfahren der Gleichungsauflösung , ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 9, 152-164 (1929).
- ↑ 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 ) - ↑ 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
- ↑ 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
- Álgebra lineal numérica