• Nenhum resultado encontrado

Precondicionamento de sistemas de equa¸ c˜ oes lineares

Apesar da boa fundamenta¸c˜ao te´orica do m´etodo dos gradientes con- jugados e outros m´etodos iterativos, tais m´etodos geralmente possuem lenta convergˆencia em problemas comuns como dinˆamica de fluidos ou simula¸c˜ao de dispositivos eletrˆonicos. O precondicionamento ´e o ingrediente chave para o sucesso de m´etodos de subespa¸co de Krylov, como o m´etodo dos gradientes conjugados, para essas aplica¸c˜oes (SAAD, 2003). Tanto a efici- ˆencia quanto a robustez dos m´etodos iterativos podem ser melhoradas com a utiliza¸c˜ao do precondicionamento. Saad (2003), tamb´em, afirma que, em geral, a confiabilidade dos m´etodos iterativos, em se tratando de aplica¸c˜oes

variadas, depende da t´ecnica de precondicionamento utilizada.

Em termos simples, o precondicionamento pode ser definido como uma forma de transformar um SEL em outro que seja mais f´acil de resolver por meio de um m´etodo iterativo e que possua a mesma solu¸c˜ao que o origi- nal. Esse SEL resultante poder´a demandar menos itera¸c˜oes para convergir do que o SEL original, embora isso n˜ao seja garantido (SAAD, 2003).

O primeiro passo para se realizar o precondicionamento ´e encontrar a matriz precondicionadora M. Essa matriz pode ser encontrada de diver- sas formas, por´em, precisa respeitar alguns requisitos m´ınimos. Do ponto de vista pr´atico, ´e necess´ario que o custo de se solucionar Mx = b seja m´ı- nimo, pois em cada itera¸c˜ao do m´etodo iterativo M, precisar´a ser calculada. Este custo, obviamente, ser´a adicionado ao m´etodo de resolu¸c˜ao de sistemas lineares aplicado. Outro requisito ´e que M precisa ser n˜ao singular. Isso sig- nifica que M dever´a admitir inversa. Em termos simples, a matriz M n˜ao pode possuir linha ou coluna linearmente dependente.

Existem trˆes formas de se aplicar o precondicionador ao SEL. O precondicionador pode ser aplicado pela esquerda em que se gera o sistema precondicionado

M−1Ax= M−1b. (14)

Analogamente, pode-se aplicar o precondicionado pela direita, da seguinte maneira

AM−1u= b, x≡ M−1u, (15)

em que u = Mx.

A terceira forma pode ser utilizada, quando o precondicionador est´a dispon´ıvel na forma fatorada M = MLMR, em que ML e MR s˜ao matrizes

triangulares. Nesse caso, o precondicionador pode ser separado em

ML−1AMR−1u= ML−1b, x≡ MR−1u. (16)

Esse tipo de precondicionador ´e conhecido como split. ´

E necess´ario preservar a simetria da matriz original, quando a mesma ´e sim´etrica, para isso, pode-se utilizar um precondicionador do tipo split. Todavia, existem outras formas de preservar a simetria ou, se poss´ıvel, ti- rar vantagem da simetria mesmo se M n˜ao est´a dispon´ıvel na forma fato- rada (SAAD, 2003). Esses detalhes s˜ao discutidos na subse¸c˜ao 2.8.1 para o m´etodo dos gradientes conjugados. Em seguida, na subse¸c˜ao 2.8.2, s˜ao apresentadas algumas t´ecnicas de precondicionamento.

2.8.1 M´etodo dos gradientes conjugados precondicionado

Considere as matriz A e a matriz precondicionadora M que aproxima Ade certa forma, ambas sim´etricas positivo-definidas. Pode-se precondici- onar o SEL das trˆes formas j´a apresentadas nas equa¸c˜oes 14, 15 e 16. As duas primeiras equa¸c˜oes n˜ao s˜ao sim´etricas em geral. Para manter a sime- tria, pode-se utilizar uma das seguintes estrat´egias.

Se M est´a dispon´ıvel na forma de uma fatora¸c˜ao incompleta de Cho- lesky, ou seja, M = LLT, pode-se preservar a simetria usando um precondi-

