• Nenhum resultado encontrado

3 Experimentos numéricos

3.1.1 Propriedades estruturais

Consideramos as matrizes Z1, Z2 e K estruturalmente idêntidas no sentido de serem não simétricas (Z1 6= Z1T), terem elementos não nulos distintos nas mesmas posições e, consequentemente, possuem praticamente o mesmo grau de esparsidade após serem geradas.

Todas as matrizes Z1 deste trabalho foram geradas da seguinte forma:

1. Gera-se uma matriz “R” com densidade uniforme d ∼ U [0, 1] (densidade d com distribuição uniforme no intervalo [0, 1]);

2. Os elementos da diagonal nulos são substituídos por números positivos ale- atórios com a mesma densidade e os negativos são substituídos por menos o módulo de seu valor;

3. Feitas tais modificações na matriz R, tem-se a matriz Z1.

E assim, foi contruída a matriz Z1 (Z-matriz).

Para as matrizes Z2, temos:

1. Gera-se uma matriz “S” com a mesma densidade d de Z1;

2. É feito o mesmo processo 2 feito para a matriz Z1, porém, acrescenta-se a condição que para os elementos não nulos fora da diagonal estes estejam nas mesmas posições da matriz Z1 e os elementos positivos fora da diagonal são substituídos pelos seus negativos. Caso, não estejam, esses números não nulos são substituídos por zero.

3. Feitas tais modificações na matriz S, obtem-se a matriz Z2.

O objetivo de acrescentar tal condição no item 2 é que a matriz K (combinação linear de Z1 e de Z2) tenha praticamente mesma esparsidade de Z1 e Z2 para possibilitar certas comparações da variação do grau de esparsidade com outras

variáveis consideradas neste trabalho. A ideia é que estejamos trabalhando com o mesmo grau para Z1, Z2 e a combinação linear destas que é a matriz K.

Note que quando gera-se a matriz Z1e suponha que gerassemos a Z2da mesma forma que a Z1 sem acrescentar tal condição no item 2., embora que com a mesma densidade da Z1, teríamos K muito mais densa.

Exemplo. 3.1 Z1 =     0.2 0 −0.7 0 0.25 0 0 0 0.5     Z2 =     0.3 0 0 −0.1 0.2 0 0 0 0.9     (3.1) Se K = 0.5Z1− 0.5Z2, tem-se K =     −0.1 0 −0.35 0.05 0.025 0 0 0 −0.2     (3.2)

Nesse caso, Z1 e Z2 mas K não tem o mesmo grau de esparsidade. E isso dificultaria certas comparações importantes. Portanto, a condição do padrão de esparsidade no item 2 para Z2 evita este aumento de densidade K.

3.1.2

Propriedades numéricas

Sobre as propriedades numéricas para as matrizes Z1, Z2 e K, atentaremos para o grau de esparsidade (ge(·)) e o número de condicionamento (cond(·)).

Note que à medida que o valor da densidade (d) aumenta, o grau de esparsidade (ge) diminui e assim, as matrizes ficarão menos esparsas. São medidas inversamente proporcionais pois a densidade trata da razão entre o número de elementos não nulos e o número total de elementos da matriz, já o grau de esparsidade é a razão entre o número de elementos nulos e o número total de elementos da matriz

multiplicado por 100 para sair o valor em %.

Como foram feitas modificações nas matrizes geradas aleatoriamente com certa densidade d trocando-se elementos nulos por não nulos na diagonal das matrizes geradas, calculamos também o grau de esparsidade. Optamos, então, por usar apenas o grau de esparsidade da matriz devido a essas alterações.

3.2

Resultados numéricos

Apresentaremos os principais resultados obtidos, levando em conta diversas análises. Todos os experimentos numéricos foram realizados no software MA- TLAB R2013, 64-bit, instalado em uma máquina com processador Intel Core i5 2.60GHz×4 e 4Gb de memória RAM.

3.2.1

Configurações para as simulações numéricas

A tolerância tol usada para o GMRES em todos as simulações numéricas foi de krkk2

kbk = 10 −6.

