Algoritmo de autovalor

Fonte: testwiki
Revisão em 17h52min de 1 de fevereiro de 2023 por imported>Sérgio Azol (growthexperiments-addlink-summary-summary:3|0|0)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

Em análise numérica, um dos problemas mais importantes é projetar algoritmos eficientes e estáveis para encontrar os autovalor de uma matriz, ou para um operador linear contínuo (por exemplo, os autovetores do hamiltoniano de um sistema quântico particular, são os diferentes autoestados de energia de que o sistema e os seus autovalores são os níveis de energia correspondentes). Esses algoritmos de autovalores também podem encontrar autovetores.

Autovalores e autovetores

Predefinição:Main Dada uma matriz quadrada Predefinição:Math Predefinição:Math de números reais ou complexos, um autovalor Predefinição:Math e o seu autovetor generalizado associado Predefinição:Math são um par obedecendo a relação [1]

(AλI)k𝐯=0,

onde Predefinição:Math é um vetor coluna Predefinição:Math não nulo, Predefinição:Math é a matriz identidade Predefinição:Math, Predefinição:Math é um inteiro positivo, e ambos Predefinição:Math e Predefinição:Math podem ser complexos mesmo quando Predefinição:Math é real. Quando Predefinição:Math, o vetor é chamado simplesmente de Autovetor, e o par é chamando de auto-par. Nesse caso, Predefinição:Math. Qualquer autovalor Predefinição:Math de Predefinição:Math tem autovalores comuns[note 1] associados a ele, pois se Predefinição:Math é o menor inteiro tal que Predefinição:Math para um autovetor generalizado Predefinição:Math, então Predefinição:Math é um autovetor comum. O valor Predefinição:Math sempre pode ser tomado como menor que ou igual a Predefinição:Math. Em particular, Predefinição:Math para todo autovetor Predefinição:Math associado com Predefinição:Math

Para cada autovalor Predefinição:Math de Predefinição:Math, o núcleo Predefinição:Math consiste de todos os autovetores associados com Predefinição:Math (junto com Predefinição:Math), chamado de autoespaço de Predefinição:Math, enquanto o espaço vetorial Predefinição:Math consiste de todos os autovetores generalizados, e é chamado de autoespaço generalizado. A multiplicidade geométrica de Predefinição:Math é a dimensão do autoespaço. A multiplicidade algébrica de Predefinição:Math é a dimensão do autoespaço generalizado. Esta última terminologia é justificada pela equação

pA(z)=det(zIA)=i=1k(zλi)αi,

onde Predefinição:Math é a função determinante, Predefinição:Math são todos os autovalores distintos de Predefinição:Math e Predefinição:Math são as correspondentes multiplicidades algébricas. A função Predefinição:Math é o polinômio característico de Predefinição:Math. Então a multiplicidade algébrica é a multiplicidade do autovalor como um zero do polinômio característico. Como qualquer autovetor é também um autovetor generalizado, a multiplicidade geométrica é menor ou igual à multiplicidade algébrica. As multiplicidades algébricas somam até Predefinição:Math, o grau do polinômio característico. A equação Predefinição:Math é chamada de equação característica, pois suas raízes são exatamente os autovalores de Predefinição:Math. Pelo teorema de Cayley-Hamilton, Predefinição:Math obedece à mesma equação: Predefinição:Math[note 2] Como consequência, as colunas da matriz ij(AλiI)αi devem ser ou 0 ou autovetores generalizados para o autovalor Predefinição:Math, já que são aniquiladas por (AλjI)αj. De fato, o espaço da coluna é generalizado no autovalor de Predefinição:Math

Qualquer coleção de autovetores generalizados de distintos autovalores é linearmente independente, então uma base para todo Predefinição:Math pode ser escolhida consitindo de autovetores generalizados. Mais particularmente, essa base Predefinição:Mathpode ser escolhida e organizada tal que

Se esses vetores base são colocados como os vetores colunas de uma matriz Predefinição:Math, então Predefinição:Math pode ser usado para se converter em Predefinição:Math para sua forma normal:

V1AV=[λ1β1000λ2β2000λ30000λn],

