Sei sulla pagina 1di 7

Mtodo de Jacobi

O Mtodo de Jacobi trata-se de um procedimento iterativo para determinar a soluo de um sistema de equaes lineares com os maiores valores absolutos em cada linha e coluna dominados pelo elemento da sua diagonal. Trata-se de uma verso simplificada do algoritmo de valores prprios de Jacobi. Tem a vantagem de ser mais simples de se implementar no computador do que o Mtodo de Escalonamento, e est menos sujeito ao acmulo de erros de arredondamento. Seu grande defeito no funcionar em todos os casos. 1.1 Descrio

No mtodo de Jacobi, busca-se isolar em cada equao uma varivel e aplicar-se a todas elas a aproximao inicial proposta, no caso (0, 0, 0 ... 0), chegando-se a outra aproximao, que se espera seja melhor que a anterior. Assim, isola-se X1 na primeira equao, X2 na segunda, (...), Xn na ensima equao.

X1 = 1/a11(b1 a12X2 a13X3 ... a1nXn) X2 = 1/a22(b2 a21X1 a23X3 ... a2nXn) Xn = 1/ann(bn an1X1 an2X3 ... an,n-1Xn-1)

Em seguida aplica-se no lado direito a proposta inicial (0, 0, 0 ... 0) e chega-se a nova aproximao que ser o ponto de partida da iterao seguinte.

1.2 Exemplo

10 X1 + 2 X2 3 X3 + 2 X4 = 32 2 X1 15X2 + 3 X3 2 X4 = -59 1 X1 3 X2 + 20 X3 + 2 X4 = -38 2 X1 + 2 X2 1 X3 + 30 X4 = 160

Primeiramente, isola-se em cada equao uma varivel.

X1 = (32 2 X2 + 3 X3 2 X4) / 10 X2 = (-59 2 X1 3 X3 + 2 X4) / (-15) X3 = (-38 1 X1 + 3 X2 2 X4) / 20 X4 = (160 2 X1 2 X2 + 1 X3) / 30

Admitindo-se como ponto de partida o vetor (0,0,0,0)T , aplica-se esse conjunto de valores s quatro equaes dadas, buscando melhorar essa estimativa inicial. Com isso calculam-se os novos valores das variveis.

Sendo X2 = 0, X3 = 0 e X4 = 0, o novo valor de X1 ser X1 = 32/10 = 3,2 Sendo X1 = 0, X3 = 0 e X4 = 0, o novo valor de X2 ser X2 = -59/(-15) = 3,933... Sendo X1 = 0, X2 = 0 e X4 = 0, o novo valor de X3 ser X3 = -38/20 = -1,9 Sendo X1 = 0, X2 = 0 e X3 = 0, o novo valor de X4 ser X4 = 160/30 = 5,333...

Chegamos assim a uma nova estimativa do valor do vetor X, ou seja (3,2 , 3,933... , -1,9 , 5,333...)T. Repetindo-se as operaes anteriores com esses novos valores prosseguimos na busca da soluo do sistema linear dado.

(0,0,0,0) (3,2 , 3,933... , -1,9 , 5,333...) (0,78 , 3,27 , -2,00 , 4,79) (0,99 , 3,00 , -1,93 , 5,00) (1,02 , 3,01 , -2,00 , 5,00) (1,00 , 3,00 , -2,00 , 5,00) (1,00 , 3,00 , -2,00 , 5,00)

Assim a soluo do sistema de equaes :

X1 = 1,00

X2 = 3,00

X3 = -2,00

X4 = 5,00

1.3 Anlise de Convergncia

Como foi dito anteriormente, nem sempre o Mtodo de Jacobi vai funcionar, para descobrir se o mtodo vai funcionar daremos um critrio chamado de Critrio das Linhas que, se for satisfeito, implica na convergncia do Mtodo. Infelizmente, no podemos concluir a afirmativa inversa. Isto , falso dizer no satisfaz o Critrio das Linhas ento no converge. Pode haver sistemas em que o Mtodo de Jacobi funcione, porm no satisfaa o Critrio das Linhas.

1.3.1

Critrio das Linhas

O Critrio das Linhas pede que


n

|aij| < |aii|


j=1

ji

Para todo i = 1, ... , n. Em palavras: o valor absoluto do termo diagonal na linha i maior do que a soma dos valores absolutos de todos os outros termos da mesma linha. importante observar que o Critrio das Linhas pode deixar de ser satisfeito se houver troca na ordem das equaes e vice-versa: uma troca cuidadosa pode fazer com que o sistema passe a satisfazer o Critrio. Teorema: Se o sistema satisfaz o Critrio das Linhas ento o Mtodo de Jacobi converge. 1.4 Critrio de Parada

Ao implementar o Mtodo de Jacobi no computador preciso fornecer ao computador um critrio de parada para o programa. Isso feito fixando-se uma preciso relativa p, que far o programa parar (no passo k) se

| Xi(k+1) Xi(k)| p |Xi(k)|, Para todo i = 1, ... , n. Ou seja, se |Xi(k)| 0, ento a variao relativa de um passo para outro

| Xi(k+1) Xi(k)| / |Xi(k)| Tem que ser menor ou igual a p. E se Xi(k) = 0 ento Xi(k+1) tambm deve ser zero. preciso ter, no entanto, bastante cuidado com a escolha de p, pois muitas vezes a velocidade de convergncia do mtodo muito lenta. Mesmo longe da soluo, a variao relativa das solues aproximadas pode ser muito pequena. 1.5 Algoritmo

#include <stdio.h> #include <stdlib.h> # define N 10 # define tol 0,001

float norma (float x[], int n) { int i; float s = 0; for (i = 0; i < n; i++) { if (x[i] > s) s = x[i]; } return s; } void jacobi (float x0[], int n, int b[]) { int k = 1; int i, j; int a[n][n];

float x[n], norm[n]; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) a[i][j] = i + j; } while (k <= N) { for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { if (j != i) x[i] = -(a[i][j]*x0[j]) + x[i]; } x[i] = (x[i] + b[i]) / a[i][i]; printf("x[%d] = %f\n", i,x[i]); norm[i] = x[i] - x[0]; } if (norma(norm,n) < tol) { printf("iterao: %d\n", k); break; } else k = k+1; for (i = 0; i < n; i++)

x0[i] = x[i];

} if (k > N) printf ("nmero de operaes excedido"); }

int main () { int i,j, n = 4;

float x0[n]; int b[n];

for (i = 0; i < n; i++) { b[i] = (i + 3) * 2; x0[i] = 0; }

jacobi(x0, n, b);

system("pause"); }

1.6 Bibliografia

http://pt.wikipedia.org/wiki/M%C3%A9todo_de_Jacobi

http://www.raymundodeoliveira.eng.br/Metodo_Jacobi.htm

http://www.ime.usp.br/~colli/cursos/NumericoIAG2005/LivroNumericoCapitulo4.pdf

Potrebbero piacerti anche