Para as matrizes de ordem 300, sempre que trabalhamos com o GMRES(m) precondicionado ou não, utilizamos m = 60. Adotamos arbitrariamente esse valor e assim, foi fixado tal valor para todos os problemas. A norma do resíduo relativo é dada por kb − Axk2

kbk2

. Para o GMRES(m), precondicionado ou não, fixamos em 10 o número máximo de iterações seguindo a opcão DEFAULT de MATLAB. Para cada sistema, a solução exata é conhecida e o erro obtido em relação a solução exata pode ser visto nas tabelas apresentadas no Apêndice A. O erro é dado por

kx − x∗k 2 kx∗k

2

onde x é a solução exata do problema e x∗ é a solução aproximada obtida pelo método considerado.

A configuração utilizada para a fatoração ILU (0) no MATLAB encontra-se no Apêndice B onde constam os códigos com a programação feita no MATLAB.

Denotaremos apenas por

1. GMRES(60) para o método GMRES(60) sem precondicionador;

2. GMRES(60)/ILU (0) para GMRES(60) precondicionado com ILU (0);

3. GMRES para o método GMRES sem precondicionador;

4. GMRES/ILU (0) para GMRES precondicionado com ILU (0).

As barras coloridas ao lado dos gráficos de dispersão exibem o mapa de cores corrente e indicam o mapeamento dos valores dos graus de esparsidade para o mapa de cores. Ou seja, cada ponto colorido representa um problema diferente onde a essa cor indica o grau de esparsidade do problema considerado.

Apresentaremos agora os resultados que obtivemos.

3.2.2

Gráficos de dispersão

Apresentaremos os gráficos onde encontramos relações significativas entre o raio espectral das matrizes dos coeficientes, o grau de esparsidade e as normas do resíduo relativo para as matrizes Z1, Z2 e K. Como os resultados para as matrizes Z2 foram no estilo dos resultados para as matrizes Z1, então, por esse motivo, vamos expor apenas tais resultados para as matrizes Z1 e K.

Para o conjunto de todas matrizes de ordem 300 usadas neste trabalho, temos matrizes Z1, Z2 e K, onde cada uma das 50 triplas dessas de matrizes tem um certo grau de esparsidade. E, por sua vez, essas triplas tem grau de esparsidade variando de 90.26% a 99.57%. Para cada tripla, geramos um vetor aleatório b com densidade uniforme em [0, 1] e o chute inicial x0 é o vetor nulo, onde resolveremos os sistemas Z1x = b, Z2x = b e Kx = b, no caso, por 4 métodos numéricos.

Sobre o padrão de esparsidade, veja os spy’s de duas matrizes Z1, a primeira matriz é que tem o menor grau de esparsidade e segunda é a que tem o maior grau.

0 50 100 150 200 250 300 0 50 100 150 200 250 300 nz = 8764

Figura 5: spy da matriz Z1 com grau de esparsidade 90.26%.

0 50 100 150 200 250 300 0 50 100 150 200 250 300 nz = 390

Figura 6: spy da matriz Z1 com grau de esparsidade 99.57%.

Para as matrizes Z1, encontramos uma relação entre as variáveis grau de espar- sidade e a norma do resíduo relativo quando aplicado o GMRES ou GMRES(60) aos problemas Z1x = b, onde temos 50 matrizes Z1 com o grau de esparsidade variando no intervalo mencionado acima. Isto é, quando a matriz torna-se mais es- parsa, a norma do resíduo relativo também aumentou. Isto sugere uma influência

do grau de esparsidade quanto aos resíduos obtidos pelo GMRES ou GMRES(60). Nos casos em que fizemos o uso de precondicionador, não observamos tais relações.

90 91 92 93 94 95 96 97 98 99 100 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 x 10−6 Grau de esparsidade

Norma do residuo relativo

Z 1 − GMRES 91 92 93 94 95 96 97 98 99

Figura 7: Gráfico do grau de esparsidade × Norma residual relativa do GMRES. Matrizes Z1 de ordem 300.