onde Predefinição:Math são os autovalores, Predefinição:Math se Predefinição:Math e Predefinição:Math do contrário.

Mais genericamente, se Predefinição:Math é qualquer matriz invertível, e Predefinição:Math é um autovalor de Predefinição:Math com autovetores generalizados Predefinição:Math, então Predefinição:Math. Assim, Predefinição:Math é um autovalor de Predefinição:Math com autovetor generalizado Predefinição:Math. Isto é, matrizes similares possuem os mesmos autovalores.

Matriz normal, adjunta e transposta conjugada

Predefinição:Main

A adjunta Predefinição:Math de uma matriz complexa Predefinição:Math é a transposta da conjugada de M:M*=MT. Uma matriz quadrada é chamada normal se ela se relaciona com sua adjunta: Predefinição:Math. Ela é chamada de matriz transposta conjugada se for igual à sua adjunta: Predefinição:Math. Todas as matrizes transpostas conjugadas são normais. Se Predefinição:Math só tem elementos reais, então a adjunta é apenas a transposta, e Predefinição:Math é conjugada tranposta se e somente se for simétrica. Quando aplicado para vetores coluna, a adjunta pode ser usada para definir o produto interno canônico em Predefinição:Math: Predefinição:Math.[note 3] Matrizes normal, adjunta e transposta possuem diversas propriedades utéis:

É possível para uma matriz real ou complexa ter todos os autovalores reais sem ser tranposta conjugada. Por exemplo, uma matriz triangular real tem seus autovalores em sua diagonal, mas é, no geral, não simétrica.

Número de condicionamento

Qualquer problema de cálculo numérico pode ser visto como uma análise de uma função ƒ para um valor de entrada Predefinição:Math. O número de condicionamento Predefinição:Math do problema é a razão do erro relativo no resultado da função e do erro relativo de entrada, e varia com ambas a função e a entrada. O número de condicionamento descreve como erros crescem durante o cálculo. Seu logaritmo de base 10 diz quantos digitos a menos de precisão existem no resultado que existe do que existia na entrada. O número condicional é um melhor cenário. Ele reflete a instabilidade construída no problema, independente de como ele se resolve. Nenhum algoritmo pode produzir resultados mais precisos do que o indicado pelo número de condicionamento, exceto por sorte. No entanto, um algoritmo mal preparado pode produzir resultados significativamente piores. Por exemplo, como mencionado abaixo, o problema de encontrar autovalores para matrizes normais é sempre bem condicionado. No entanto, o problema de encontrar as raízes de um polinômio pode ser bem mal condicionado. Assim, algoritmos de autovalor que trabalham para encontrar as raízes do polinômio característico pode ser mal condicionado mesmo quando o problema não é.

Para o problema de resolver a equação linear Predefinição:Math onde Predefinição:Math é invertível, o número de condicionamento Predefinição:Math é dado por Predefinição:Math, onde Predefinição:Nowrap é a norma operacional subordinada a norma euclidiana normal em Predefinição:Math. Como esse número é independente de Predefinição:Math e é o mesmo para Predefinição:Math e Predefinição:Math, é normalmente chamado de número de condicionamento Predefinição:Math da matriz Predefinição:Math. Esse valor Predefinição:Math também é o valor absoluto da razão do maior autovalor de Predefinição:Math e do menor. Se Predefinição:Math é unitária, então Predefinição:Math, logo Predefinição:Math. Para matrizes gerais, a norma operacional é difícil de se calcular. Por isso, outras normas matriciais são usadas normalmente para estimar o número de condicionamento.

Para o problema do autovalor, Bauer e Fike provaram que, se λ é um autovalor de uma matriz diagonalizável Predefinição:Math  Predefinição:Math com matriz autovetor Predefinição:Math, então, o erro absoluto no cálculo de Predefinição:Math é delimitado pelo produto de Predefinição:Math e o erro absoluto em Predefinição:Math.[2] Como resultado, o número de condicionamento para encontrar Predefinição:Math é Predefinição:Math. Se Predefinição:Math é uma matriz normal, então Predefinição:Math é unitária, e Predefinição:Math. Assim, o problema do autovalor para todas as matrizes normais é bem condicionado.

