Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas PDF
Sistemas PDF
Formulao Matricial
As equaes representadas em (1) podem ser descritas na forma matricial como:
para o qual:
2
[A] = a 31 a 32 a 33
a 3n , [x ] = x 3 , [b] = b 3 (3)
a n1 a n 2 a n3
a nn
x n b n
x 11 x 12 x 1n a 11 a 12 a 1n 1 0 0
x x 22 x 2 n a 21 a 22 a 2 n 0 1 0
[A ] [A ] = 21
1
= = [I ] (6)
x n1 x n2 x nn a n1 a n2 a nn 0 0 1
Seja [A] a matriz de coeficientes, [A]+ a matriz aumentada pelos termos independentes
e o sistema na forma matricial descrito por [A][x] = [b], no qual:
a11 a12 a 13 a 14 x1 b1
a a a 23
a 24 x b
[A] = 21 22 , [x] = 2 , [b] = 2
a 31 a 32 a 33 a 34 x3 b3
a 41 a 42 a 43 a 44 4
x b4
a11 a 12 a 13 a 14 b1
a a a 23 a 24 b 2
[A]+ = 21 22 (7)
a 31 a 32 a 33 a 34 b3
a 41 a 42 a 43 a 44 b4
2o Passo:
Definir um multiplicador para cada linha:
a a a
m 2 = 21 , m 3 = 31 , m 4 = 41 (8)
a11 a11 a11
3o Passo:
Subtrair o produto do multiplicador pela 1a linha da 2a, da 3a e da 4a linha:
2a Linha
a
a 21 = a 21 m2 a 11 = a 21 21 a11 = 0 (9)
a11
= a 22 m 2 a12
a 22 (10)
a 23 = a 23 m2 a 13 (11)
a 24 = a 24 m 2 a14 (12)
b 2 = b 2 m 2 b1 (13)
3a Linha:
a
= a 31 m3a11 = a 31 31 a 11 = 0
a 31 (14)
a 11
a 32 = a 32 m 3a12 (15)
a 33 = a 33 m3a 13 (16)
= a 34 m 3a14
a 34 (17)
b 3 = b 3 m3 b1 (18)
4a Linha:
a
= a 41 m4 a 11 = a 41 41 a11 = 0
a 41 (19)
a11
a 42 = a 42 m 4 a12 (20)
a 43 = a 43 m4 a 13 (21)
= a 44 m 4 a14
a 44 (22)
b 4 = b 4 m 4 b1 (23)
a11 a12 a 13 a 14 b1
0 a a 23 a 24 b 2
[A]+ = 22
0 a 32 a 33 a 34 b 3
0 a 42 a 43 a 44 b 4
1o Passo:
Calcular p2 = mx { a 22
, a 32 } . Novamente p2 0, seno |A| = 0. Caso p2 |a21|, permutar
, a 42
2o Passo:
Definir um multiplicador para cada linha:
a a
m 3 = 32 , m4 = 42 (24)
a 22 a 22
3o Passo:
Subtrair o produto do multiplicador pela 2a linha da 3a e da 4a linha:
3a Linha:
a
a 32 = a 32 32 a 22 = 0
= a 32 m3 a 22 (25)
a 22
= a 33
a 33 m3 a 23
(26)
a 34 = a 34 m 3a 24 (27)
b 3 = b 3 m 3 b 2 (28)
4a Linha:
a
a 42 = a 42 m4 a 22 = a 42 42 a 22 = 0 (29)
a 22
= a 43
a 43 m4 a 23
(30)
a 44 = a 44 m 4 a 24
(31)
b 4 = b 4 m 4 b 2 (32)
a11 a12 a 13 a 14 b1
0 a a 23 a 24 b 2
[A] =
+ 22
(33)
0 0 a 33 a 34 b 3
0 0 a 43 a 44 b 4
1o Passo:
Calcular p3 = mx { a 33 , a 43 } . Novamente p3 0, seno |A| = 0. Caso p3 |a31|, permutar a 3a
linha pela 4a linha.
2o Passo:
Definir um multiplicador para a 4a linha:
a
m 4 = 43 (34)
a 33
3o Passo:
Subtrair o produto do multiplicador pela 3a linha da 4a linha:
4a Linha:
a
= a 43
a 43 = a 43 43 a 33 = 0
m4 a 33 (35)
a 33
= a 44
a 44 m 4 a 34
(36)
4 = b
b 4 m 4 b 3 (37)
a11 a12 a 13 a 14 b1
0 a a 23 a 24 b 2
[A]+ = 22
(38)
0 0 a 33 a 34 b 3
0 0 0 a 44 b
4
a11 a12 a 13 a 14 b1
0 a a 23 a 24 b 2
[A]+ = 22
(39)
0 0 a 33 a 34 b3
0 0 0 a 44 b4
4
b
i a x
ij j
j= i +1
xi = , i = 4,3,2,1 (40)
a ii
4
|A| = a ii = a11a 22 a 33a 44 (41)
i =1
Exemplo:
Seja o sistema de trs equaes e trs incgnitas:
2x1 + 3x2 x3 = 0
-x1 + x2 + 4x3 = 3
x1 8x2 - x3 = 1
2 3 1 0
[A]+ = 1 1 4 3
1 8 1 1
2 3 1
[A] = 0 9 ,5 0,5
0 0,0000001 3,3684211
cujo determinante vale |A| = -64,0000009. A soluo do sistema calculada pelo mesmo
programa resulta:
0 ,718750
[x] = 0,156250
0,968750
FORTRAN
PROGRAM ELIMINA
PARAMETER (NMAX = 50)
REAL A(NMAX,NMAX+1), X(NMAX+1)
WRITE(*,10)
10 FORMAT(1X,'NUMERO DE EQUACOES : ')
READ(*,*) NN
DO 500 I = 1, NN
DO 510 J = 1, NN+1
WRITE(*,50) I, J
READ(*,*) A(I,J)
510 CONTINUE
500 CONTINUE
LAST = NN - 1
DO 520 I = 1, LAST
BIG = 0.0
DO 530 K = I, NN
TERM = ABS(A(K,I))
IF ((TERM - BIG) .GT. 0.0) THEN
BIG = TERM
L = K
END IF
530 CONTINUE
IF (BIG. EQ. 0.0) THEN
WRITE(*,*) 'MATRIZ SINGULAR'
STOP
END IF
IF (I .NE. L) THEN
DO 540 J = 1, NN+1
TEMP = A(I,J)
A(I,J) = A(L,J)
A(L,J) = TEMP
540 CONTINUE
END IF
PIVOT = A(I,I)
NEXTR = I + 1
DO 550 J = NEXTR, NN
CONST = A(J,I) / PIVOT
DO 560 K = I, NN+1
A(J,K) = A(J,K) - CONST*A(I,K)
560 CONTINUE
550 CONTINUE
520 CONTINUE
DO 570 I = 1, NN
IREV = NN + 1 - I
Y = A(IREV,NN+1)
IF (IREV .NE. NN) THEN
DO 580 J = 2, I
K = NN + 2 - J
Y = Y - A(IREV,K)*X(K)
580 CONTINUE
END IF
X(IREV) = Y / A(IREV,IREV)
570 CONTINUE
WRITE(*,60)
WRITE(*,65)
DO 590 I = 1, NN
DO 600 J = 1, NN+1
WRITE(*,70) I, J, A(I,J)
600 CONTINUE
590 CONTINUE
DET = 1.0
DO 610 I = 1, NN
DET = DET * A(I,I)
610 CONTINUE
WRITE(*,80) DET
DO 620 I = 1, NN
WRITE(*,100) I, X(I)
620 CONTINUE
50 FORMAT(1X, 'A(',I2,',',I2,'): ')
60 FORMAT(/10X,'SOLUCAO'/)
65 FORMAT(/5X,'COEFICIENTES DA MATRIZ TRIANGULARIZADA'/)
70 FORMAT(5X, 'A(',I2,',',I2,') = ',F12.7)
80 FORMAT(1X/, 5X, 'DETERMINANTE DO SISTEMA = ', F12.7/)
100 FORMAT(5X, 'X(',I2,') = ', F12.7)
END
Linguagem C
/* Programa elimina.c */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NMAX 50
int i, j, k, l;
int neq, nmais, last, rev;
float a[NMAX][NMAX+1], x[NMAX+1];
float coef, big, term, temp, pivot, nextr, cnt, y;
void main()
{
printf("Numero de equacoes: ");
scanf("%d", &neq);
for(i = 1; i <= neq; i++) {
Nestes casos podemos utilizar um mtodo iterativo que, em geral, no seja muito sensvel
propagao de erros de arredondamento, desde que a soluo seja convergente. Entre os
mtodos iterativos de resoluo de sistemas de equaes, vamos abordar o mtodo iterativo de
Gauss-Seidel, que um dos mtodos iterativos mais comuns e simples para ser programado em
computador. Como em todos os mtodos iterativos, o erro de arredondamento pequeno, mas
o mtodo converge para a soluo somente sob certas condies e normalmente conduz a um
nmero significativamente maior de operaes aritmticas em comparao aos mtodos de
resoluo direta.
Seja o sistema de equaes:
onde os termos da diagonal a11, a22, ..., ann so todos supostos no nulos; se necessrio, as
equaes devem ser reordenadas para que todos estes termos sejam no nulos.
Encontramos o valor de x1 a partir da primeira equao, x2 a partir da segunda e assim
sucessivamente, para obtermos:
Exemplo:
Seja o sistema de duas equaes:
2x + 3y = 4 (e1)
-x + y = 1 (e2)
x = (4 - 3y)/2 (e3)
y = (1 + x) (e4)
Iterao x x y y
0 0 0
1 2 2 3 3
2 -2,5 4,5 -1,5 4,5
3 4,25 6,75 5,25 6,75
4 -5,875 10,125 -4,875 10,125
5 9,3125 15,1875 10,3125 15,1875
x = (y - 1) (e5)
y = (4 - 2x)/3 (e6)
Iterao x y x y
0 0 0
1 -1 2 1 2
2 1 0,66667 2 1,33333
3 -0,33333 1,55556 1,33333 0,88889
4 0,55556 0,96296 0,88889 0,59260
5 -0,03704 1,35803 0,59260 0,39507
6 0,35803 1,09465 0,39507 0,26338
7 0,09465 1,27023 0,26338 0,17558
-5
A convergncia obtida aps 41 iteraes: x = 0,2 e y = 1,2 com erro de 10 .
O problema da convergncia para este exemplo pode ser ilustrado na Fig. 1, onde so
mostrados os grficos para as equaes (e1) e (e2). As linhas tracejadas e pontilhadas indicam,
respectivamente, as iteraes divergentes, dada pelas equaes (e3) e (e4), e as iteraes
convergentes dada pelas equaes (e5) e (e6).
4
(1)
1
y
(2)
-1
-2
-3 -2 -1 0 1 2 3
(k) (k-1)
x1 = [b1 - a12x2 ]/a11 (49)
(k) (k)
x2 = [b2 - a21x1 ]/a22 (50)
Se definirmos:
(k) (k)
x1 = x1 - x1 (51)
(k) (k)
x2 = x2 - x2 (52)
e, de (50) e (52):
(k) (k)
x2 = - a21/a22.x1 (54)
Assim, se
a12a21/a11a22 < 1 (59)
ou se
a11 a12 (62)
e
a22 > a21 (63)
Isto significa que os termos da diagonal a11 e a22 devem ser dominantes, isto , eles devem ser
pelo menos to grandes quanto os termos fora da diagonal e realmente maiores em pelo menos
um caso.
Para um sistema de n equaes podemos mencionar um teorema simples que fornece
condies suficientes, mas no necessrias, para que haja convergncia:
principal for maior (em valor absoluto) do que a soma dos valores absolutos de todos os
outros termos na mesma linha ou coluna. Isto , teremos garantido a convergncia se,
n
a ii > a ij i = 1, 2, ... , n (64)
j= 1
j i
e
n
a ii > a ji i = 1, 2, ... , n (65)
j= 1
j i
Exemplo:
Seja o seguinte sistema de equaes:
2x1 + x2 + x3 - x4 = -3
x1 + 9x2 + 8x3 + 4x4 = 15
-x1 + 3x2 + 5x3 + 2x4 = 10
x2 + x4 = 2
x1 = (-3 - x2 - x3 + x4)/2
x2 = (15 - x1 - 8x3 - 4x4)/9
x3 = (10 + x1 - 3x2 - 2x4)/5
x4 = ( 2 - x2) .
x1 = -1; x2 = 0; x3 = 1 e x4 = 2
Observamos para este exemplo que o mtodo iterativo de Gauss-Seidel apresenta uma
preciso superior ao mtodo de eliminao gaussiana. Entretanto, o nmero de iteraes
relativamente alto (78 neste caso) e este nmero cresce substancialmente com o aumento do
nmero de equaes. Esta limitao atualmente no restringe a aplicao do mtodo iterativo
de Gauss-Seidel, devido elevada capacidade de processamento dos microcomputadores
atuais. Usualmente, o mtodo de eliminao gaussiana usado numa etapa preliminar para
obter os valores iniciais do mtodo de Gauss-Seidel que, ento, faz o refinamento da soluo.
FORTRAN
C PROGRAMA PARA O CALCULO ITERATIVO DE UM SISTEMA DE EQUACOES
C METODO DE GAUSS-SEIDEL
PROGRAM GSEIDEL
MAX = 80
X1 = 0.0
X2 = 0.0
X3 = 0.0
X4 = 0.0
DO 10 I = 1, MAX
X1 = (-3.0 - X2 - X3 + X4)/2.0
X2 = (15.0 - X1 - 8.0*X3 - 4.0*X4)/9.0
X3 = (10.0 + X1 - 3.0*X2 - 2.0*X4)/5.0
X4 = (2.0 - X2)
10 CONTINUE
WRITE(*,100) X1,X2,X3,X4
100 FORMAT(4F10.6)
END
Linguagem C
/*
Programa gseidel.c
*/
#include <stdio.h>
#define MAX 80
void main()
{
int i;
float x1, x2, x3, x4;
x1 = 0.0;
x2 = 0.0;
x3 = 0.0;
x4 = 0.0;
for (i = 1; i <= MAX; i++) {
x1 = (-3.0 - x2 - x3 + x4) / 2.0;
x2 = (15.0 - x1 - x3 * 8.0 - x4 * 4.0) / 9.0;
x3 = (x1 + 10.0 - x2 * 3.0 - x4 * 2.0) / 5.0;
x4 = 2.0 - x2;
printf("x1 = %10.6f x2 = %10.6f x3 = %10.6f X4 = %10.6f\n",x1,x2,x3,x4);
}
}