Вы находитесь на странице: 1из 14

RESOLUO DE SISTEMA LINEARES DENSOS E ESPARSOS DE GRANDE PORTE.

Cley Fabiano de Souza Cleyfabs@bol.com.br Rua: 248 Meia Praia Itapema. CEP.:88220000. Rudimar@inf.univali.br Rudimar Luz Scaranto Dazzi

Rua: Uruguai, 458 - Centro - Itaja. CEP: 88302202.

RESUMO Este trabalho prope apresentar um aplicativo que resolva sistemas lineares esparsos de grande porte do tipo: Ax=b. Para isso ser utilizado estrutura de dados dinmico para armazenar somente os elementos no nulos do sistema linear. Para efetuar a resoluo deste tipo de sistema ser utilizado mtodos de resoluo direto(Gauss e Jordan) e iterativos (Seidel e Jacobi). Os resultados podero ser salvos em arquivos texto e relatrio HTML. .

Palavras-chave: Sistemas lineares esparsos, Mtodos de resoluo.

ABSTRACT This work propose is to introduce an applicative that resolves linear systems sparse of big size of the type: Ax=b. For this, it will be used data dynamic structure to stockpile only the elements not void of the linear system. To effect a resolution for this kind of system, it will be used the methods of direct resolution (Gauss and Jordan) and iterative (Seidel and Jacobi) the results could be saved in ext files and in HTML report.

1. Introduo

Este artigo aborda aspectos da resoluo de sistemas lineares. O aplicativo foi desenvolvido como trabalho de Concluso do curso de Cincia da Computao. O aplicativo tem por objetivo resolver sistemas lineares esparsos de grande porte do tipo Ax=b, onde A a uma matriz nxn (n linhas e n colunas) denominada matriz dos coeficientes, x um vetor de ordem nx1 (n linhas e 1 coluna) conhecida por vetor das incgnitas e b e um vetor tambm com dimenso nx1 denominado vetor dos termos independentes. Um sistema linear esparso caracterizado quando a grande maioria dos elementos da matriz A (coeficientes) possuem valores zerados (nulos), O sistema de resoluo ir armazenar apenas os elementos no nulos na memria utilizando para isso estrutura de dados dinmicos. Foram estudados duas classes de mtodos de resoluo de sistemas lineares, os mtodos diretos e os mtodos iterativos. Entre os mtodos de diretos, destacam-se os mtodos de eliminao que evitam o clculo direto da matriz inversa de A e, alm disso, no apresentam problemas com tempo de execuo. Foram estudados os mtodos diretos de Gauss, Jordan e LU. Conforme BARROSO et al. (1987), o mtodo de eliminao de Gauss consiste em transformar o sistema linear original num sistema linear equivalente com matriz dos coeficientes triangular superior, pois estes so de resoluo imediata. Dois sistemas lineares so equivalentes quando possuem a mesma soluo. O mtodo de Gauss consiste em triangularizar a matriz, atravs de operaes com as linhas, e obter o produto dos termos da diagonal da matriz, que o valor procurado. As operaes com as linhas so as seguintes: Multiplicao ou diviso de todos elementos de uma linha; Permutao de linhas; Substituio de uma linha pela soma algbrica desta linha pela outra. Os mtodos diretos perdem eficincia medida que cresce o nmero de equaes. Os mtodos iterativos apesar de depender de condies de convergncia e apresentarem algumas restries so os mtodos mais eficientes para resolver sistemas de grande porte. Os mtodos iterativos partem de

valores iniciais para as incgnitas, estimados por algum critrio atravs de uma formula de recorrncia, convergir para o resultado exato at atingir a preciso dese jada. Segundo RUGGIERO & LOPES (1993), os mtodos iterativos necessitam de valores iniciais para as incgnitas e de tolerncia de erro, a partir dos quais, iterativamente, chega-se a uma soluo, cujos valores esto dentro da tolerncia desejada. A idia central dos mtodos iterativos generalizar o mtodo do ponto fixo utilizado na busca de razes de uma equao. Seja o sistema linear Ax = b, onde: A: matriz dos coeficientes, n x n; x: vetor das variveis, n x1; b: vetor dos termos constantes, nx1. Este sistema convertido, num sistema do tipo x=Cx+g onde C matriz n x n e g vetor nx1 .Observamos que ? (x)=Cx+g uma funo de iterao dada na forma matricial. ento proposto o seguinte esquema iterativo: Partimos de x(0) (vetor aproximao inicial) e ento construmos consecutivamente os vetores. x(1)=Cx(0) + g = ( x(0)), x(2)=Cx(1) + g = ( x(1)), (primeira aproximao). (segunda aproximao).etc.