Observamos, no gráfico acima, que quanto mais esparsos os problemas, maiores foram os valores das normas do resíduos relativos quando utilizamos o GMRES para essas Z-matrizes. Nota-se uma relação não linear um pouco acentuada.

90 91 92 93 94 95 96 97 98 99 100 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 Grau de esparsidade

Norma do residuo relativo

Z 1 − GMRES(60) 91 92 93 94 95 96 97 98 99

Figura 8: Gráfico do grau de esparsidade × Norma residual relativa do GM- RES(60). Matrizes Z1 de ordem 300.

Ainda há uma relação não linear bastante acentuada. Quanto mais esparsos foram os problemas, maiores foram os resíduos. O que sugere que a esparsidade dos problemas exerce alguma influência na norma do resíduo relativo do método considerado.

90 91 92 93 94 95 96 97 98 99 100 0 1 2 3 4 5 6 7 8 9 x 10−7 Grau de esparsidade

Norma do residuo relativo

K − GMRES 91 92 93 94 95 96 97 98 99

Figura 9: Gráfico do grau de esparsidade × Norma residual relativa do GMRES. Matriz K de ordem 300.

Para a matriz K, note que o resíduo não oscilou muito e ficou muito alto, mesmo com a esparsidade variando.

90 91 92 93 94 95 96 97 98 99 100 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 Grau de esparsidade

Norma do residuo relativo

K − GMRES(60) 91 92 93 94 95 96 97 98 99

Figura 10: Gráfico da norma residual relativa da matriz K × Norma residual relativa do GMRES(60). Matriz K de ordem 300.

Veja no gráfico acima que não há muita oscilação da norma do resíduo relativo à medida que varia-se o grau de esparsidade e os valores dessas normas foram muito altos. As matrizes K, que não pertencem mais ao conjunto das Z-matrizes, não apresentam resultados tão bons no sentido de poder sugerir relações lineares ou não lineares fortes entre essas variáveis. Isso é bastante notável ao observarmos as figuras 8 e 10. Assim, ressaltamos a forte influência da estrutura matricial nos resultados obtidos a fim de encontrar certos “padrões”.

Também observamos uma relação linear forte entre o grau de esparsidade das matrizes e o raio espectral da matriz ρ(Z1) para as matrizes Z1.

90 91 92 93 94 95 96 97 98 99 100 0 2 4 6 8 10 12 14 Grau de esparsidade

Raio espectral da matriz Z

1 Z 1 91 92 93 94 95 96 97 98 99

Figura 11: Gráfico do grau de esparsidade da matriz Z1 × Raio espectral da matriz Z1.

Veja que quando a matriz é mais esparsa, o ρ diminui.

90 91 92 93 94 95 96 97 98 99 100 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 Grau de esparsidade

Raio espectral da matriz K

K 91 92 93 94 95 96 97 98 99

Figura 12: Gráfico do grau de esparsidade da matriz K × Raio espectral da matriz K.

Veja que quando a matriz é mais esparsa, o ρ diminui, porém há maior varia- bilidade nos dados do que para a matriz Z1.

Se plotarmos, o gráfico com o raio espectral dessas matrizes Z1 pela norma do resíduo obtido pelo GMRES ou GMRES(60), teremos gráficos no estilo dos anteriores a esses dois gráficos acima. Isso acontece por conta dessa relação linear que há esse raio espectral e o grau de esparsidade.

Os gráficos de dispersão apresentados mostram similaridade dos resultados obtidos com o GMRES e o GMRES(60). No mesmo tempo, eles mostram uma diferença significativa entre as matrizes Z1 e as matrizes K.

3.2.3

Análise dos resíduos para Z

1

, Z

2

e K

A seguir, plotaremos as curvas de convergência para a tripla de matrizes (Z1, Z2,K) no mesmo gráfico que possuem o mesmo grau de esparsidade.

nas curvas de convergência dessas triplas para o GMRES ou para o GMRES(60). Notamos qua à medida que as matrizes ficam menos esparsas, a curva da matriz K tende a se afastar das curvas das matrizes Z1 e Z2.

