Escolar Documentos
Profissional Documentos
Cultura Documentos
4-1
(1)
Formulao Matricial
As equaes representadas em (1) podem ser descritas na forma matricial como:
[A][x] = [b]
(2)
para o qual:
a n3
a1n
x1
b1
x
b
a 2n
2
2
, [x ] = x 3 , [b] = b 3
a 3n
x n
b n
a nn
(3)
a13
a 23
a 33
a11 a12
a
21 a 22
[A] = a 31 a 32
a n1 a n 2
(4)
(5)
C.Y. Shigue
a n2
a 1n 1 0
a 2 n 0 1
=
a nn 0 0
a 12
a 22
0
0
= [I ]
x n2
x 1n a 11
x 2 n a 21
x nn a n1
x 12
x 22
x 11
x
1
[A ] [A ] = 21
x n1
4-2
(6)
C.Y. Shigue
4-3
a11 a12
a
a
[A] = 21 22
a 31 a 32
a 41 a 42
a 13
a 23
a 33
a 43
a 14
x1
b1
x
b
a 24
, [x] = 2 , [b] = 2
x3
b3
a 34
a 44
x4
b4
a11 a 12
a
a
[A]+ = 21 22
a 31 a 32
a 41 a 42
a 13 a 14
a 23 a 24
a 33 a 34
a 43 a 44
b1
b2
b3
b4
(7)
(8)
3o Passo:
Subtrair o produto do multiplicador pela 1a linha da 2a, da 3a e da 4a linha:
2a Linha
a
a = a 21 m2 a 11 = a 21 21 a11 = 0
21
a11
(9)
a = a 22 m 2 a12
22
a = a 23 m2 a 13
23
(11)
a = a 24 m 2 a14
24
(12)
b = b 2 m 2 b1
2
(10)
(13)
3a Linha:
a
a = a 31 m3a11 = a 31 31 a 11 = 0
31
a 11
(14)
a = a 32 m 3a12
32
a = a 33 m3a 13
33
(16)
a = a 34 m 3a14
34
(15)
(17)
C.Y. Shigue
4-4
b = b 3 m3 b1
3
(18)
4a Linha:
a
a = a 41 m4 a 11 = a 41 41 a11 = 0
41
a11
(19)
a = a 42 m 4 a12
42
(20)
a = a 43 m4 a 13
43
(21)
a = a 44 m 4 a14
44
(22)
b = b 4 m 4 b1
4
(23)
0 a
42
a 13 a 14
a
23 a
24
a
a
33
34
a
a
43
44
b1
b
2
b
3
b
4
(24)
3o Passo:
Subtrair o produto do multiplicador pela 2a linha da 3a e da 4a linha:
3a Linha:
a
a = a m a = a 32 a = 0
32
32
3 22
32
22
a
22
(25)
a = a m a
33
33
3 23
a = a m a
34
34
3 24
(27)
b = b m b
3
3
3 2
(26)
(28)
C.Y. Shigue
4a Linha:
4-5
a
a = a m a = a 42 a = 0
42
42
4 22
42
22
a
22
(29)
a = a m a
43
43
4 23
(30)
a = a m a 24
44
44
4
(31)
b = b m b
4
4
4 2
(32)
+ = 0 a 22
[A]
0
0
0
0
a 13 a 14
a 23 a 24
a a
33
34
a a
43
44
b1
b2
b
3
b
4
(33)
(34)
3o Passo:
Subtrair o produto do multiplicador pela 3a linha da 4a linha:
4a Linha:
a
a = a m a = a 43 a = 0
43
43
4 33
43
33
a
33
(35)
a = a m a 34
44
44
4
(36)
b = b m b
4
4
4 3
(37)
0
0
a 13 a 14
a
23 a
24
a a
33
34
0 a
44
b1
b
2
b
3
b
4
(38)
C.Y. Shigue
4-6
0
0
a 13 a 14
a 23 a 24
a 33 a 34
0 a 44
b1
b2
b3
b4
(39)
bi
a ij x j
j= i +1
xi =
, i = 4,3,2,1
a ii
(40)
(41)
i =1
Exemplo:
Seja o sistema de trs equaes e trs incgnitas:
2x1 + 3x2
-x1 +
x3 = 0
x2 + 4x3 = 3
x1 8x2 -
x3 = 1
1 8 1 1
C.Y. Shigue
4-7
3
1
2
0
[A] =
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
10
510
500
530
PROGRAM ELIMINA
PARAMETER (NMAX = 50)
REAL
A(NMAX,NMAX+1), X(NMAX+1)
WRITE(*,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)
CONTINUE
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
CONTINUE
IF (BIG. EQ. 0.0) THEN
WRITE(*,*) 'MATRIZ SINGULAR'
STOP
END IF
IF (I .NE. L) THEN
DO 540 J = 1, NN+1
C.Y. Shigue
4-8
TEMP = A(I,J)
A(I,J) = A(L,J)
A(L,J) = TEMP
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)
CONTINUE
CONTINUE
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)
CONTINUE
END IF
X(IREV) = Y / A(IREV,IREV)
CONTINUE
WRITE(*,60)
WRITE(*,65)
DO 590 I = 1, NN
DO 600 J = 1, NN+1
WRITE(*,70) I, J, A(I,J)
CONTINUE
CONTINUE
DET = 1.0
DO 610 I = 1, NN
DET = DET * A(I,I)
CONTINUE
WRITE(*,80) DET
DO 620 I = 1, NN
WRITE(*,100) I, X(I)
CONTINUE
FORMAT(1X, 'A(',I2,',',I2,'): ')
FORMAT(/10X,'SOLUCAO'/)
FORMAT(/5X,'COEFICIENTES DA MATRIZ TRIANGULARIZADA'/)
FORMAT(5X, 'A(',I2,',',I2,') = ',F12.7)
FORMAT(1X/, 5X, 'DETERMINANTE DO SISTEMA = ', F12.7/)
FORMAT(5X, 'X(',I2,') = ', F12.7)
END
540
560
550
520
580
570
600
590
610
620
50
60
65
70
80
100
Linguagem C
/*
Programa elimina.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NMAX 50
int
int
float
float
i, j, k, l;
neq, nmais, last, rev;
a[NMAX][NMAX+1], x[NMAX+1];
coef, big, term, temp, pivot, nextr, cnt, y;
void main()
{
printf("Numero de equacoes: ");
scanf("%d", &neq);
for(i = 1; i <= neq; i++) {
C.Y. Shigue
4-9
C.Y. Shigue
410
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:
a11x1 + a12x2 + a13x3 + ... + a1nxn = b1
a21x1 + a22x2 + a23x3 + ... + a2nxn = b2
a31x1 + a32x2 + a33x3 + ... + a3nxn = b3
(42)
(43)
(44)
(45)
(k)
C.Y. Shigue
1.
2.
411
x1 - x1
(k-1)
(k)
< , x2 - x2
(k-1)
(k)
(k-1)
< , ... xn - xn
<
(46)
Exemplo:
Seja o sistema de duas equaes:
2x + 3y = 4
(e1)
-x +
(e2)
y = 1
(e3)
y = (1 + x)
(e4)
C.Y. Shigue
412
Iterao
0
1
2
3
4
5
0
2
-2,5
4,25
-5,875
9,3125
2
4,5
6,75
10,125
15,1875
y
0
3
-1,5
5,25
-4,875
10,3125
y
3
4,5
6,75
10,125
15,1875
(e5)
y = (4 - 2x)/3
(e6)
0
-1
1
-0,33333
0,55556
-0,03704
0,35803
0,09465
0
2
0,66667
1,55556
0,96296
1,35803
1,09465
1,27023
1
2
1,33333
0,88889
0,59260
0,39507
0,26338
2
1,33333
0,88889
0,59260
0,39507
0,26338
0,17558
-5
C.Y. Shigue
413
(1)
3
(2)
-1
-2
-3
-2
-1
(47)
a21x1 + a22x2 = b2
(48)
(k)
(k)
= [b1 - a12x2
(k-1)
]/a11
(49)
(k)
(50)
Se definirmos:
x1
(k)
x2
(k)
= x1 - x1
= x2 - x2
(k)
(51)
(k)
(52)
(k)
= - a12/a11.x2
(k-1)
(53)
e, de (50) e (52):
Clculo Numrico e Computacional
C.Y. Shigue
414
x2
(k)
x1
(k)
x1
(k)
= [a12a21/(a11a22)] x1
x1
(k)
= [a12a21/(a11a22)] x1
x2
(k)
= [a12a21/(a11a22)] x2
= - a21/a22.x1
(k)
(54)
(k-1)
(55)
(k-2)
(56)
(0)
(57)
(0)
(58)
Assim, se
a12a21/a11a22 < 1
(59)
(60)
a22 a21
(61)
a11 a12
(62)
(63)
ou se
e
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:
Teorema da convergncia do mtodo iterativo de Gauss-Seidel: A iterao do mtodo de
Gauss-Seidel convergir se, no determinante caracterstico, cada termo da diagonal
C.Y. Shigue
415
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)
a ji
i = 1, 2, ... , n
(65)
j= 1
j i
e
n
a ii
>
j= 1
j i
Exemplo:
Seja o seguinte sistema de equaes:
-x1 + 3x2 + 5x3 + 2x4
x1 + 9x2 + 8x3 + 4x4
x2
+ x4
2x1 + x2 + x3 - x4
10
15
-3
x4
+ 4x4
-3
15
+ 2x4
+ x4
10
x3
x4
(-3 - x2 - x3 + x4)/2
(15 - x1 - 8x3 - 4x4)/9
(10 + x1 - 3x2 - 2x4)/5
( 2 - x2)
.
C.Y. Shigue
416
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.
10
100
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);
}
}
C.Y. Shigue