De um modo geral, a aproximao x(k+1) calculada pela formula x(K+1)=Cx(k)+g, ou seja, x(K+1)= (x(K)) ,k =0,1,... Os mtodos iterativos estudados foram os mtodos de Seidel e Jacobi. Alm dos mtodos de resoluo foram estudadas as estruturas de dados dinmicas para o armazenamento da matriz. Sendo elas lista ligada simples, rvore binria e matriz de ponteiros.

2. Justificativa

Existem diversas reas que necessitam da soluo de problemas de sistemas lineares esparsos, como por exemplo, a rea petroqumica e a engenharia em geral.

Muitos problemas de matemtica numrica so modelados em termos de um sistema de equaes lineares algbrica. Isso vale em geral para o tratamento numrico de equaes funcionais lineares que ocorrem, entre outras, como equaes diferenciais parciais ou ordinrias e equaes integrais que surgem em diversos problemas da fsica e engenharia. A escolha do mtodo de resoluo de sistemas lineares um ponto importante para a resoluo de problemas, existem dois mtodos principais: o mtodo direto e o iterativo. Os mtodos diretos no so indicados para a resoluo de sistemas lineares esparsos de grande porte, apesar da fatorao LU conseguir bons resultados. O grande problema dos mtodos diretos que eles poluem muito o sistema linear, o que no ocorre com os mtodos iterativos. Mas enquanto os mtodos diretos tm convergncia garantida, os mtodos iterativos dependem de critrios de convergncia. O armazenamento da matriz A no computador outro ponto importante para a anlise deste aplicativo existem vrias formas (estrutura de dados) para esse armazenamento, como rvore binria, matriz de ponteiros e lista encadeada, ser feita uma anlise para escolher a mais conveniente para armazenar o sistema linear.

3. Metodologia

O primeiro passo do projeto foi encontrar a melhor estrutura de dados entre as estruturas estudadas (rvore binria, lista linear simples e matriz de ponteiros) para armazenar a matriz dos coeficientes (A). A estrutura matriz de ponteiros foi a escolhida por permitir maior velocidade de acesso ao elemento, maior economia de memria e menor complexidade em sua implementao. Aps a da escolha da estrutura ela foi implementada junto com os algoritmos dos mtodos de resoluo de sistemas lineares. Os mtodos foram adaptados para realizarem os clculos somente nos elementos no nulos da matriz A. Aps a implementao foi realizado teste e ajuste no aplicativo sendo realizados a analise dos resultados obtidos.

4. Discusso H na literatura cientifica, desde a dcada de 60, trabalhos relevantes envolvendo o estudo do clculo numrico. Devido a enorme quantidade de informaes disponibilizada, deu-se nfase a trabalhos mais recentes. De acordo com BARROSO et al. (1987), os mtodos numricos foram desenvolvidos com o objetivo de facilitar a vida daqueles que no so puramente matemticos, porm tem necessidade de realizar clculos com muita freqncia. Com o advento dos computadores, os mtodos numricos tornaram-se viveis e muito confiveis. Muitos deles foram melhorados e otimizados, e outros tantos foram desenvolvidos graas s facilidades e velocidade de execuo de que se passou a dispor. H necessidade, entretanto, de se alertar para alguns pontos importantes no clculo numrico por computador: os resultados so aproximados, e deve-se estabelecer tolerncias aceitveis de erros que no comprometam a finalidade dos clculos. Segundo BARROSO et al. (1987), a matemtica computacional pode ser definida como sendo o estudo da matemtica sob o ponto de vista computacional, ou ainda, como sendo o ramo da matemtica que estuda algortmos suscetveis de implementao em mquinas digitais, tratando da resoluo algortmica de problemas com o computador.

5. Resultados

Aps o levantamento de idias, buscou-se uma metodologia adequada para o desenvolvimento da aplicao. Foi utilizado estudo de referncias bibliogrficas e a busca da estrutura que melhor adaptava com o problema proposto. Foram estudados trs tipos de estrutura de dados para escolher a que melhor adapta-se ao problema proposto. Sendo elas: Lista encadeada, rvore binria, Matriz de ponteiros. Entre as opes de estrutura de dados estudados optou-se pela matriz de ponteiros, pelos seguintes motivos: Economia de memria, Velocidade de acesso clula, Menor complexidade dos algoritmos. Todas essas vantagens devem-se a natureza de sua estrutura, a matriz de ponteiros constituda por