Veja o gráfico envolvendo as matrizes mais esparsas:

0 50 100 150 200 250 300 10−7 10−6 10−5 10−4 10−3 10−2 10−1 100 Numero de iteracoes

Norma do residuo relativo

GMRES aplicado a matrizes com ge(⋅)=99.5667%

Z1 Z2 K

Figura 13: Gráfico referente às matrizes Z1, Z2 e K com o GMRES. Matrizes de ordem 300.

E nos casos de matrizes menos esparsas, o estilo dos gráficos é parecido com esse abaixo

0 50 100 150 200 250 300 10−5 10−4 10−3 10−2 10−1 100 Numero de iteracoes

Norma do residuo relativo

GMRES aplicado a matrizes com ge(⋅)=90.2533%

Z1 Z2 K

Figura 14: Gráfico referente às matrizes Z1, Z2 e K menos esparsas consideradas com o GMRES. Matrizes de ordem 300.

Averiguamos que algo semelhante aconteceu para esses mesmos casos anterio- res, porém, considerando o GMRES(60).

0 50 100 150 200 250 300 350 10−7 10−6 10−5 10−4 10−3 10−2 10−1 100 Numero de iteracoes

Norma do residuo relativo

GMRES(60) aplicado a matrizes com ge(⋅)=99.5667%

Z1 Z2 K

Figura 15: Gráfico referente às matrizes Z1, Z2 e K com o GMRES. Matrizes de ordem 300.

E nos casos de matrizes menos esparsas, o estilo dos gráficos é parecido com esse abaixo 0 50 100 150 200 250 300 350 10−2 10−1 100 Numero de iteracoes

Norma do residuo relativo

GMRES(60) aplicado a matrizes com ge(⋅)=90.2533%

Z1 Z2 K

Figura 16: Gráfico referente às matrizes Z1, Z2 e K menos esparsas consideradas com o GMRES. Matrizes de ordem 300.

É notável que nestes gráficos as diferenças em padrão de convergência entre as duas classes de matrizes. Z1, Z2 de um lado (Z-matrizes) e K do outro lado (não Z-matrizes).

A seguir, consideraremos outras combinações lineares das matrizes Z1 e Z2.

3.2.4

Análise dos resíduos para outras matrizes K

Nesta seção, analizaremos de forma similar a seção anterior, mas acrescen- tando 4 novas matrizes. Veremos o que acontece quando perturbamos gradativa- mente uma matriz K. Então, aos gráficos anteriores, acrescentaremos essas 4 novas matrizes.

K4 = Z1 − 4Z2 1 + 4 K2 = Z1 − 2Z2 1 + 2 K1/2 = Z1 − 0.5Z2 1 + 0.5 K1/4 = Z1 − 0.25Z2 1 + 0.25 . No caso, consideramos β = 4, 2,1 2, 1

4 de acordo com a expressão 2.6.

Enfatizamos o quanto a estrutura do problema influência bastante nas curvas de convergência conforme esperávamos. Pois quanto mais “próxima” a estrutura da matriz K for da matriz Z1 (ou Z2) mais próxima será sua curva de convergência da matriz Z1. No caso, a matriz K1/4 se aproxima da matriz Z1 e a curva de convergência da matriz K1/4 tende a ficar mais próxima da matriz Z1 do que a curva da matriz K.

Abaixo, considerando os problemas mais esparsos aos menos esparsos, vejamos o gráfico do oitavo problema mais esparso para o método GMRES.

0 50 100 150 200 250 300 10−7 10−6 10−5 10−4 10−3 10−2 10−1 100 Numero de iteracoes

Norma do residuo relativo

GMRES sem precondicionador − ge(.)=98.1833%

Z1 Z2 K 4 K 2 K K 1/2 K 1/4

Figura 17: Gráfico para GMRES. Problemas mais esparsos. Matrizes de ordem 300.

A partir do oitavo gráfico, observe que as curvas das matrizes K4, K2, K1/2, K1/4 ficam próximas das curvas de Z1 e de Z2, enquanto que a curva da matriz K se mantem mais afastada das demais e o número de iterações do GMRES para esta matriz é maior do que o das demais nos casos mais esparsos.

