| | | |

Matemática Numérica III

3 Autovalores e Autovetores

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

3.2 Iteração QR

Em revisão

A iteração QR é um método para a computação aproximada de todos os autovalores de uma dada matriz A. A ideia é explorar um método iterativo para a computação da decomposição de Schur5252endnote: 52Issai Schur, 1875 - 1941, matemático russo-alemão. Fonte: Wikipédia. de A, i.e. encontrar uma matriz unitária5353endnote: 53Uma matriz U é dita unitária quando U1=UH. U tal que

UHAU=[λ1t12t1n0λ2t2n00λn] (3.25)

Assumindo An×n, sejam Q(0)n×n uma matriz ortogonal5454endnote: 54Uma matriz Q é dita ortogonal quando QTQ=I. e T(0)=(Q(0))TAQ(0). A iteração QR consiste em

determinar Q(k),R(k) tal que
Q(k)R(k)=T(k1)(fatoração QR) (3.26)
T(k)=R(k)Q(k), (3.27)

para k=1,2,.

Ou seja, a cada iteração k, computa-se a fatoração da matriz T(k1) como o produto de uma matriz ortogonal Q(k) com uma matriz triangular superior R(k). Então, computa-se uma nova aproximação T(k) pela multiplicação de R(k) por Q(k). Com isso, temos

T(k)=R(k)Q(k) (3.28)
=(Q(k))T(Q(k)R(k))Q(k) (3.29)
=(Q(k))TT(k1)Q(k) (3.30)
=(Q(k))TR(k1)Q(k1)Q(k) (3.31)
=(Q(k))T(Q(k1))TQ(k1)R(k1)Q(k1)Q(k) (3.32)
=(Q(k1)Q(k))TT(k2)(Q(k1)Q(k)) (3.33)
=(Q(0)Q(k))TA(Q(0)Q(k)). (3.34)

Ou seja, T(k) é matriz semelhante a A para todo k. E, portanto, tem os mesmos autovalres.

Observação 3.2.1 (Convergência).

Se An×n for uma matriz com autovalores tais que

|λ1|>|λ2|>>|λn|, (3.35)

então

limkT(k)=[λ1t12t1n0λ2t2n00λn]. (3.36)

Para a taxa de convergência, temos

|ti,i1(k)|=𝒪(|λiλi1|k),i=2,,n, (3.37)

quando k.

Ainda, se A for uma matriz simétrica, então T(k) tende a uma matriz diagonal quando k.

Observação 3.2.2.

Variantes do método QR permitem sua aplicação para matrizes mais gerais. Consulte [5].

Uma forma eficiente do método QR é chamada de iteração Hessenberg5555endnote: 55Karl Adolf Hessenberg, 1904 - 1959, engenheiro e matemático alemão. Fonte: Wikipédia.-QR. Consiste em inicializar T(0) como uma matriz de Hessenberg superior, i.e. ti,j(0)=0 para i>j+1. A computação de T(0) é feita com transformadas de Householder e a fatoração QR de T(k) utiliza de matrizes de Givens5656endnote: 56James Wallace Givens Jr., 1910 - 1993, matemático estadunidense. Fonte: Wikipédia..

Código 7: Algoritmo da Iteração QR
1import numpy as np
2import numpy.linalg as npla
3
4def qr_iter(A, Q=None, maxiter=10, tol=1e-5):
5  Q = np.eye(A.shape[0]) if Q==None else Q
6  T0 = Q.T @ A @ Q
7  info = -1
8  for k in range(maxiter):
9    Q, R = npla.qr(T0)
10    T = R @ Q
11    if (npla.norm(T-T0) < tol):
12      info = 0
13      break
14    T0 = T
15  return T, info
Observação 3.2.3 (Computação dos Autovetores).

Vamos denotar Q~(k)=Q(0)Q(k). Se 𝒗 é autovetor associado ao autovalor simples λ de A, então

A𝒗=λ𝒗 (3.38)
(Q~(k))TAQ~(k)(Q~(k))T𝒗λ(Q~(k))T𝒗 (3.39)

Denotando, y=(Q~(k))T𝒗, temos

T(k)𝒚=λ𝒚. (3.40)

Com isso, podemos computar 𝒚 e, então, temos 𝒗Q~(k)𝒚.

Exercícios

E. 3.2.1.

Use a iteração QR para computar os autovalores da matriz de coeficientes do problema discreto associado ao Exercício 1.1.3.

E. 3.2.2.

Use a iteração QR para computar os autovalores da matriz de coeficientes do problema discreto associado ao Exemplo 1.1.2. Use spla.hessenberg para computar T(0).


Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Matemática Numérica III

