Método das potências
Em matemática, o método das potências é um algoritmo para calcular autovalores: dada uma matriz A, o algoritmo irá produzir um número λ (o autovalor) e um vetor v não nulo (o autovetor), tal que Av = λv. O algoritmo também é conhecido como a iteração de Von Mises.[1]
O método da potência é um algoritmo muito simples. Ele não computa a decomposição matricial, e portanto pode ser usada quando A é uma grande matriz esparsa. No entanto, ele irá encontrar apenas um autovalor (aquele com o maior módulo) e poderá convergir lentamente.
O método
[editar | editar código-fonte]O método da potência inicia com um vetor b0, que pode ser uma aproximação para o autovalor dominante ou um vetor aleatório. O método é descrito pela iteração
Assim, a cada iteração, o vetor bk é multiplicado pela matriz A e normalizado.
De acordo com as premissas:
- A tem um autovalor que é estritamente maior em magnitude que os outros autovalores;
- O vetor inicial tem um componente não-nulo na direção de um autovetor associado com o autovalor dominante.
Assim:
- A sub-série converge a um autovetor associado com o autovalor dominante.
Note que a série não necessariamente converge. Pode ser mostrado que:
onde: é um autovetor associado ao autovalor dominante, e . A presença do termo implica que não irá convergir a menos que .
Sob os dois pressupostos acima, a série definida por:
converge para o autovalor dominante.
Isso pode ser executado como uma simulação com o seguinte algoritmo:
for each(''simulation'') {
// calcular o produto de matriz-por-vetor Ab
for(i=0; i<n; i++) {
tmp[i] = 0;
for (j=0; j<n; j++)
tmp[i] += A[i][j] * b[j]; // produto escalar de col(A) com b
}
// calcular o comprimento do vetor resultante
norm_sq=0;
for (k=0; k<n; k++)
norm_sq += tmp[k]*tmp[k];
norm = sqrt(norm_sq);
// normalizar b para um vetor unitário para a próxima iteração
b = tmp/norm;
}
O valor da norma converge para o autovalor dominante, e o vetor b para o autovetor associado.
(Nota: O código acima assume A e b real. Para lidar com valores complexos; A[i][j] se torna conj(A[i][j]), e tmp[k]*tmp[k] se torna conj(tmp[k])*tmp[k])
Esse algoritmo é utilizado para calcular coisas tais como o Google en:PageRank.
O método também pode ser usado para calcular o raio espectral da matriz pelo cálculo do quociente de Rayleigh:
Análise
[editar | editar código-fonte]Decompondo pela forma canônica de Jordan: , onde a primeira coluna de é um autovetor de correspondente ao autovalor dominante de . Como o autovalor dominante de é único, o primeiro bloco de Jordan de é a matriz 1x1 , onde é o maior autovalor de A em magnitude. O vetor inicial pode ser escrito como uma combinação linear das colunas de V:
.
Pela hipótese, tem um componente não-nulo na direção do autovalor dominante , assim .
A útil relação de recorrência computacional para pode ser reescrita como:
,
onde a expressão:
é mais propícia a seguinte análise.
A expressão acima simplifica como
enquanto .
O limite vem do fato de que o autovalor de ser menor que 1 em magnitude, então
enquanto
.
Segue que:
enquanto
Usando esse fato, pode ser escrito numa forma de enfatizar sua relação com quando k é grande:
onde e enquanto
A série é delimitada, para que contenha uma sub-série convergente. Note que o autovetor correspondente ao autovalor dominante só é único até um escalar, assim, embora a série possa não convergir, é quase um autovetor de A para grandes k.
Alternativamente, se A é uma matriz diagonalizável, então o seguinte prova o mesmo resultado: Seja λ1, λ2, …, λm os m autovalores de A e seja v1, v2, …, vm os correspondentes autovetores. Suponha que é o autovalor dominante, assim para .
O vetor inicial pode ser escrito como:
Se é escolhido aleatoriamente (com probabilidade uniforme), então c1 ≠ 0 com probabilidade 1. Agora,
A expressão entre parênteses converge para porque para . Por outro lado, nós temos
Por tanto, converge para (um múltiplo de) o autovetor . A convergência é geométrica com taxa
onde indica o segundo autovalor dominante. Assim, o método converge lentamente, se houver um autovalor próximo em magnitude ao autovalor dominante.
Aplicações
[editar | editar código-fonte]Apesar do método das potências aproximar apenas um autovalor de uma matriz, continua sento usado para certos problemas computacionais. Por exemplo, a Google o usa para calcular o rank da página de documentos do seu sistema de pesquisa.[2] Para matrizes que são bem condicionadas e esparsas como the Web matrix, o método das potências pode ser mais eficiente do que outros métodos para encontrar autovetores dominantes.
Alguns dos mais avançados algoritmos para autovalores pode ser entendido como variações do método das potências. Por exemplo, o método da potência inverso aplica a iteração a matriz . Outros algoritmos olham para todo o sub-espaço gerado pelos vetores .. Esse subespaço é conhecido como the en:Krylov subspace. Pode ser computado pela iteração de Arnoldi ou a iteração de Lanczos. Outra variação do método de potências que simultaneamente nos fornece n autovalores e autofunções, bem como acelera a convergência para , é "Multiple extremal eigenpairs by the power method" no Journal of Computational Physics Volume 227 Issue 19, October, 2008, Pages 8508-8522 (Também veja o pdf abaixo para Los Alamos National Laboratory report LA-UR-07-4046).
Referências
- ↑ R. von Mises and H. Pollaczek-Geiringer, Praktische Verfahren der Gleichungsauflösung, ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 9, 152-164 (1929).
- ↑ Ipsen, Ilse, and Rebecca M. Wills (5–8 de maio de 2005). «Analysis and Computation of Google's PageRank» (PDF). Fields Institute, Toronto, Canada Parâmetro desconhecido
|book=
ignorado (ajuda)
Ligações externas
[editar | editar código-fonte]- Power method, part of lecture notes on numerical linear algebra by E. Bruce Pitman, State University of New York.
- Module for the Power Method
- [1] Los Alamos report LA-UR-07-4046 ""Multiple extremal eigenpairs by the power method"