0 50 100 150 200 250 300 10−6 10−5 10−4 10−3 10−2 10−1 100 Numero de iteracoes

Norma do residuo relativo

GMRES sem precondicionador − ge(.)=90.2533%

Z1 Z2 K 4 K 2 K K 1/2 K 1/4

Figura 18: Gráfico para GMRES. Problemas menos esparsos. Matrizes de ordem 300.

Observamos que a curva da matriz K está quase sempre acima das demais em todos os problemas considerados, desde os problemas mais esparsos até os menos esparsos. Além disso, observe que quanto menos esparsos os problemas, mais iterações ocorreram usando GMRES para todas as matrizes. Ou seja, à medida que variou o grau de esparsidade das matrizes K4, K2, K1/2, K1/4, Z1, Z2 (do caso mais esparso para o menos esparso), notamos um aumento no número de iterações do GMRES para os problemas envolvendo estas matrizes. Quanto a matriz K, tivemos sempre um número elevado de iterações, em torno de 300, não influenciando a variação do grau de esparsidade dos 50 problemas considerados envolvendo essa matriz.

Agora, vejamos o quinto gráfico dos problemas mais esparsos para o método GMRES(60). 0 50 100 150 200 250 300 350 100 Numero de iteracoes Residuo relativo

gmres(60) sem precondicionador − ge(.)=98.7778%

Z1 Z2 K 4 K 2 K K 1/2 K 1/4

Figura 19: Gráfico para GMRES(60). Problemas mais esparsos. Matrizes de ordem 300.

A partir desse gráfico, observamos que as curvas das matrizes K4, K2, K1/2, K1/4 ficam próximas das curvas de Z1 e de Z2, ocorrendo estagnação depois da iteração 70, aproximadamente.

0 50 100 150 200 250 300 350 10−2 10−1 100 Numero de iteracoes Residuo relativo

gmres(60) sem precondicionador − ge(.)=90.2533%

Z1 Z2 K 4 K 2 K K 1/2 K 1/4

Figura 20: Gráfico para GMRES(60). Problemas menos esparsos. Matrizes de or- dem 300.

Nesse caso dos problemas menos esparsos, temos praticamente a mesma situ- ação do gráfico anterior (Figura 19), porém a curva da matriz K ficou ainda mais distante das demais.

Para o GMRES(60) ou o GMRES ambos com precondicionador ILU(0) não observamos tais relações.

Portanto, observamos por meio desses gráficos que pequenas pertubações nas Z-matrizes não influenciam muito nas curvas de convergência para o GMRES (ou GMRES(m)) sem precondicionador.

3.3

Perfil de desempenho

A ideia do perfil de desempenho é avaliar e comparar o desempenho do conjunto de algoritmos S em um conjunto de testes P. Segue uma breve apresentação desse método extraído do artigo onde foi proposto (DOLAN; MORÉ, 2002).

por exemplo, o tempo de CPU como uma medida de desempenho. Para cada problema p e solver s, definimos

tp,s = tempo necessário de processamento para resolver o problema p por s solvers.

A fim de comparar o desempenho no problema p pelo solver s com melhor desempenho por qualquer solver aplicado a este problema, usamos o raio de de- sempenho dado por

rp,s=

tp,s min{tp,s; s ∈ S}

.

Assuma que parâmetro rM > rp,s para todo p, s escolhidos e rp,s = rM se, e somente se, o solver s não soluciona o problema p.

Deseja-se obter uma avaliação global do desempenho do solver. Se definirmos

ρs(τ ) = 1 np

#{p ∈ P; rp,s 6 τ },

então ρs é a probabilidade do solver s ∈ S que do raio de desempenho rp,s é com um fator τ ∈ R do melhor raio possível. A função ρs é uma função de distribuição acumulada para o raio de desempenho.

O perfil de desempenho ρs : R → [0, 1] para um solucionador é não decrescente, constante por partes e contínua à direita em cada ponto de descontinuidade. O valor de ρs(1) é a probabilidade que o solver ganhou sobre o restante dos solvers. Assim, se estamos interessados apenas no número de vitórias, precisamos apenas para comparar os valores de ρs(1) para todos os solucionadores.