O número de condicionamento para o problema de encontrar o autoespaço de uma matriz normal Predefinição:Math correspondente a um autovalor Predefinição:Math tem sido mostrado ser inversamente proporcional à distância mínima entre Predefinição:Math e os outros distintos autovalores de Predefinição:Math.[3] Em particular, o problema do autoespaço para matrizes normais é bem condicionado para autovalores isolados. Quando autovalores não são isolados, o melhor que se pode esperar é identificar a extensão de todos os autovetores de autovalores próximos.

Algoritmos

Qualquer polinômio mônico é o polinômio característico de sua matriz companheira. Portanto, um algoritmo geral para encontrar os autovalores também pode ser usado para encontrar as raízes de polinômios. O teorema de Abel-Ruffini mostra que qualquer algoritmo para dimensões maiores do que 4 deve ser ou infinito, ou envolver funções de maior complexidade do que operações aritméticas elementares e potências fraccionárias. Por este motivo, os algoritmos que calculam exatamente autovalores em um número finito de passos só existem para algumas classes especiais de matrizes. Para matrizes gerais, os algoritmos são iterativos, produzindo melhores soluções aproximadas com cada iteração.

Alguns algoritmos de produzir cada autovalor, outros vão produzir alguns, ou apenas um. No entanto, mesmo estas algoritmos podem ser utilizados para localizar todos os autovalores. Uma vez que um autovalor Predefinição:Math de uma matriz Predefinição:Math foi identificado, ele pode ser usado para direcionar o algoritmo para uma solução diferente da próxima vez, ou para reduzir o problema a um que já não tem Predefinição:Math como uma solução.

O redirecionamento é feito deslocando-se: a substituição de Predefinição:Math com Predefinição:Math para alguma constante Predefinição:Math. O autovalor encontrado para Predefinição:Math deve ter Predefinição:Math adicionado de volta para obter um autovalor para Predefinição:Math. Por exemplo, para o método das potências, Predefinição:Math. O método das potências encontra o maior autovalor em valor absoluto, de modo que, mesmo quando Predefinição:Math é apenas aproximado do autovalor, é improvável que o método da potência encontre uma segunda vez. Inversamente, métodos com base em iteração inversa encontram o menor autovalor, então Predefinição:Math é escolhido distante de Predefinição:Math e, espera-se, mais perto de algum outro autovalor.

A redução pode ser realizada restringindo Predefinição:Math para o espaço de coluna da matriz Predefinição:Math, que Predefinição:Math transporta para si próprio. Como Predefinição:Math é singular, o espaço de coluna é de menor dimensão. O algoritmo de autovalor pode, então, ser aplicada à matriz restrita. Este processo pode ser repetido até que todos os autovalores são encontrados.

Se um algoritmo de autovalor não produz autovetores, uma prática comum é usar um algoritmo baseado em iteração inversa com μ definido para uma aproximação do autovalor. Isso irá rapidamente convergir para o autovetor dos autovalores mais próximos de Predefinição:Math. Para pequenas matrizes, uma alternativa é olhar para o espaço de coluna do produto de Predefinição:Math para cada um dos outros autovalores Predefinição:Math.

Matrizes de Hessenberg e tridiagonais

Predefinição:Main

Porque os autovalores de uma matriz triangular são os seus elementos da diagonal, para matrizes gerais não há método finito como a eliminação gaussiana para converter uma matriz para a forma triangular preservando os autovalores. Mas é possível chegar a algo próximo triangular. Uma matriz de Hessenberg superior é uma matriz quadrada para o qual todas as entradas abaixo da subdiagonal são zero. Uma matriz de Hessenberg menor é aquela para o qual todas as entradas acima da superdiagonal são zero. Matrizes de Hessenberg que são ambas superiores e inferiores são tridiagonais. Matrizes de Hessenberg e tridiagonais são os pontos de partida para muitos algoritmos de autovalor porque as entradas zero reduzem a complexidade do problema. Vários métodos são comumente usados para converter uma matriz geral em uma matriz de Hessenberg com o mesmo autovalor. Se a matriz original foi simétrica ou hermitiana, então a matriz resultante será tridiagonal.

