• Nenhum resultado encontrado

O método do gradiente conjugado é considerado, nos dias de hoje, uma das técnicas mais eficientes para a resolução de sistemas de equações lineares com matrizes de coeficientes simétricas e definidas positivas [Golub e O’Leary 1989].

Logo após o seu desenvolvimento nos anos 50 [Hestenes e Stiefel 1952], o método do gradiente conjugado foi considerado um método directo. Isto deve-se ao facto de este método permitir obter, em termos de aritmética exacta, a solução de um sistema de n equações lineares num máximo de n iterações14. No entanto, rapidamente se constatou que os erros provenientes do arredonda-

mento numérico destruíam a propriedade de convergência finita deste método, pelo que este não constituía uma alternativa eficiente para a factorização de sistemas densos de equações lineares. Neste contexto, o método CG não mereceu grande atenção por parte da comunidade científica, até que, nos anos 70, as suas capacidades como método iterativo foram evidenciadas15 por Reid

[Reid 1971]. Apesar disso, o método CG continuou a ser considerado como incapaz de suplantar a velocidade de cálculo dos métodos directos [Irons e Ahmad 1980]. No entanto, o método CG tem vindo a demonstrar a sua competitividade face aos métodos directos [Farhat e Wilson 1987]. Umas

10Do inglês: Minimal Residual. 11Do inglês: Symmetric LQ.

12Do inglês: Generalised Minimal Residual. 13Do inglês: Bi-Conjugate Gradient Stabilized.

14De um modo mais preciso, o método do gradiente conjugado permite determinar, em termos de precisão infinita,

a solução num número finito e predeterminado de operações.

15Na realidade, as mesmas observações já tinham sido publicadas cerca de uma década antes [Engeli et al. 1959].

Método do Gradiente Conjugado

das razões para esta competitividade deve-se à utilização de precondicionadores16. Na realidade,

verifica-se que a velocidade de convergência do método CG é altamente dependente do condici- onamento do sistema de equações lineares [Barrett et al. 1994]. Assim, a utilização de técnicas de precondicionamento de um sistema de equações lineares permite obter velocidades de cálculo superiores às dos métodos directos [Saint-Georges et al. 1996]. No entanto, ao contrário do que se passa com os métodos directos, o uso conveniente dos métodos iterativos exige, por parte do utilizador, um conhecimento relativamente profundo das várias técnicas de precondicionamento, aliado a alguma experiência.

A utilização do método CG não obriga ao armazenamento das componentes nulas da matriz A (esparsa). Além disso, a simetria desta matriz possibilita ainda o não-armazenamento de uma das suas partes triangulares (estritamente) superior ou inferior. Por outro lado, a natureza intrinseca- mente paralelizável do método CG, em particular, e de grande parte dos métodos iterativos, em geral, constitui também uma vantagem relevante deste método em relação aos métodos directos.

De acordo com o que foi referido na Secção 7.3, a resolução do sistema de equações 7.1 com o método do gradiente conjugado baseia-se na técnica de projecção ortogonal num subespaço afim x(0)+ KmA, r(0). Para uma matriz A simétrica e definida positiva, esta técnica corresponde [Axelsson 1996] à minimização da função quadrática

ϕ(x) = 1

2(b− Ax)

T

A−1(b− Ax) . (7.14)

Em cada iteração, o método do gradiente conjugado procura minimizar ϕ ao longo do vector x(k)+αk+1p(k+1), em que x(k)é a solução aproximada actual e αk+1um escalar que actua segundo a direcção de busca p(k+1), isto é,

x(k+1)= x(k)+ αk+1p(k+1). (7.15)

Substituindo a expressão 7.15 na equação 7.14, derivando esta última em ordem a αk+1e aplicando a condição de estacionariedade, obtém-se17

αk+1= p

(k+1)Tr(k)

p(k+1)TAp(k+1), (7.16)

em que r(k)= b− Ax(k) é o resíduo actual. Por outro lado, de acordo com a equação 7.15, o novo resíduo consiste em

r(k+1)= r(k)− αk+1Ap(k+1). (7.17)

Multiplicando ambos os termos da equação 7.17 por p(k+1)Te substituindo nesta a equação 7.16, obtém-se

p(k+1)Tr(k+1)= 0. (7.18)