um vetor estticos onde cada elemento desse vetor possui o endereo para uma lista encadeada independente, conforme demonstra a Figura 1.

12

10

08

05

20

16

70

Figura 1 - Matriz de ponteiros; Pode-se representa que cada elemento localizado na linha n da matriz A seja inserido na lista encadeada apontada pelo endereo n do vetor de ponteiros. A maior velocidade de acesso deve-se ao fato de que para acessar um elemento localizado na linha n deve-se realizar a pesquisa apenas na lista encadeada que representa a linha n. Outro exemplo da maior velocidade da matriz de ponteiro em comparao as outras estrutura de dados a troca de linhas (pivoteamento) nos mtodos diretos. Para realizar est tarefa basta apenas trocar os valores no vetor de ponteiro. A estrutura abaixo mostra a troca das linhas k e w na matriz de ponteiros. Aux:= vetor_ponteiro[ k ]; vetor_ponteiro[ k ]:= vetor_ponteiro[ w ]; vetor_ponteiro[ w ]:=aux; Enquanto que outras estruturas teriam a necessidade de procedimentos para a troca de linhas, onde o sistema teria que buscar a clula das linhas da troca e alterar os valores do campo Linha para depois ativar a ordenao da estrutura. Apesar de existirem vrias formas (estratgias) diferentes de efetuar essas tarefas, nenhuma to eficiente quanto que possibilita a matriz de ponteiros. Percebe-se que no necessrio manter na estrutura da clula (nodo) o campo que armazena a linha, pois o prprio vetor de ponteiros gerencia o acesso das linhas. Portanto a clula representada da

seguinte forma: Valor: valor do elemento da matriz A ? 0; Coluna: coluna que se encontra esse elemento; Prximo: Ponteiro para o prximo elemento. Com essa nova representao da clula gera uma economia de memria em relao s outras estruturas, apesar da alocao do vetor de ponteiro. Outra vantagem da matriz de ponteiros um menor grau de complexidade do cdigo. Aps esta fase do projeto, iniciou-se a especificao, documentao e implementao do software. Foi utilizada a ferramenta Delphi 5, O aplicativo foi implementado utilizando a linguagem Delphi por sua versatilidade e facilidade de integrao ao ambiente Windows. Na Figura 2 mostra o mdulo de gerenciamento de sistemas lineares Esparsos permite construir, acessar e editar sistemas lineares esparsos. O mdulo apresenta as seguintes opes: mostra um sistema linear j salvo, constru um novo sistema linear, sendo que abrir uma tela perguntando a dimenso deste sistema, Salva o sistema linear( arquivo texto com extenso ESP ), fecha o sistema linear atualmente aberto, atalho para a tela de resoluo de sistemas esparsos, telas suspensa que editar uma linha, coluna, a diagonal, lado b ou uma clula selecionado pelo usurio. Alm disso, o aplicativo permite preencher a matriz com nmeros aleatrios, zerar a matriz e obter as seguintes informaes: Densidade; Grau de esparsidade; Quantidade; Total de elementos nulos; Total de elementos no nulos; Total de elementos.

Figura 2 - A tela de gerenciamento de sistemas lineares

A Figura 3 apresenta o mdulo de resoluo de sistemas lineares esparsos apresenta o local e o nome do arquivo, tendo ainda a informao de tamanho do arquivo e o tempo de inicio, termino e durao da resoluo. No lado direito fica o vetor soluo, no lado esquerdo ficam os mtodos de resoluo, que so: Mtodo direto de Gauss; Mtodo direto de Jordan; Mtodo direto de LU; Mtodo iterativo de Jacobi; Mtodo iterativo de Seidel. Para resolver um sistema basta clicar em abrir selecionar o arquivo ponto ESP , escolher o mtodo de resoluo e clicar em resolver. O mdulo permite ainda: Gerar relatrios impressos; Gerar relatrios em html; Salvar arquivo de resultados.

Figura 3 - A tela de resoluo de sistemas lineares esparsos. O sistema permite salvar o resultado da resoluo em arquivos, sendo que esses arquivos tm as seguintes extenses: Rgauss; Rjordan; Rlu; Rjacobi e Rseidel. Correspondente com os mtodos de resoluo. 5.1. Anlise dos Resultados Ponderaes a respeito da simulao dos resultados: Que a execuo de determinado algoritmo em uma mquina pode levar um tempo m e em