3 Autovalores e Autovetores

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

3.2 Iteração QR

Em revisão

A iteração QR é um método para a computação aproximada de todos os autovalores de uma dada matriz A. A ideia é explorar um método iterativo para a computação da decomposição de Schur5252endnote: 52Issai Schur, 1875 - 1941, matemático russo-alemão. Fonte: Wikipédia. de A, i.e. encontrar uma matriz unitária5353endnote: 53Uma matriz U é dita unitária quando U1=UH. U tal que

UHAU=[λ1t12t1n0λ2t2n00λn] (3.25)

Assumindo An×n, sejam Q(0)n×n uma matriz ortogonal5454endnote: 54Uma matriz Q é dita ortogonal quando QTQ=I. e T(0)=(Q(0))TAQ(0). A iteração QR consiste em

determinar Q(k),R(k) tal que
Q(k)R(k)=T(k1)(fatoração QR) (3.26)
T(k)=R(k)Q(k), (3.27)

para k=1,2,.

Ou seja, a cada iteração k, computa-se a fatoração da matriz T(k1) como o produto de uma matriz ortogonal Q(k) com uma matriz triangular superior R(k). Então, computa-se uma nova aproximação T(k) pela multiplicação de R(k) por Q(k). Com isso, temos

T(k)=R(k)Q(k) (3.28)
=(Q(k))T(Q(k)R(k))Q(k) (3.29)
=(Q(k))TT(k1)Q(k) (3.30)
=(Q(k))TR(k1)Q(k1)Q(k) (3.31)
=(Q(k))T(Q(k1))TQ(k1)R(k1)Q(k1)Q(k) (3.32)
=(Q(k1)Q(k))TT(k2)(Q(k1)Q(k)) (3.33)
=(Q(0)Q(k))TA(Q(0)Q(k)). (3.34)

Ou seja, T(k) é matriz semelhante a A para todo k. E, portanto, tem os mesmos autovalres.

Observação 3.2.1 (Convergência).

Se An×n for uma matriz com autovalores tais que

|λ1|>|λ2|>>|λn|, (3.35)

então

limkT(k)=[λ1t12t1n0λ2t2n00λn]. (3.36)

Para a taxa de convergência, temos

|ti,i1(k)|=𝒪(|λiλi1|k),i=2,,n, (3.37)

quando k.

Ainda, se A for uma matriz simétrica, então T(k) tende a uma matriz diagonal quando k.

Observação 3.2.2.

Variantes do método QR permitem sua aplicação para matrizes mais gerais. Consulte [5].

Uma forma eficiente do método QR é chamada de iteração Hessenberg5555endnote: 55Karl Adolf Hessenberg, 1904 - 1959, engenheiro e matemático alemão. Fonte: Wikipédia.-QR. Consiste em inicializar T(0) como uma matriz de Hessenberg superior, i.e. ti,j(0)=0 para i>j+1. A computação de T(0) é feita com transformadas de Householder e a fatoração QR de T(k) utiliza de matrizes de Givens5656endnote: 56James Wallace Givens Jr., 1910 - 1993, matemático estadunidense. Fonte: Wikipédia..

Código 7: Algoritmo da Iteração QR
1import numpy as np
2import numpy.linalg as npla
3
4def qr_iter(A, Q=None, maxiter=10, tol=1e-5):
5  Q = np.eye(A.shape[0]) if Q==None else Q
6  T0 = Q.T @ A @ Q
7  info = -1
8  for k in range(maxiter):
9    Q, R = npla.qr(T0)
10    T = R @ Q
11    if (npla.norm(T-T0) < tol):
12      info = 0
13      break
14    T0 = T
15  return T, info
Observação 3.2.3 (Computação dos Autovetores).

Vamos denotar Q~(k)=Q(0)Q(k). Se 𝒗 é autovetor associado ao autovalor simples λ de A, então

A𝒗=λ𝒗 (3.38)
(Q~(k))TAQ~(k)(Q~(k))T𝒗λ(Q~(k))T𝒗 (3.39)

Denotando, y=(Q~(k))T𝒗, temos

T(k)𝒚=λ𝒚. (3.40)

Com isso, podemos computar 𝒚 e, então, temos 𝒗Q~(k)𝒚.

Exercícios

E. 3.2.1.

Use a iteração QR para computar os autovalores da matriz de coeficientes do problema discreto associado ao Exercício 1.1.3.

E. 3.2.2.

Use a iteração QR para computar os autovalores da matriz de coeficientes do problema discreto associado ao Exemplo 1.1.2. Use spla.hessenberg para computar T(0).


Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |