Vamos agora provar uma s´erie de resultados com o objetivo principal de demonstrar o fato mencionado acima que cki= 0 para todo i = 1, . . . , k − 1 e tamb´em que o m´etodo do gradiente conjugado converge em
aritm´etica exata em precisas n itera¸c˜oes para uma matriz de tamanho n.
5.33 Defini¸c˜ao. Dada uma matriz A ∈ Mn(C) e um vetor v ∈ Cn, o espa¸co de Krylov Kj(A, v) ´e o
5.34 Teorema. Depois de j itera¸c˜oes do algoritmo do gradiente conjugado (com rk 6= 0 em cada itera¸c˜ao), temos
p0, p1, . . . , pj−1 = r0, r1, . . . , rj−1 =K
j A, r0 .
Prova: A demonstra¸c˜ao ´e por indu¸c˜ao. O resultado ´e trivial para j = 0, pois p0= r0. Assuma o resultado
v´alido para j − 1. Em primeiro lugar, mostraremos que r0, r1, . . . , rj ⊂K
j+1 A, r0 . (5.83)
Em vista da hip´otese de indu¸c˜ao, basta mostrar que rj ∈ K
j+1 A, r0. Como rj = rj−1− αj−1Apj−1 e
rj−1 ∈K
j A, r0 ⊂ Kj+1 A, r0 por hip´otese de indu¸c˜ao, basta provar que Apj−1 ∈Kj+1 A, r0. Mas,
tamb´em por hip´otese de indu¸c˜ao, pj−1∈K
j+1 A, r0, logo
Apj−1∈Kj A, Ar0 = Ar0, A2r0, . . . , Ajr0 ⊂ r0, Ar0, A2r0, . . . , Ajr0 =Kj+1 A, r0 .
Em seguida, mostraremos que
p0, p1, . . . , pj ⊂ r0, r1, . . . , rj . (5.84)
Por hip´otese de indu¸c˜ao, basta provar que pj ∈r0, r1, . . . , rj. Isso segue de (5.76) e da hip´otese de indu¸c˜ao.
At´e aqui provamos que
p0, p1, . . . , pj ⊂ r0, r1, . . . , rj ⊂K
j+1 A, r0 . (5.85)
Para provar que eles s˜ao iguais, basta mostrar que eles tˆem a mesma dimens˜ao. Isso decorre de dimr0, r1, . . . , rj 6 j + 1,
dimKj+1 A, r0 6 j + 1
e
dimp0, p1, . . . , pj = j + 1,
o ´ultimo porque os vetores p0, p1, . . . , pj s˜ao vetores n˜ao-nulos A-ortogonais. 5.35 Corol´ario. Depois de j itera¸c˜oes do algoritmo do gradiente conjugado, temos
ej ⊥AKj A, r0
para todo j.
Prova: Segue imediatamente do teorema anterior e do Teorema5.32.
5.36 Corol´ario. Depois de j itera¸c˜oes do algoritmo do gradiente conjugado, temos rj ⊥Kj A, r0
para todo j.
Prova: Em vista do Teorema5.34, basta provar que rj⊥ p0, p1, . . . , pj−1para todo j. Como Aej+1= rj+1,
rj+1, pi = Aej+1, pi = ej+1, pi
A= 0
para todo i = 1, . . . , j − 1, como vimos na demonstra¸c˜ao do Teorema5.32.
Prova: Temos que provar que
rk+1, pi
A=r
k+1, Api = 0
para todos i = 1, . . . , k − 1. Pelo Teorema 5.34, pi ∈p0, p1, . . . , pi = r0, Ar0, . . . , Air = K
i+1 A, r0,
logo
Api∈Ar0, A2r0, . . . , Ai+1r ⊂K
i+2 A, r0 ⊂Kk+1 A, r0
e o resultado segue do corol´ario anterior.
5.38 Teorema. Seja A uma matriz sim´etrica positiva definida n×n. Ent˜ao o m´etodo do gradiente conjugado converge em n itera¸c˜oes.
Prova: Se fizemos n − 1 itera¸c˜oes em obter x, pelo Corol´ario 5.37os vetores r0, r1, . . . , rn−1 formam uma
base ortogonal para Rn. Depois de mais uma itera¸c˜ao, de acordo com este mesmo corol´ario o res´ıduo rn
satisfaz rn⊥r0, r1, . . . , rn−1 = Rn, logo rn
= 0.
De fato, na maioria das aplica¸c˜oes o m´etodo do gradiente conjugado converge ainda mais r´apido, se apenas uma boa aproxima¸c˜ao ´e requerida. Defina o n´umero de condi¸c˜ao de uma matriz sim´etrica positiva definida por
κ (A) = max {λ : λ ´e um autovalor de A}
min {λ : λ ´e um autovalor de A}; (5.86) assim, quanto maior o n´umero de condi¸c˜ao de uma matriz, ela ´e mais mal-condicionada e a convergˆencia de m´etodos de descida ´e mais vagarosa. Pode-se provar a seguinte estimativa de erro para o m´etodo do gradiente conjugado (veja [Strikwerda]):
ek A6 2 e0 A p κ (A) − 1 pκ (A) + 1 !k . (5.87)
Esta estimativa ´e uma estimativa grosseira, mas mostra que o m´etodo do gradiente conjugado converge mais rapidamente para matrizes bem-condicionadas (κ (A) ∼ 1). Uma compara¸c˜ao entre a velocidade de convergˆencia dos dois m´etodos para a matriz de discretiza¸c˜ao da f´ormula de cinco pontos aplicada ao problema descrito na primeira se¸c˜ao deste cap´ıtulo, desta vez com o tamanho das matrizes indicado na linha superior da tabela, ´e dada a seguir [Watkins].
n = 81 n = 361 n = 1521 Descida Mais Acentuada 304 1114 4010
Gradiente Conjugado 29 60 118
No caso desta matriz de discretiza¸c˜ao no quadrado unit´ario temos
κ (A) = sen2(n − 1) π 2n sen2 π 2n = cot2 π 2n = cot 2π∆x 2 ≈ 4 π2∆x2 de modo que pκ (A) − 1 pκ (A) + 1≈ 1 − π∆x/2 1 + π∆x/2≈ 1 − π∆x,
o que d´a uma velocidade de convergˆencia para o m´etodo do gradiente conjugado duas vezes maior que a do m´etodo SOR com o fator de relaxamento ´otimo. No entanto, deve-se ter em mente que enquanto que a taxa de covergˆencia que obtivemos para o m´etodo SOR ´e precisa, a estimativa de erro (5.87) para o m´etodo do gradiente conjugado ´e apenas um limitante superior grosseiro (veja [Watkins] para algumas estimativas melhoradas).
Cap´ıtulo 6
M´etodos Multigrid
Neste cap´ıtulo consideraremos o m´etodo multigrid, que ´e o m´etodo mais r´apido para resolver equa¸c˜oes el´ıpticas em geral. Embora o m´etodo possa ser empregado em malhas de elementos finitos e volumes fini- tos tamb´em, neste cap´ıtulo consideraremos o seu emprego apenas em malhas de diferen¸cas finitas para a equa¸c˜ao de Poisson no quadrado. A tabela a seguir (adaptada de [TOS]) compara o custo de processamento em uma m´aquina serial de alguns dos m´etodos mais populares para resolver sistemas lineares que surgem na discretiza¸c˜ao do problema de Poisson (`a exce¸c˜ao do m´etodo de elimina¸c˜ao gaussiana cujo custo de armazena- mento ´e O n2, todos os demais m´etodos tem custo de armazenamento O (n)). Como estamos comparando m´etodos diretos (elimina¸c˜ao gaussiana e transformada de Fourier r´apida (FFT) ) com m´etodos iterativos (todos os demais), assumimos um ´unico crit´erio de parada para os v´arios m´etodos iterativos; se o crit´erio de parada for escolhido da ordem do erro de discretiza¸c˜ao da malha, um fator O (log n) deve ser multiplicado para todos os m´etodos iterativos, `a exce¸c˜ao do multigrid completo.
M´etodo n´umero de opera¸c˜oes (2D; n = N2)
Elimina¸c˜ao Gaussiana O n3 Jacobi O n2 Gauss-Seidel O n2 SOR O n3/2 Gradiente Conjugado O n3/2 FFT O (n log n) Multigrid iterativo O (n) Multigrid completo O (n)
A id´eia do m´etodo multigrid ´e baseada em dois princ´ıpios: suaviza¸c˜ao do erro e a sua corre¸c˜ao em um grid mais grosseiro (menos refinado). Estes princ´ıpios ser˜ao explicados em detalhes nas pr´oximas se¸c˜oes.
Em linhas gerais, a id´eia b´asica ´e eliminar os componentes de alta freq¨uˆencia do erro em uma malha refinada. Para que isso ocorra, ´e necess´ario que estes componentes de alta freq¨uˆencia correspondam aos menores autovalores da matriz de itera¸c˜ao porque, como vimos no cap´ıtulo anterior, estes s˜ao eliminados rapidamente pelos m´etodos iterativos lineares (a velocidade de convergˆencia de cada m´etodo ´e dada pelo raio espectral da matriz de itera¸c˜ao, que corresponde ao valor absoluto do maior autovalor |λ1| < 1, enquanto
que as componentes do erro correspondentes aos menores autovalores λj convergem para zero muito mais
rapidamente (|λj/λ1| 1); isso significa que este m´etodo iterativo suaviza o erro, pois quanto maior a
influˆencia das componentes de maior freq¨uˆencia (maior oscila¸c˜ao), menos suave ´e a fun¸c˜ao. Aqui ´e ´util fazer uma analogia com a s´erie de Fourier: ´e exatamente a presen¸ca de componentes de oscila¸c˜ao arbitrariamente maior que permite que a s´erie convirja para uma fun¸c˜ao n˜ao diferenci´avel, ou mesmo descont´ınua; se a s´erie for truncada a qualquer momento o resultado ´e sempre uma fun¸c˜ao suave, pois ´e a combina¸c˜ao linear finita de autofun¸c˜oes suaves. Esta visualiza¸c˜ao tamb´em permanece verdade para fun¸c˜oes discretizadas em
malhas de diferen¸cas finitas escritas como uma combina¸c˜ao linear das autofun¸c˜oes da matriz de itera¸c˜ao nesta malha: mesmo que o n´umero de componentes da fun¸c˜ao seja finito, porque a malha ´e discreta a presen¸ca de componentes de alta oscila¸c˜ao d˜ao origem a um gr´afico com um aspecto escarpado, n˜ao suave.
Assim, como o nosso objetivo ´e eliminar apenas as componentes de alta freq¨uˆencia do erro, e n˜ao todo o erro, poucas itera¸c˜oes do m´etodo iterativo s˜ao necess´arias nesta malha refinada, onde o custo computacional ´e alto (malhas muito refinadas significa que elas possuem muitos pontos, o que por sua vez implica em matrizes de discretiza¸c˜ao muito grandes). Ocorre que algumas autofun¸c˜oes de freq¨uˆencia baixa em uma malha mais refinada correspondem a autofun¸c˜oes de freq¨uˆencia alta em uma malha mais grosseira (como veremos). Uma vez tendo eliminado as componentes de alta freq¨uˆencia do erro na malha mais refinada, tendo deixado as componentes de baixa freq¨uˆencia praticamente intocadas, transferimos o problema para uma malha mais grosseira, cujos componentes de alta freq¨uˆencia do erro correspondem a alguns dos componentes de baixa freq¨uˆencia do erro na malha mais refinada anterior, que n˜ao puderam ser eliminados com as poucas itera¸c˜oes do m´etodo iterativo permitidas na malha mais refinada. Com poucas itera¸c˜oes do m´etodo iterativo nesta malha mais grosseira, estes erros tamb´em s˜ao rapidamente eliminados, a um custo computacional mais baixo do que se tiv´essemos tentado elimin´a-los ainda na malha mais refinada. Este processo ´e a corre¸c˜ao do erro em uma malha mais grosseira. Ele ´e repetido em malhas cada vez mais grosseiras at´e que todo o erro ´e eliminado, a um custo computacional muito mais baixo do que se tiv´essemos trabalhado sempre na malha mais refinada original.
6.1
A Malha de Multigrid
A discretiza¸c˜ao uniforme do problema de Poisson
−∆u = f em Ω, u = 0 sobre ∂Ω, onde Ω = (0, 1)2⊂ R2´e o quadrado unit´ario, ser´a denotada por
−∆huh= fh em Ωh,
uh= 0 sobre ∂Ωh,
(6.1) onde uhcomo usual denota a solu¸c˜ao do problema discretizado (aproxima¸c˜ao da solu¸c˜ao exata), fh a discre-
tiza¸c˜ao da fun¸c˜ao f em Ωh, h = 1 n, (6.2) Ωh= {(x, y) ∈ Ω : (x, y) = (ih, jh) , 1 6 i, j 6 n − 1} , ∂Ωh= {(x, y) ∈ ∂Ω : (x, y) = (ih, jh) , i = 0 ou i = n e 0 6 j 6 n; j = 0 ou j = n e 0 6 i 6 n} e − ∆huh= 1 h2 −1 −1 4 −1 −1 (6.3)
ou, em outras palavras, −∆huh=
−uh(xi−1, yj) − uh(xi+1, yj) + 4uh(xi, yj) − uh(xi, yj−1) − uh(xi, yj+1)
h2 ,
com (xi, yj) = (ih, jh), ´e o operador de discretiza¸c˜ao dado pela f´ormula dos cinco pontos. Denotaremos
usualmente a solu¸c˜ao aproximada uh na itera¸c˜ao k (ou seja, uma aproxima¸c˜ao da solu¸c˜ao discretizada, de
acordo com o m´etodo iterativo utilizado) por
de modo que o erro do m´etodo iterativo na itera¸c˜ao m ´e dado por
emh (xi, yj) = uh(xi, yj) − umh (xi, yj) . (6.5)
Em geral, tomaremos n par, ou mesmo n = 2p para algum p. Assim, uma malha Ω
h ´e mais refinada que
uma malha Ω2h (esta ´e mais grosseira que a primeira). Temos uma seq¨uˆencia de malhas progressivamente
mais grosseiras:
Ωh⊂ Ω2h⊂ Ω4h⊂ . . . ⊂ Ω2ph= Ω1,
onde Ω1 possui apenas uma c´elula.