Quando apenas autovalores são necessários, não é necessário calcular a matriz de similaridade, pois a matriz transformada tem os mesmos autovalores. Se autovetores também são necessários, a matriz de similaridade pode ser necessária para transformar os autovetores da matriz de Hessenberg de volta para autovetores da matriz original.

Método Aplica-se a Produz Custo, sem matriz de similaridade Custo com matriz de similaridade Descrição
Transformação de householder Geral Hessenberg 2n33 + O(n2)[4](p474) 4n33 + O(n2)[4](p474) Reflete cada coluna através de um subespaço para zerar as suas entradas de baixo.
Rotações de Givens Geral Hessenberg 4n33 + O(n2)[4](p470) Aplica rotações planares para zerar entradas individuais. As rotações são ordenadas de forma que, mais tarde, não cause entradas zeradas se tornarem diferentes de zero novamente.
Iteração de Arnoldi Geral Hessenberg Executa ortogonalização de Gram–Schmidt em subespaços de Krylov.
Algoritmo de Lanczos Hermitiana Tridiagonal Iteração de Arnoldi para matrizes hermitianas, com atalhos.

Algoritmos iterativos

Algoritmos iterativos resolvem o problema do autovalor através da produção de sequências que convergem para os autovalores. Alguns algoritmos também produzem sequências de vetores que convergem para os autovetores. Mais comumente, as sequências de autovalores são expressas como sequências de matrizes de similaridade que convergem para uma forma triangular ou diagonal, permitindo que os autovalores sejam lidos facilmente. As sequências de autovetores são expressas como as correspondentes matrizes de similaridade.

Método Aplica-se a Produz Custo por etapa Convergência Descrição
Método das potências Geral Predefinição:Nowrap Predefinição:Math Linear Repetidamente aplica a matriz a um vetor inicial arbitrário e renormaliza.
Iteração inversa Geral Predefinição:Nowrap Linear Método das potências para Predefinição:Math
Quociente de iteração de Rayleigh Hermitiana Autopar (λ,υ) com o autovalor λ mais próximo de μ Cúbica Método das potências para Predefinição:Math onde Predefinição:Math para cada iteração é o quociente de Rayleigh da iteração anterior.
Iteração inversa pré-condicionada[5]  ou algoritmo LOBPCG Definida positiva Simétrica Autopar com o valor mais próximo de μ Iteração inversa usando um pré-condicionante (uma aproximação inversa de Predefinição:Math).
Método da bisseção Simétrica

Tridiagonal

Qualquer autovalor Linear Usa o método da bisseção para encontrar as raízes do polinômio característico, apoiada pela sequência de Sturm.
Iteração de Laguerre Simétrica

Tridiagonal

Qualquer autovalor Cúbica[6] Usa o método de Laguerre para encontrar as raízes do polinômio característico, apoiada pela sequência de Sturm.
Algoritmo QR Geral Todos os autovalores Predefinição:Math Cúbica Fatora A = QR, onde Q é ortogonal e R é triangular, então aplica a próxima iteração a RQ.
Todos os autopares Predefinição:Math
Algoritmo de autovalores de Jacobi Simétrica Todos os autovalores Predefinição:Math Quadrática Usa rotações de Givens para tentar limpar todas as entradas não diagonais. Falha, mas fortalece a diagonal.
Divisão e conquista Hermitiana

Tridiagonal

Todos os autovalores Predefinição:Math Divide a matriz em submatrizes que são diagonalizadas e então recombinadas.
Todos os autopares Predefinição:Math
Método da homotopia Simétrica

Tridiagonal

Todos os autopares Predefinição:Math Constrói um caminho homotópico computacional a partir de um problema de autovalor diagonal.
Método do espectro dobrado Simétrica Autopar com o valor mais próximo de μ Iteração inversa pré-condicionada aplicada a Predefinição:Math
Algoritmo MRRR[7] Simétrica

Tridiagonal

Alguns ou todos os autopares Predefinição:Math "Múltiplas representações relativamente robustas" - Realiza uma iteração inversa em uma decomposição LDL da matriz deslocada.

Cálculo direto