outro n, mas sempre proporcional; Que os algoritmos no so dependentes da mquina, no entanto estas influenciam na

execuo do mesmo em funo do tempo que levam para processar determinado algoritmo; Todos os resultados foram obtidos do mesmo computador, com a seguinte configurao:

processador amd-k7, memria ram de 128,0 megabytes e 32 bits de memria virtual, hard disk de 20 gigabytes;

As tabelas 1, 2, 3 e 4 apresentam 4 sistemas lineares que serviram para avaliar o comportamento de cada mtodo para a resoluo destes sistemas. A tabela formada pelos campos:

Mtodo; Dimenso; Tempo : Tempo decorrido para a resolucao do sistema pelo metodo; Esparsidade: Porcentagem dos elementos no nulos da matriz A; Alocao Dinmica: Memoria alocada pelo programa; Alocao Esttica: Quantidade aproximada de memoria que seria utilizada pelo metodo tradic ional (matriz bidimencional);

Tabela 1- Resoluo de um sistema de ordem 500x500. Mtodo Dimenso Tempo Esparsidade Alocao Dinmica Gauss Jordan LU 500x500 500x500 500x500 00:00:03 00:00:03 00:00:03 00:00:00 00:00:00 1% 1% 1% 1% 1% 1,22Mb 1,22Mb 1,22Mb 85,72Kb 85,72Kb Alocao Esttica 1,91Mb 1,91Mb 1,91Mb 1,91Mb 1,91Mb

Gauss-Jacobi 500x500 Gauss-Seidel 500x500

1400 1200 1000 800 600 400 200 0 Mmoria alocada (Kb)

Gauss Jordan LU Jacobi Seidel

Tabela 2- Resoluo de um sistema de ordem 1000x1000 com 10% de esparsidade. Mtodo Dimenso Tempo Esparsidade Alocao Dinmica Gauss Jordan LU 1000x1000 1000x1000 1000x1000 00:01:16 00:01:20 00:01:19 00:00:00 00:00:00 10% 10% 10% 10% 10% 14,11Mb 14,11Mb 14,11Mb 1,51Mb 1,51Mb Alocao Esttica 7,63Mb 7,63Mb 7,63Mb 7,63Mb 7,63Mb

Gauss-Jacobi 1000x1000 Gauss-Seidel 1000x1000

16000 14000 12000 10000 8000 6000 4000 2000 0 Mmoria alocada (Kb)

Gauss Jordan LU Jacobi Seidel

Tabela 3- Resoluo de um sistema de ordem 1000x1000 com 1% de esparsidade. Mtodo Dimenso Tempo Esparsidade Alocao Dinmica Gauss Jordan LU 1000x1000 1000x1000 1000x1000 00:00:42 00:00:45 00:00:43 00:00:00 1% 1% 1% 1% 8,31Mb 8,31Mb 8,31Mb 210,34Kb Alocao Esttica 7,63Mb 7,63Mb 7,63Mb 7,63Mb

Gauss-Jacobi 1000x1000

Gauss-Seidel 1000x1000

00:00:00

1%

210,34Kb

7,63Mb

Tabela 4- Resoluo de um sistema de ordem 2000x2000 com 1% de esparsidade. Mtodo Dimenso Tempo Esparsidade Alocao Dinmica Gauss Jordan LU 2000x2000 2000x2000 2000x2000 00:12:42 00:13:45 00:12:47 00:00:00 00:00:00 1% 1% 1% 1% 1% 43,24Mb 43,24Mb 43,24Mb 691,83Kb 691,83Kb Alocao Esttica 30,52Mb 30,52Mb 30,52Mb 30,52Mb 30,52Mb

Gauss-Jacobi 2000x2000 Gauss-Seidel 2000x2000

Os mtodos diretos acabam realizando o preenchimento da matriz A esparsas. J os mtodos iterativos preservam a estrutura original da matriz. Os mtodos iterativos acabam sendo, a melhor opo para resolve sistemas lineares esparsos de grande porte. A tabela 5 demostra os resultados alcancados pelos metos iterativos de Jacobi e Seidel em sistemas com grande dimenso Tabela 5- Resultados obtidos pelos mtodos iterativos. Mtodo Dimenso Tempo Esparsidade Alocao Dinmica Gauss-Jacobi 5000x5000 Gauss-Seidel 5000x5000 00:00:01 00:00:01 00:04:21 00:04:00 00:06:00 00:05:14 1% 1% 3,93Mb 3,93Mb Alocao Esttica 190,73Mb 190,73Mb 4.65Gb 4.65Gb 19,53Gb 19,53Gb

