Universidade Federal do Espírito Santo Departamento de Informática 1 o Trabalho de Algoritmos Numéricos - 11/1 Data de entrega: 22/05/11 Sistemas Lineares (Cursos: Física e Matemática) Objetivo Implementar algoritmos de solução de sistemas esparsos de grande porte utilizando métodos iterativos 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 armazenamento tradicional que armazena a matriz em uma estrutura bidimensional. o armazenamento por indíce 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 das linhas. o 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. Este trabalho tem por objetivo implementar no Octave e analizar os algoritmos iterativos Jacobi, Seidel e SOR na solução de sistemas lineares esparsos considerando as três formas de armazenamento: densa, indíce e csr. Dado um sistema Ax = b com a matriz dos coeficientes armazenada utilizando as formas de armazenamento densa, indíce e csr: 1. Implemente para cada forma de armazenamento um algoritmo baseado no Método Iterativo Jacobi, tendo como parâmetros de entrada: matriz esparsa A, vetor dos termos independentes b, tolerância ǫ,
número máximo de iterações N max. 2. Implemente para cada forma de armazenamnto um algoritmo baseado no Método Iterativo SOR, tendo como parâmetros de entrada: matriz esparsa A, vetor dos termos independentes b, tolerância ǫ, Validação número máximo de iterações N max, fator de relaxção ω. Observe que se ω = 1, tem-se o método Seidel. Para validação dos algoritmos implementados será utilizado o repositório Matrix Market ( 1 ) que disponibiliza uma quantidade considerável de matrizes esparsas oriundas das mais variadas áreas para apoio a estudos comparativos de algoritmos numéricos. Exemplos de matrizes depositadas no Matrix Market podem ser observadas na Fig. 1. A Tab. 1 apresenta algumas características dessas matrizes. Tabela 1: Propriedades das Matrizes Matriz Coleção/Conjunto Área de aplicação n nnz BCSSTK03 Harwell-Boeing/BCSSTRUC1 Engenharia Estrutural 112 376 HOR131 Harwell-Boeing/NNCENG Conservação de Energia 434 4710 GR3030 Harwell-Boeing/LAPLACE Discretização do Laplaciano 900 4322 ORSIRR1 Harwell-Boeing/OILGEN Simulação de reservatórios 1030 6858 PLAT1919 Harwell-Boeing/PLATZ Modelo Oceanográfico 1919 17159 SHERMAN5 Harwell-Boeing/SHERMAN Recuperação de Petróleo 3312 20793 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 BCSSTK03 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 os formatos de armazenamento otimizados indíce e CSR, armazenam 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 A t x = b (1) onde: A é a matriz oriunda do arquivo tipo mtx, x é o vetor solução. Seu valor exato é x = (1 1 1... 1) t, 1 http://math.nist.gov/matrixmarket
(a) BCSSTK03, n = 112, nnz = 376 (b) HOR131, n = 434, nnz = 4710 (c) GR3030, n = 900, nnz = 4322 (d) ORSIRR1, n = 1030, nnz = 6858 (e) PLAT1919, n = 1919, nnz = 17159 (f) SHERMAN5, n = 3312, nnz= 20793 Figura 1: Matrizes do Repositório MatrixMarket - Exemplos das Coleção Harwell- Boeing
b = A t x b i = n i=1 a ji. As função densa.m, indice.m e csr.m lêem um arquivo tipo <nome>.mtx, armazenam a matriz A t nos formatos denso, indíce e CSR e geram o vetor dos termos independentes b. Figura 2: Exemplo de arquivo <nome>.mtx das matrizes esparsas do repositório Matrix Market 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 ω devem ser escolhidos de acordo com as características do seu teste. Leia os dados de cada matriz no repositório Matrix Market 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 ωótimo (0,2) no método SOR considerando ǫ = 10 5 ; 2. encontre a solução dos sistemas pelos métodos Jacobi, Seidel e SOR(ωótimo ) e faça um estudo comparativo com relação ao número de iterações e tempo de processamento para os três métodos iterativos e as três formas de armazenamento. O Octave tem uma forma simples de medir tempo de execução usando os comandos tic e toc.
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 o grupo deverá apresentar a estrutura do trabalho e os objetivos Armazenamentos Otimizados e Métodos Iterativos: onde o grupo sintetizará os conteúdos do trabalho. Implementação: onde serão apresentados a estutura do código e partes significativas do código comentado. Experimentos Numéricos: onde serão apresentados os exemplos testes utilizados pelo grupo, tanto as entradas para os programas bem como tabelas e gráficos, quando for necessário. Conclusão: onde serão discutidos os resultados obtidos. Instruções para entrega Os códigos fonte e o Relatório devem ser enviados por e-mail para luciac@inf.ufes.br até às 24:59:59 horas do dia 22/05/11. O assunto do e-mail deve ser cn111:trab1: <nome1>:<nome2> e conter, em anexo, um arquivo do tipo trab1.rar. Neste caso <nome1><nome2> deve conter os nomes e últimos sobrenomes dos intregrantes do grupo (por exemplo, cn111:trab1:lucia Catabriga:Maria Silva) A fórmula para desconto por atraso na entrega do trabalho é: 2 d 1 0.32 % (2) onde d é o atraso em dias úteis. Note que após 5 dias úteis, o trabalho não poderá ser mais entregue. Se você enviar o seu trabalho múltiplas vezes, apenas a última versão enviada será considerada, inclusive para efeito de desconto por atraso.