Apesar de não existir um algoritmo simples para calcular diretamente autovalores para matrizes gerais, existem inúmeras classes especiais de matrizes nas quais os autovalores podem ser calculados diretamente. Estas incluem:

Matrizes triangulares

Como o determinante de uma matriz triangular é o produto de sua entradas diagonais, se T é triangular, então Predefinição:Nowrap Assim, os autovalores de T são as suas entradas diagonais.

Equações polinomiais fatoráveis

Se Predefinição:Math é qualquer polinômio e Predefinição:Math então os autovalores de Predefinição:Math também satisfazem a mesma equação. Se Predefinição:Math possui uma fatoração conhecida, então os autovalores de Predefinição:Math estão entre suas raízes.

Por exemplo, uma projeção é uma matriz quadrada Predefinição:Math satisfazendo Predefinição:Math. As raízes da correspondente equação polinomial escalar, Predefinição:Math, são 0 e 1. Assim, qualquer projeção tem 0 e 1 como seus autovalores. A multiplicidade de 0 como um autovalor é a nulidade de Predefinição:Math, enquanto a multiplicidade de 1 é a posição de Predefinição:Math.

Outro exemplo é o de uma matriz Predefinição:Math que satisfaça Predefinição:Math para algum Predefinição:Math escalar. Os autovalores devem ser Predefinição:Math. Os operadores de projeção

P+=12(I+Aα)
P=12(IAα)

satisfazem

AP+=αP+AP=αP

e

P+P+=P+PP=PP+P=PP+=0.

Os espaços coluna de Predefinição:Math e Predefinição:Math são os autoespaços de Predefinição:Math correspondentes a Predefinição:Math e Predefinição:Math, respectivamente.

Matrizes 2×2

Para dimensões de 2 a 4, fórmulas envolvendo radicais existem que podem ser usadas para encontrar os autovalores. Enquanto uma prática comum para matrizes 2×2 e 3×3, para matrizes 4×4 a complexidade crescente da raiz das fórmulas torna esta abordagem menos atraente.

Para a matriz 2×2

A=[abcd],

o polinômio característico é

det[λabcλd]=λ2(a+d)λ+(adbc)=λ2λtr(A)+det(A).

Assim, os autovalores podem ser encontrados usando a fórmula quadrática:

λ=tr(A)±tr2(A)4det(A)2.

Definindo gap(A)=tr2(A)4det(A) como sendo a distância entre os dois autovalores, é simples calcular

λa=12(1±adgap(A)),λb=±cgap(A)

com fórmulas semelhantes para Predefinição:Math e Predefinição:Math. A partir disso, segue-se que o cálculo é bem condicionado se os autovalores são isolados.

Autovetores podem ser encontrados através da exploração teorema de Cayley-Hamilton. Se Predefinição:Math são os autovalores, então Predefinição:Math, então as colunas de Predefinição:Math são aniquiladas por Predefinição:Math e vice-versa. Supondo que nenhuma matriz é zero, as colunas de cada uma devem incluir autovetores para o autovetor do outro. (Se qualquer matriz é igual a zero, então Predefinição:Math é um múltiplo da identidade e qualquer vetor não-nulo é um autovetor.)

Por exemplo, suponha que

A=[4323],

então Predefinição:Math e Predefinição:Math, então a equação característica é

0=λ2λ6=(λ3)(λ+2),

e os autovalores são 3 e -2. Agora,

A3I=[1326],A+2I=[6321].

Em ambas as matrizes, as colunas são múltiplas uma da outra, de modo que qualquer coluna pode ser usada. Assim, Predefinição:Math pode ser tomado como um autovetor associado com o autovalor -2, e Predefinição:Math omo um autovetor associado com o autovalor 3, como pode ser verificado multiplicando-os por Predefinição:Math.

Matrizes 3×3

Se Predefinição:Math é uma matriz 3×3, então a sua equação característica pode ser expressa como:

det(αIA)=α3α2tr(A)α12(tr(A2)tr2(A))det(A)=0.

Um  Se A = pB + qI, então AB têm o mesmo autovetores, e β é um eigenvalue de B se, e somente se, α =  + q é um eigenvalue de Um. Deixar e , dá

Esta equação pode ser resolvida usando-se os métodos de Cardano ou de Lagrange, mas uma mudança afim para Predefinição:Math irá simplificar a expressão consideravelmente, e levam diretamente a uma solução trigonométrica. Se Predefinição:Math, então Predefinição:Math e Predefinição:Math têm o mesmo autovetores, e Predefinição:Math é um autovalor de Predefinição:Math se, e somente se, Predefinição:Math é um autovalor de Predefinição:Math. Sendo q=tr(A)/3 and p=tr((AqI)2/6)1/2, resulta que

det(βIB)=β33βdet(B)=0.

A substituição Predefinição:Math e alguma simplificação usando a identidade Predefinição:Math reduzem a equação a Predefinição:Math. Assim,

β=2cos(13arccos(det(B)/2)+2kπ3),k=0,1,2.

Se Predefinição:Math é complexo ou superior a 2, em valor absoluto, o arco cosseno deve ser tomado ao longo do mesmo ramo, para os três valores de Predefinição:Math. Este problema não surgem quando Predefinição:Math é real e simétrica, resultando em um algoritmo simples:[8]

% Dada uma matriz 3x3 A real e simétrica, calcule os autovalores

p1 = A(1,2)^2 + A(1,3)^2 + A(2,3)^2
if (p1 == 0)
   % A é diagonal.
   eig1 = A(1,1)
   eig2 = A(2,2)
   eig3 = A(3,3)
else
   q = trace(A)/3
   p2 = (A(1,1) - q)^2 + (A(2,2) - q)^2 + (A(3,3) - q)^2 + 2 * p1
   p = sqrt(p2 / 6)
   B = (1 / p) * (A - q * I)       % I é a matriz identidade
   r = det(B) / 2

   % Em artimética exata para uma matriz simétrica  -1 <= r <= 1
   % mas um erro computacional pode deixar ligeiramente fora dessa faixa.
   if (r <= -1)
      phi = pi / 3
   elseif (r >= 1)
      phi = 0
   else
      phi = acos(r) / 3
   end

   % os autovalores satisfazem eig3 <= eig2 <= eig1
   eig1 = q + 2 * p * cos(phi)
   eig3 = q + 2 * p * cos(phi + (2*pi/3))
   eig2 = 3 * q - eig1 - eig3     % já que trace(A) = eig1 + eig2 + eig3
end

Mais uma vez, os autovetores de Predefinição:Math podem ser obtidos recorrendo-se ao teorema de Cayley-Hamilton. Se Predefinição:Math são autovalores distintos de Predefinição:Math, então Predefinição:Math. Assim, as colunas do produto de quaisquer duas dessas matrizes irá conter um autovetor para o terceiro autovalor. No entanto, se Predefinição:Math, então Predefinição:Math e Predefinição:Math. Assim, o autoespaço generalizado de Predefinição:Math é dividido pelas colunas de Predefinição:Math enquanto o autoespaço ordinário é dividido por colunas de Predefinição:Math. O autoespaço ordinário de Predefinição:Math é dividido pelas colunas de Predefinição:Math.

Por exemplo, seja

A=[326225214].

A equação característica é

0=λ3λ2λ+1=(λ1)2(λ+1),

com autovalores 1 (de multiplicidade 2) e -1. Calculando,

AI=[226215215],A+I=[426235213]

e

(AI)2=[408408408],(AI)(A+I)=[044022022]

Assim,  Predefinição:Math é um autovetor para -1, e Predefinição:Math é um autovetor para 1. Predefinição:Math e Predefinição:Math são ambos autovetores generalizados associados a 1, qualquer um dos quais poderia ser combinada com Predefinição:Math e Predefinição:Math para formar uma base de autovetores generalizados de Predefinição:Math. Em algumas rotinas, autovetores são normalizados para um, nesses casos, certifique-se de que você normalizou pela coluna.

Veja também

Notas

Predefinição:Reflist

Referências

Predefinição:Reflist

Leitura adicional


Erro de citação: Existem etiquetas <ref> para um grupo chamado "note", mas não foi encontrada nenhuma etiqueta <references group="note"/> correspondente