cionador do tipo split como na equa¸c˜ao 16. Tem-se, ent˜ao, a seguinte forma de aplicar o precondicionador

L−1AL−Tu= L−1b, x= L−Tu. (17)

tipo split para manter a simetria. Pode-se utilizar o gradiente conjugado precondicionado apresentado na Figura 4. Utiliza-se a matriz precondicio- nadora M e a vari´avel zk para alterar o algoritmo do gradiente conjugado

apresentado no algoritmo . Para mais detalhes sobre o gradiente conjugado precondicionado, veja Saad (2003).

Algoritmo: M´etodo dos gradientes conjugados precondicionado.

ε ← 10−16; // Precis~ao num´erica 1 x0← 0; // Estimativa inicial 2 r0← b − Ax0; 3 z0= M−1r0; 4 d0← r0; 5 k← 1; 6 erro← ε + 1; 7 // n ´e a dimens~ao de x

enquanto ( (k ≤ n) ∧ (erro > ε) ) fa¸ca

8 αk← rT k−1zk−1 dT kAdk ; 9 xk← xk−1+ αkdk; 10 rk← rk−1+ αkAdk; 11 zk= M−1rk; 12 erro←kxk−xk−1k∞ kxkk∞ ; 13 k← k + 1; 14 βk← rTkzk rT k−1zk−1; 15 dk+1← zk+ βkdk; 16 fim-enquanto; 17

Figura 4 M´etodo dos gradientes conjugados precondicionado.

A seguir, s˜ao apresentadas algumas t´ecnicas de precondicionamento comumente utilizadas.

2.8.2 T´ecnicas de precondicionamento

Uma t´ecnica muito simples para se efetuar o precondicionamento ´e a matriz diagonal definida por

mi j=    1 ai j, se i = j 0, se i6= j (18)

que ´e conhecida como precondicionador de Jacobi (BENZI, 2002). Pode- se utilizar esta t´ecnica de precondicionamento sem que seja necess´aria a utiliza¸c˜ao extra de mem´oria. Para isso, basta utilizar o inverso da diagonal principal de A diretamente.

Pode-se obter um precondicionador utilizando a fatora¸c˜ao incom- pleta de Cholesky da matriz A. Esta fatora¸c˜ao baseia-se na decomposi¸c˜ao de Cholesky, utilizada na resolu¸c˜ao de SELs, decompondo-se a matriz A em A= LLT, em que L ´e uma matriz triangular inferior.

No processo de decomposi¸c˜ao da matriz A, elementos nulos podem tornar-se n˜ao nulos, modificando o padr˜ao de distribui¸c˜ao de zeros da matriz. Para contornar essa situa¸c˜ao, utiliza-se a fatora¸c˜ao incompleta e garante- se que os elementos nulos na matriz A permane¸cam nulos em M. Esse precondicionador ´e conhecido por precondicionador incompleto de Cholesky com zero preenchimento ou IC(0) (LEW et al., 2009). Mais detalhes sobre o IC(0) podem ser encontrados em Benzi (2002).

Outra t´ecnica baseada em uma fatora¸c˜ao incompleta ´e a fatora¸c˜ao incompleta LU com zero preenchimento conhecida como ILU(0). A fato- ra¸c˜ao incompleta calcula as matrizes triangulares inferior L e superior U, ambas esparsas. Pode-se definir um limiar de tolerˆancia τ > 0 de forma que os elementos ai j< τi s˜ao descartados em M. O valor de τi ´e obtido

multiplicando-se τ pela norma da i-´esima linha da matriz original A. Neste trabalho utilizou-se a norma euclidiana ||Ai,∗|| =!∑nj=1|ai j|2

1/2

, como indi- cado em Saad (2003). Ainda, uma outra regra de descarte pode ser apli- cada mantendo-se apenas os p maiores elementos nas linhas das matrizes L e R. Com isso, obt´em-se a t´ecnica de precondicionamento conhecida como ILUT(p, τ).

Para Benzi (2002), existe uma certa dificuldade em se definir o valor do limiar τ. Geralmente, isso pode ser feito por meio de tentativas e erros. Bons resultados podem ser obtidos para valores no intervalo 10−4< τ < 10−2,

por´em o valor ´otimo ´e fortemente atrelado ao problema (BENZI, 2002).