Universidade Federal do Espírito Santo Departamento de Informática 2 o Trabalho de Algoritmos Numéricos II - 11/1 Métodos não-estacionários - Sistemas Lineares Data de entrega: 21/06/11 Objetivo Implementar algoritmos de solução de sistemas esparsos de grande porte utilizando métodos iterativos não-estacionários e armazenamento otimizado. Descrição Frequentemente os processos de solução de problemas das mais diversas áreas do conhecimento recaem na necessidade de resolver sistemas lineares. Na maioria das vezes esses sistemas são esparsos e de grande porte. O armazenamento otimizado é crucial na eficiência do método numérico considerado, tanto em ecomomia de memória, quanto em operações de ponto flutuante, que impactam diretamente no tempo de processamento. Neste trabalho vamos considerar o conhecido armazenamento CSR (Compress Sparse Row) que armazena somente os coeficientes não nulos de uma matriz esparsa em um vetor ordenado linha por linha. Além desse vetor, é necessário armazenar informações adicionais das colunas e localização dos coeficientes nas linhas (maiores detalhes ver descrição detalhada na página do curso). Este trabalho tem por objetivo implementar e analizar os algoritmos iterativos não-estacionários GMRES e LCD na solução de sistemas lineares considerando a forma otimizada de armazenamento para matrizes esparsas CSR. Dado um sistema Ax = b com a matriz dos coeficientes armazenada utilizando a estrutura CSR e a linguagem C: 1. Implemente um algoritmo baseado no Método Iterativo GMRES(k), tendo como parâmetros de entrada: matriz esparsa A armazenada pela estrutura CSR, vetor dos termos independentes b, tolerância ǫ, número m aximo de iterações N max, número de vetores de Krylov para o restart k. 2. Implemente um algoritmo baseado no Método Iterativo LCD(k), tendo como parâmetros de entrada: matriz esparsa A armazenada pela estrutura CSR, vetor dos termos independentes b,
tolerância ǫ, Validação número máximo de iterações N max, número de vetores de Krylov para o restart k. Para validação dos algoritmos implementados será usado o repositório de matrizes EsparsasdaUniversidadedaFlórida(CISE) 1 quedisponibiliza umaquantidadeconsiderável de matrizes esparsas oriundas das mais variadas áreas para apoio a estudos comparativos de algoritmos numéricos. Exemplos de matrizes depositadas no CISE podem ser observadas na Fig. 1. A Tab. 1 apresenta algumas características dessas matrizes. Tabela 1: Propriedades das Matrizes Matriz Área de aplicação n nnz saylr1 Diânmica dos Fluidos Computacional 238 1128 orsirr2 Diânmica dos Fluidos Computacional 1030 6858 orsreg1 Diânmica dos Fluidos Computacional 2205 2205 FEM3Dthermal1 Problema Térmico 17880 430740 wathen100 Problema randomico 2D/3D 30401 471601 cage13 Eletroforese de DNA 445315 7479343 Todas as informações das matrizes podem ser obtidas navegando pelas coleções e referidos conjuntos descritos na Tab. 1. O formato indicado para todas as matrizes é <nome>.mtx. Por exemplo, a matriz saylr1 possui um arquivo tipo mtx como mostrado na Fig. 2. Observe que os coeficientes não nulos estão listados coluna a coluna. Lembramos que o formato de armazenamento otimizado CSR, armazena os coeficientes não nulos linha a linha. Para facilitar, neste trabalho será considerada a matriz transposta (A t ) como matriz dos coeficientes do sistema onde: A é a matriz oriunda do arquivo tipo mtx, x é o vetor solução. Seu valor exato é x = (1 1 1... 1) t, b = A t x b i = n i=1 a ji. A t x = b (1) Implemente uma função que leia um arquivo tipo <nome>.mtx, armazene a matriz A t no formato CSR e gere o vetor dos termos independentes b. 1 http://www.cise.ufl.edu/research/sparse/matrices/
(a) saylr1, n = 238, nnz = 1128 (b) orsirr2, n = 886, nnz = 5970 (c) orsirr1, n = 1030, nnz = 6858 (d) FEM3Dthermal1, n = 17880, nnz = 430740 (e) wathen100, n = 30401, nnz = 471601 (f) cage13, n = 445315, nnz= 7479343 Figura 1: Exemplos de Matrizes do Repositório CISE
Figura 2: Exemplo de arquivo <nome>.mtx das matrizes esparsas do repositório CISE Experimentos Numéricos Observações: Aseguirestãolistadososexperimentosnuméricosobrigatórios. Ébomlembrar que outros experimentos podem ser incorporados ao relatório com o objetivo de enriquecer seu trabalho. Os parâmetros: ǫ, Nmax e k devem ser escolhidos de acordo com as características do seu teste. Leia os dados de cada matriz no repositório CISE com relação as características de convergência. Se existirem experimentos não convergentes, explicar no relatório as possíveis causas. Para o conjunto das 6 matrizes esparsas listadas na Tab. 1: 1. faça um estudo empírico do número de vetores de Krylov k nos métodos GM- RES e LCD considerando ǫ = 10 7 ; 2. encontre a solução do sistema 1 pelos métodos GMRES(k) e LCD(k) e faça um estudo comparativo com relação ao número de iterações e tempo de processamento para os 2 métodos iterativos. 3. apresente o gráfico do resíduo com relaã Ã o ao número de iterações (eixo x deve ser formado pelo número de iterações e eixo y o logarítmo do resíduo).
Relatório O relatório deverá ser escrito observando as normas do padrão ABNT. A divisão do relatório deve ser de acordo com as seguintes sessões: Introdução: onde deve ser apresentado a estrutura do trabalho e os objetivos Armazenamento CSR e Métodos Iterativos: onde deve ser sintetizado os conteúdos do trabalho. Implementação: onde devem ser apresentados a estutura e partes significativas do código comentado. Experimentos Numéricos: onde devem ser apresentados os exemplos testes utilizados, tanto as entradas para os programas bem como tabelas e gráficos, quando for necessário. Conclusão: onde devem ser discutidos os resultados obtidos.