Você está na página 1de 4

Universidade Federal do Cear Campus Cariri

3o Encontro Universitrio da UFC no Cariri


Juazeiro do Norte-CE, 26 a 28 de Outubro de 2011

Aplicacoes em C++ para solucao de sistemas lineares atrav s e da decomposicao LU e m todo de Jacobi e
Dion Teixeira Saraiva1 , Rafael Perazzo Barbosa Mota2
1 2

Universidade Federal do Cear , Juazeiro do Norte - Campus Cariri, Cear , Brasil a a Universidade Federal do Cear , Juazeiro do Norte - Campus Cariri, Cear , Brasil a a
dionsaraiva@alu.ufc.br, rafaelperazzo@cariri.ufc.br

Resumo. Este trabalho tem, por nalidade, apresentar dois softwares matem ticos desenvolvidos em C++ e Scilab para apoio a disciplina de C lculo a a ` Num rico, com o objetivo de auxiliar os alunos na aprendizagem e resolucao de e problemas por m todos computacionais. A metodologia envolveu o desenvolvie mento adaptado, para tornar-se did tico, dos algoritmos dos m todos de Jacobi a e e Decomposicao LU. Os resultados produziram dois softwares para resolucao de sistema de equacoes lineares atrav s dos m todos supracitados. e e

1. Introducao
Sistemas de equacoes lineares aparecem em problemas que cont m mais de uma vari vel e a independente. Tais problemas ocorrem n o apenas na engenharia e na ci ncia, mas a e tamb m virtualmente em todas as demais disciplinas (neg cios, estatstica, economia, e o etc.)[Gilat e Subramaniam 2000]. Um sistema de duas (ou tr s) equacoes com duas (ou e tr s) inc gnitas pode ser resolvido manualmente por substituicao, ou com uso de m todos e o e matem ticos (por exemplo, a regra de Cramer). Resolver um sistema dessa maneira e a praticamente impossvel quando o n mero de equacoes (ou inc gnitas) passa a ser maior u o que tr s[Burden e Faires 2008]. e Um exemplo de problema na engenharia el trica que requer a solucao de um sise tema de equacoes seria a determinacao das correntes (i1 , i2 ,... in ) em sistemas com mais de uma malha. Usando a lei de Kirchhoff, as correntes podem ser determinadas solucionando um sistema de equacoes lineares. Obviamente, circuitos mais complexos podem requerer solucao de sistemas com um n mero maior de equacoes. Outro exemplo seria u o c lculo da forca nos membros de uma trelica. Estes problemas passaram a ser mais a comuns nas salas de aula, uma vez que a tecnologia computacional possibilitou maior rapidez nos c lculos que manualmente levaria dias para serem resolvidos; e, com o dea senvolvimento de softwares poderosos, podemos obter solucoes atrav s dos computadores e em alguns segundos[Ruggiero e Lopes 1997]. O m todo da decomposicao LU, ou m todo LU, e uma forma de fatoracao de e e matrizes n o singulares, em um produto entre duas matrizes. Uma inferior, L (Lower, a com todos os elementos da diagonal principal iguais a um), e uma superior, U (Upper, com os elementos da diagonal principal diferentes de zero). Dado um sistema da forma Ax=b, podemos escrev -lo na forma matricial, onde A e a matriz dos coecientes, x e e a matriz das inc gnitas e b, o vetor solucao. Fazemos ent o A=LU e substitumos no o a sistema, obtendo a igualdade LUx=b. Por conseguinte, denimos o vetor y (y=Ux) e substitumos na segunda igualdade, assim tendo Ly=b. Agora resta resolver o sistema Ly=b (para y), e posteriormente resolvemos Ux=y (para x), assim obtendo a solucao nal

Universidade Federal do Cear Campus Cariri


3o Encontro Universitrio da UFC no Cariri
Juazeiro do Norte-CE, 26 a 28 de Outubro de 2011

desejada. Este algoritmo usado traz uma menor complexidade na resolucao de sistemas lineares do tipo Ax=b, por otimizar o tempo gasto na eliminacao e conservar o vetor dos termos independentes[Burian et al. 2007, Campos 2007]. O m todo de Jacobi e um dos m todos iterativos usados para resolucao de sistee e mas lineares. Este consiste em uma sequ ncia de passos para reorganizarmos o sistema e em outro, do tipo f (x) = Cx + g onde C(n, n) e g(n, 1), no qual calcularemos os vetores a partir de um vetor inicial arbitr rio, at chegarmos a um certa quantidade de repeticoes a e ou quando os valores convergirem para algum n mero dentro de uma margem de erro u (toler ncia) admitida. A principal vantagem deste m todo e a possibilidade de calculara e mos cada elemento xik+1 consecutivamente, podendo assim ver para quais valores est o a convergindo a cada aproximacao feita no decorrer dos c lculos. Por m, para utilizarmos a e os m todos de repeticao (Jacobi ou Gauss-Seidel) teremos que primeiramente vericar se e uma matriz A e diagonalmente dominante, isto e, se a soma dos m dulos dos elemeno tos aij (onde i = j) e menor do que o m dulo do elemento da diagonal daquela linha o (neste caso, diz-se que a matriz A tem diagonal estritamente dominante por linhas), ou coluna[Burden e Faires 2008][Ruggiero e Lopes 1997]. Este trabalho apresenta o m todo direto da decomposicao LU e o m todo iterativo e e de Jacobi para a resolucao de sistemas de equacoes lineares quadrados do tipo Ax=b. Fo ram elaborados e implementamos os algoritmos em C++ e Scilab, com intuito de auxiliar e facilitar a aprendizagem dos estudantes da disciplina de C lculo Num rico direcionando a e a resolucao de problemas com sistemas lineares por meio da utilizacao dos softwares desenvolvidos. Apenas as rotinas escritas em C++ ser o expostas, por tratarem-se dos a mesmos algoritmos, mudando-se apenas a interface com o usu rio. a

2. Metodologia
O presente trabalho utilizou inicialmente a aplicacao Scilab 5.3, um software para computacao num rica que fornece um poderoso ambiente computacional para engenharia e es cientcas. Posteriormente implementou-se em C++ [Hubbard 2003] atrav s e aplicaco e do ambiente de desenvolvimento integrado Code::Blocks 10.05, disponvel para as plata formas Windows e Linux. A metodologia envolveu a elaboracao dos algoritmos, para posterior implementacao em Scilab e C++. A implementacao em C++ visou a possibilidade de que os alunos da disciplina de C lculo Num rico, possam rapidamente conferir as respostas a e dos trabalhos feitos em sala. J o programa no Scilab foi pensado para ns did ticos, mosa a trando os m todos detalhadamente para fornecer ao aluno uma melhor vis o da resolucao e a dos problemas.

3. Resultados
Apresentaremos nesta sess o os softwares produzidos, dois programas para aprendizagem a e resolucao de sistemas de equacoes lineares para a disciplina de C lculo Num rico. a e O m todo da decomposicao LU [Ruggiero e Lopes 1997] recebe a matriz dos coe ecientes das equacoes, o vetor dos resultados, o vetor das inc gnitas (onde ser o guar o a dados os valores obtidos) e o tamanho da matriz. A sada ser o vetor solucao. O m todo a e de Jacobi recebe a matriz dos coecientes das equacoes, o vetor das respostas, o vetor das

Universidade Federal do Cear Campus Cariri


3o Encontro Universitrio da UFC no Cariri
Juazeiro do Norte-CE, 26 a 28 de Outubro de 2011

inc gnitas, o erro admitido, a quantidade m xima de iteracoes e o tamanho da matriz. A o a sada ser o vetor solucao. a
Codigo Fonte 1. Metodo da Decomposicao LU
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

v o i d decomposicaoLU ( f l o a t A, f l o a t b , f l o a t x , i n t tamanho , f l o a t L , f l o a t U) int i , j , k ; f l o a t soma ; f l o a t y = new f l o a t [ tamanho ] ; f o r ( i = 0 ; i <tamanho ; i ++) { f o r ( j = 0 ; j <tamanho ; j ++) { i f ( i <= j ) { soma = 0 ; f o r ( k = 0 ; k<=i 1; k ++) { soma = soma + ( L [ i ] [ k ] U[ k ] [ j ] ) ; } U[ i ] [ j ] = A[ i ] [ j ]soma ; } i f ( i >j ) { soma = 0 ; f o r ( k = 0 ; k<=j 1; k ++) { soma = soma+L [ i ] [ k ] U[ k ] [ j ] ; } L [ i ] [ j ] = (A[ i ] [ j ]soma ) / U[ j ] [ j ] ; } } } r e t r o s u b s t i t u i c a o I ( L , b , y , tamanho ) ; r e t r o s u b s t i t u i c a o (U, y , x , tamanho ) ; }
Codigo Fonte 2. Metodo iterativo de Jacobi

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

v o i d j a c o b i ( f l o a t a , f l o a t x , f l o a t b , f l o a t e r r o , i n t tamanho , i n t maximo ) { int i , j , k ; f l o a t soma = 0 ; f l o a t x0 ; x0 = z e r o s ( tamanho ) ; c o p i a r ( x0 , x , tamanho ) ; i f ( d i a g o n a l m e n t e D o m i n a n t e ( a , tamanho ) ) { f o r ( k = 1 ; k<=maximo ; k ++) { f o r ( i = 0 ; i <tamanho ; i ++) { soma = 0 ; f o r ( j = 0 ; j <tamanho ; j ++) { i f ( i != j ) { soma = soma + ( a [ i ] [ j ] x0 [ j ] ) ; }

Universidade Federal do Cear Campus Cariri


3o Encontro Universitrio da UFC no Cariri
Juazeiro do Norte-CE, 26 a 28 de Outubro de 2011

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

} x [ i ] = ( b [ i ]soma ) / a [ i ] [ i ] ; } i f ( p a r a r ( x , x0 , tamanho , e r r o ) ) { c o u t <<"Fim com "<< k<<" iteracoes e erro = " << e r r o <<"."<<e n d l <<e n d l ; break ; } c o p i a r ( x , x0 , tamanho ) ; } i f ( k>=maximo ) { c o u t << "Nao houve convergencia!" ; } } else { c o u t <<"ERRO. A matriz nao e diagonalmente dominante, digite novamente os valores." ; } }

4. Conclus o a
O presente resumo apresentou as implementacoes realizadas em C++, did ticos e nda a dos para o auxlio no aprendizado, pois os mesmos apresentam a resolucao das quest es o detalhadamente, explicando o algoritmo, c lculos e seus crit rios. a e Podemos concluir que este trabalho enriqueceu o ensino da disciplina consideravelmente, tratando-se do material de ensino e tamb m do pr prio conte do, j que os e o u a programas s o uma ferramente a mais para o conhecimento. O mesmo tamb m exp e os a e o programas para auxlio nos estudos e aprendizado, fazendo com que os resultados sejam obtidos mais rapidamente e o conte do seja exercitado e detalhado simultaneamente. u

5. Agradecimentos
A Universidade Federal do Cear (UFC) pelo apoio atrav s do programa de iniciacao a a e ` doc ncia. e

Refer ncias e
Burden, L. e Faires, J. (2008). An lise num rica. S o Paulo: Cengage Learning. a e a Burian, R., Lima, A., e Junior, A. (2007). C lculo Num rico. S o Paulo: LTC. a e a Campos, F. (2007). Algoritmos Num ricos. S o Paulo: LTC. e a Gilat, A. e Subramaniam, V. (2000). M todos Num ricos para Engenheiros e Cientistas. e e S o Paulo: Bookman. a Hubbard, J. (2003). Programacao em C++. Bookman. Ruggiero, M. e Lopes, V. (1997). C lculo Num rico: Aspectos teoricos e computacionais. a e S o Paulo: Makron Books. a