Assumindo que as direcções de busca são conjugadas18relativamente a A, tem-se para duas direc-

ções consecutivas que

p(k+1)TAp(k)= 0. (7.19)

A direcção de procura p(k+1) é definida recursivamente por

p(k+1)= r(k)+ βkp(k), (7.20)

16As técnicas de precondicionamento e a sua aplicação ao método do gradiente conjugado serão abordadas com

maior detalhe em secções subsequentes.

17Atenda-se ao facto de, por uma questão de simplificação da notação utilizada e sem perda de generalidade, se

omitirem os parêntesis externos na representação do vector transposto de um vector com índice superior de iteração,

e.g. utiliza-sep(k+1)T para representarˆp(k+1)˜T.

18Os vectoresx e y ∈ IRndizem-se conjugados relativamente à matrizA ∈ IRn×nsimétrica e definida positiva se

Método do Gradiente Conjugado

em que βk é um escalar. Multiplicando ambos os termos da equação 7.20 por r(k)T, atendendo à equação 7.18 e substituindo na equação 7.16, vem

αk+1= r

(k)Tr(k)

p(k+1)TAp(k+1). (7.21)

Resta proceder à determinação do parâmetro βk. Assim, transpondo a equação 7.20 e substituindo na equação 7.19, obtém-se

βk=r

(k)TAp(k)

p(k)TAp(k). (7.22) Multiplicando a equação 7.17 por p(k)T e atendendo às equações 7.18 e 7.19, tem-se que

p(k)Tr(k+1)= 0. (7.23)

Por outro lado, multiplicando a equação 7.20 por r(k+1)T e atendendo às equações 7.18 e 7.23, obtém-se

r(k+1)Tr(k)= 0. (7.24)

Assim, a substituição das equações 7.17, 7.21 e 7.24 na equação 7.22 resulta em

βk = r

(k)Tr(k)

r(k−1)Tr(k−1). (7.25)

As equações anteriores definem o método do gradiente conjugado19. O seu algoritmo encontra-se ilustrado na tabela 7.1. Nmáx corresponde ao número máximo de iterações admissível.

Tabela 7.1: Algoritmo do método do gradiente conjugado. 1. Definir x(0)

2. r(0)= b− Ax(0)

3. Repetir — Ciclo iterativo em k = 0, . . . 3.1 Se k = 0, então p(k+1)= r(k) Senão βk =r(k)Tr(k)/r(k−1)Tr(k−1) p(k+1)= r(k)+ βkp(k) Fim Se 3.2 αk+1=r(k)Tr(k)/p(k+1)TAp(k+1) 3.3 x(k+1)= x(k)+ αk+1p(k+1) 3.4 r(k+1)= r(k)− αk+1Ap(k+1) Até convergência ou k + 1 = Nmáx

Embora seja difícil prever exactamente a taxa de convergência do método CG, é possível obter um limite superior para a norma do erro associada a cada iteração k. Este limite encontra-se

19Uma apresentação intuitiva e baseada em ilustrações geométricas do método do gradiente conjugado pode ser

Técnicas de Precondicionamento

relacionado com o número de condição espectral20 da matriz A, κ(A). De facto, considerando a

norma-A21, a taxa de convergência pode ser avaliada [Ortega 1988] com base na expressão

||x(k)− x|| A≤ 2 &0 κ(A)− 1 0 κ(A) + 1 'k ||x(0)− x|| A. (7.26)

Assim, de acordo com a expressão 7.26, verifica-se que a norma-A do erro e(k) = x(k)− x∗ tende para zero quando k→ +∞. Deste modo, a sequência da norma-A do erro decresce monotonamente para 0. Este facto justifica a natureza iterativa do método do gradiente conjugado [Meurant 1999]. Além disso, constata-se que quanto mais próximo for κ(A) de 1 maior será a taxa de convergência do processo iterativo22. Neste contexto, o precondicionamento consiste na obtenção de um sistema equivalente ao da expressão 7.1 em que a nova matriz de coeficientes possui um número de condição espectral mais próximo da unidade. Deste modo, esta técnica permite a obtenção da solução com uma taxa de convergência mais elevada.

Em seguida, abordam-se os principais aspectos relativos à técnica de precondicionamento e referem-se alguns precondicionadores usualmente aplicados ao método do gradiente conjugado.