Gauss-Jacobi 25000x25000 Gauss-Seidel 25000x25000

Menos de 1% 25,83Mb Menos de 1% 25,83Mb Menos de 1% 40,04Mb Menos de 1% 40,04Mb

Gauss-Jacobi 50000x50000 Gauss-Seidel 50000x50000

Gauss-Jacobi 100000x100000 Gauss-Seidel 100000x100000

00:06:32 00:06:14 00:07:40 00:07:07 00:14:56 00:12:59 00:23:50 00:21:41

Menos de 1% 59,83Mb Menos de 1% 59,83Mb Menos de 1% 62,85Mb Menos de 1% 62,85Mb Menos de 1% 69,83Mb Menos de 1% 69,83Mb Menos de 1% 70,18Mb Menos de 1% 70,18Mb

78,12Gb 78,12Gb 107,28Gb 107,28Gb 254,99Gb 254,99Gb 312,48Gb 312,48Gb

Gauss-Jacobi 120000x120000 Gauss-Seidel 120000x120000

Gauss-Jacobi 185000x185000 Gauss-Seidel 185000x185000

Gauss-Jacobi 200000x200000 Gauss-Seidel 200000x200000

6. Concluso

Foram atingidos os objetivos de desenvolver um aplicativo que resolva sistemas lineares esparsos do tipo Ax=b utilizando mtodos de resoluo diretos e iterativos. Armazenando na memria apenas os elementos no nulos da matriz A (matriz dos coeficientes do sistema linear). A finalidade desse projeto comprovar que para sistemas lineares esparsos de grande porte no h a necessidade de armazenar na memria todos os elementos da matriz dos coeficientes e sim, apenas os elementos no nulos. Utilizando para isso estruturas de dados dinmicos. Constatou-se que se o sistema linear possuir o grau de esparsidade maior que 50%, o mtodo que utiliza a estrutura matriz de ponteiros consegue economizar memria. Pois cada nodo(clula) da estrutura matriz de ponteiros ocupa 16 bytes enquanto que cada elemento utilizado por uma matriz esttica nxn ocupa 8 bytes. Portanto se o grau de esparsidade for maior que ou igual a 50% o mtodo utilizado matriz de ponteiros ocupar uma rea de memria maior em comparao a estrutura esttica. Concluindo quanto maior for o grau de esparsidade de um sistema linear, maior a eficcia do mtodo de armazenamento dinmico. Foram implementados os mtodos diretos de Gauss e Jordan e os mtodos iterativos de Seidel e Jacobi. Verificou-se que os mtodos iterativos, quando conseguem convergir para o resultado, so os mtodos mais eficazes por serem mais rpidos e por no alterarem a estrutura da matriz A.

O primeiro passo do projeto foi encontrar a melhor estrutura de dados entre as estruturas estudadas (rvore binria, lista linear simples e matriz de ponteiros) para armazenar a matriz dos coeficientes (A). A estrutura matriz de ponteiros foi a escolhida por permitir maior velocidade de acesso ao elemento, maior economia de memria e menor complexidade em sua implementao. Tanto o mdulo de resoluo de sistemas lineares densos como o mdulo de resoluo de sistemas esparsos, permite salvar os resultados (sendo identificado o mtodo que foi utilizado para resolver o sistema) e comparar o resultado entre dois mtodos diferentes, alm de verificar a soluo e criar relatrios (impressos e em HTML).

Referncias Bibliogrficas

BARROSO, Lenidas Conceio; BARROSO, Magali Maria de Arajo.

CAMPOS, Frederico

Ferreira et al. Calculo Numrico (com aplicaes). So Paulo: Editora Harba ltda,1987 DIEGUEZ, Jos Paulo P. Mtodos numricos computacionais para engenharia. Rio de Janeiro: Editora Intercincia Ltda,1992. RUGGIERO, Mrcia A. Gomes; LOPES, Vera Lcia da Rocha. Clculo Numrico Aspectos terico e Computacionais,1993.

Вам также может понравиться