Veja os gráficos de perfil de desempenho para 50 problemas Z1x = b resolvidos por quatro métodos numéricos (listados no Apêndice A).

10 20 30 40 50 60 0 0.2 0.4 0.6 0.8 1 τ ρ s (τ ) Z 1 − Numero de iteracoes GMRES(60) GMRES(60)/ILU(0) GMRES GMRES/ILU(0)

Figura 21: Perfil de desempenho para o número de iterações com 50 problemas envolvendo a matriz Z1. Matrizes de ordem 300.

A curva que apresenta o menor numero de iterações é a do GMRES/ILU(0). As- sim, com relação ao número de iterações, quando τ = 1, veja que o GMRES/ILU(0) foi melhor, seguido do GMRES(60)/ILU(0) com mais de 95%. Em seguida, temos o GMRES com um pouco mais de 15%. Notemos que o GMRES e o GMRES(60) resolveram cerca de 30% dos problemas apenas.

2 4 6 8 10 12 0 0.2 0.4 0.6 0.8 1 τ ρ s (τ ) Z 1 − Tempo GMRES(60) GMRES(60)/ILU(0) GMRES GMRES/ILU(0)

Figura 22: Perfil de desempenho para o tempo com 50 problemas envolvendo a matriz Z1. Matrizes de ordem 300.

Nos experimentos numéricos, consideramos o tempo gasto de apenas uma exe- cução do algoritmo.

Os valores à esquerda com τ = 1 no gráfico mostram que o GMRES/ILU(0) alcançou solução ótima em mais de 80% dos problemas envolvendo as matrizes Z1 utilizando menor tempo de execução de CPU(s) se comparado aos demais métodos. Em seguida, temos o GMRES com um pouco mais de 15%.

Agora, vejamos os gráficos para os problemas Kx = b. Para as matrizes K temos praticamente as mesmas observações feitas para as matrizes Z1.

10 20 30 40 50 60 0 0.2 0.4 0.6 0.8 1 τ ρ s (τ ) K − Numero de iteracoes GMRES(60) GMRES(60)/ILU(0) GMRES GMRES/ILU(0)

Figura 23: Perfil de desempenho para o número de iterações com 50 problemas envolvendo a matriz K. Matrizes de ordem 300.

Os valores à esquerda com τ = 1 no gráfico mostram que o GMRES/ILU(0) alcançou solução ótima em 100% dos problemas envolvendo as matrizes K uti- lizando menor número de iterações se comparado aos demais métodos, seguido do GMRES(60)/ILU(0) com um pouco mais de 95%. Observe que o GMRES e o GMRES(60) resolveram cerca de 40% dos problemas apenas.

2 4 6 8 10 12 0 0.2 0.4 0.6 0.8 1 τ ρ s (τ ) K − Tempo GMRES(60) GMRES(60)/ILU(0) GMRES GMRES/ILU(0)

Figura 24: Perfil de desempenho para o tempo com 50 problemas envolvendo a matriz K. Matrizes de ordem 300.

Os valores à esquerda com τ = 1 no gráfico mostram que o GMRES(60)/ILU(0) alcançou solução ótima em mais de 80% dos problemas envolvendo as matrizes K utilizando menor tempo de execução de CPU(s) se comparado aos demais métodos. Em seguida, temos o GMRES/ILU(0) com um pouco mais de 18%.

Observamos, então, que o método GMRES/ILU(0) e GMRES(60) foram os melhores com relação ao tempo e também como relação ao número de iterações. Isso tanto para as matrizes Z1 com para as matrizes K.

E sobre as tabelas 2, 4, 6 e 8 (veja Apêndice A), nota-se que houve con- vergência para a maioria dos problemas onde usamos GMRES/ILU(0) e o GM- RES(60)/ILU(0), ver figuras 21, 22, 23, 24. O que reforça a importância do uso de precondicionadores.

Documentos relacionados