Você está na página 1de 35

CÁLCULO NUMÉRICO

Aula 3
Octave – Método de Gauss-Jacobi e Gauss-Seidel
Vetores e Matrizes
Colchetes são utilizados para armazenar vetores ou matrizes.

Vetor linha:
>> a = [1 2 3 4]

Vetor coluna:
>> a = [1; 2; 3; 4] ou
>> a=[1 2 3 4]’ ou ainda:
>> a = [1
2
3
4]
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 3/55
MATRIZ
Uma matriz pode ser armazenada por:

>> A=[a11 a12 a13; a21 a22 a23; a31 a32 a33];

Ou por:
>> A=[a11 a12 a13
a21 a22 a23
a31 a32 a33];

Ou ainda por:

>> A=[[a11 a12 a13]’[a21 a22 a23]’[a31 a32 a33]’];

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 4/55
MATRIZ
Podemos acessar cada valor de uma matriz utilizando a
estrutura:
>> A(i,j)

Por exemplo:
>> A(1,1) = a11

Podemos obter o tamanho de uma matriz ou o comprimento


de um vetor utilizando os comandos:
>> size (A)
>> length (b)

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 5/55
Símbolo :
O : é muito utilizado para manipular matrizes. Se um : for
colocado entre dois números, o Octave irá gerar números
entre eles adicionando um.

>> i = 1:5
i será igual a 1, depois 2, depois 3, depois 4 e por último 5.

Variações interessantes seriam:


>> i = 1:0.5:3
Isto resulta em: i = 1.0 1.5 2.0 2.5 3.0
>> i = 5:-1:1
Isto resulta em: i = 5 4 3 2 1
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 6/55
Sistemas de Equações

Ax = b A-1Ax = A-1b I x = A-1b


c

 1 0 0  x1   c1   c 
      1 
 0 1 0  x2  =  c2  x =  c2 
 0 0 1  x   c   
  3   3   c3 

>> x = inv(A)*b
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 7/55
Sistemas de Equações
Considere o sistema:

 3 x1 − 4 x2 + x3 = 9

 x1 + 2 x2 + 2 x3 = 3
 4x − 3 x3 = −2
 1

Resolva-o.
1
RESPOSTA:

x = −1 
 
 2 
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 8/55
MÉTODO DE GAUSS-JACOBI
Vamos supor, por simplicidade, um sistema de 3 equações e
3 incógnitas:

E1 : a11 x1 + a12 x2 + a13 x3 = b1


E2 : a21 x1 + a22 x2 + a23 x3 = b2
E3 : a31 x1 + a32 x2 + a33 x3 = b3
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 9/55
MÉTODO DE GAUSS-JACOBI
Se os elementos da diagonal forem todos não-nulos, é
possível isolar x1 em E1; x2 em E2 e x3 em E3.

b1 − a12 x22 − a13 xx33


x1 =
a11
b2 − a21 xx11− a23 xx33
x2 =
a22
b3 − a31 xx11− a32 xx22
x3 =
a33
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 10/55
Método de Gauss-Jacobi
De forma equivalente, podemos escrever:

b1 a12 a13
x1 = − x22 − xx33
a11 a11 a11

b2 a21 a23
x2 = − x11 − xx33
a22 a22 a22
b3 a31 a32
x3 = − x11 − xx22
a33 a33 a33
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 11/55
Método de Gauss-Jacobi
De forma equivalente, podemos escrever:

b1 a12 a13
x1 = + 0 x1 − x22 − x33
a11 a11 a11

b2 a21 a23
x2 = − x11 + 0 x2 − xx33
a22 a22 a22
b3 a31 a32
x3 = − xx11− xx22 + 0x3
a33 a33 a33
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 12/55
Método de Gauss-Jacobi
4×4 b1 a12 a13 a14
x1 = + 0 x1 − xx22 − x33 − xx44
a11 a11 a11 a11
b2 a21 a23 a24
x2 = − xx11 + 0 x2 − x33 − x44
a22 a22 a22 a22
b3 a31 a32 a34
x3 = − x11 − xx22 + 0 x3 − x44
a33 a33 a33 a33
b4 a41 a42 a43
x4 = − x11 − xx22 − x33 + 0x4
a44Aula 3 –aOctave
44
a44 Linearesa44
– Sistemas
Cálculo Numérico 13/55
Método de Gauss-Jacobi
Para implementar, escreveremos então:

 b1   a12 a13 
a   0 − − 
 a11 a11 
 11 
 b2   a21 a23 
I =  ; D = − 0 − 
a
 22   a22 a22 
 b3   a31 a32 
  − − 0 
 a33   a33 a33 
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 14/55
Método de Gauss-Jacobi
Para implementar, escreveremos:
 a12 a13   b1 
( j)
 x1   0 − −   x1   
( j −1 )

   a11 a11     a11 


   a a23     b2 
 x2  = − 21
( j)
0 −  ×  x2  +  
( j −1 )

   a22 a22     a22 


   a a32   ( j −1)   b3 
 x3( j )   − 31 − 0   x3   
 a33 a33   a33 
X1 D X
Aula 3 – Octave – Sistemas Lineares I 15/55
Cálculo Numérico
Método de Gauss-Jacobi
E teremos:

>> X1 = D * X + I

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 16/55
Algoritmo do método de Gauss-Jacobi
ENTRADA: A (matriz n×n com ajj ≠ 0, j = 1, ..., n), b, aproximação
inicial X, erro
SAÍDA: solução aproximada X1
Passo 1: Para i = 1 : n (contador das linhas da matriz)
Passo 2: Para j = 1 : n (contador das colunas da matriz)
Passo 3: Se i = j
D(i, j) = 0
I (i, 1) = b(i, 1) / A(i, i);
senão
D(i, j) = -A(i, j) / A(i, i);

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 17/55
Algoritmo do método de Gauss-Jacobi

Fim dos Passos 1, 2 e 3


Passo 4: Enquanto k < nmax
X1 = D * X + I;
Passo 5: Para i = 1: n
ERx(i) = abs((X1(i) – X(i))/ X1(i))*100;
Fim Passo 5
Passo 6: Se maximo(ERx) < erro
SAÍDA (O vetor solução é: X1)

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 18/55
Algoritmo para Critério das Linhas
ENTRADA: A (matriz n×n com ajj ≠ 0, j = 1, ..., n), b.
SAÍDA: satisfaz o critério ou não.
Passo 1: Para i = 1 : n (contador das linhas da matriz)
soma(i) = 0;
Passo 2: Para j = 1 : n (contador das colunas da matriz)
Passo 3: Se i~=j
soma(i)=soma(i)+abs(A(i,j));
senão
DP(i)=abs(A(i,i));
Fim dos Passos 1, 2 e 3

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 19/55
Algoritmo para Critério das Linhas

Passo 4: Se DP>soma
SAÍDA (A matriz dos coeficientes satisfaz o critério)
senão
SAÍDA (A matriz dos coeficientes não satisfaz o critério)

Fim do Passo 4

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 20/55
Método de Gauss-Jacobi

Ordem da matriz: n

Matriz dos coeficientes: A

Vetor X inicial: X

Vetor dos termos independentes: b

Precisão: erro

Número máximo de iterações: nmax


Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 21/55
Exemplo 1
Considere o sistema:

 3 x1 − 0,1x2 − 0,2 x3 = 7,85



 0,1x1 + 7 x2 − 0,3 x3 = −19,3
0,3 x − 0,2 x + 10 x = 71,4
 1 2 3

A solução verdadeira é: x1 = 3, x2 = −2,5, x3 = 7


Use o Método de Gauss-Jacobi para obter a solução
aproximada com ε s = 0, 01%
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 22/55
Exemplo 1

A tabela abaixo apresenta os valores de x1, x2 e x3 a cada


iteração.

Iteração (j) x1(j) x2(j) x3(j)


1 2,61667 -2,75714 7,14000
2 3,00076 -2,48852 7,00636
3 3,00081 -2,49974 7,00021
4 3,00002 -2,50000 6,99998
5 3,00000 -2,50000 7,00000

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 23/55
Algoritmo do método de Gauss-Seidel
ENTRADA: A (matriz n×n com ajj ≠ 0, j = 1, ..., n), b, aproximação
inicial X, erro.
SAÍDA: solução aproximada X1.
Passo 1: Para i = 1 : n (contador das linhas da matriz)
Passo 2: Para j = 1 : n (contador das colunas da matriz)
Passo 3: Se i = j
D(i, j) = 0
I (i, 1) = B(i, 1) / A(i, i);
senão
D(i, j) = -A(i, j) / A(i, i);

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 24/55
Algoritmo do método de Gauss-Seidel
Fim dos Passos 1, 2 e 3
Passo 4: Enquanto k < nmax
X1 = X
Passo 5: Para i = 1:n
X1 = D * X1 + I;
Fim Passo 5
Passo 6: Para i = 1: n
ERx(i) = abs((X1(i) – X(i))/ X1(i))*100;
mtol(i) = tol;
Fim Passo 6

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 25/55
Algoritmo do método de Gauss-Seidel
Passo 7: Se ERx < erro
SAÍDA (O vetor solução é: X1)

X = X1;
k = k+1;

Fim Passo 7
Fim Passo 4

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 26/55
Método de Gauss-Seidel
Para obter x1:
 a12 a13   b1 
( j)
 x1   0 − −   x1   
( j −1 )

   a11 a11     a11 


   a a23     b2 
 x2  = − 21
( j)
0 −  ×  x2  +  
( j −1 )

   a22 a22     a22 


   a a32   ( j −1)   b3 
 x3( j )   − 31 − 0   x3   
 a33 a33   a33 
X1 D X1
Aula 3 – Octave – Sistemas Lineares I 27/55
Cálculo Numérico
Método de Gauss-Seidel
Para obter x2:

 a12 a13   b1 
 0 − −   
( j) a11 ( )
a11   x   a11 
 x1   1
j

 ( j )   a21 a23   ( j −1)   b2 


x
   a = − 0 − ×  x2  +
a22   a22 
2
 x3( j )   22  ( j −1) 
  x3   b 
  a31 a32
− − 0   3
 a33 a33   a33 

X1 D X1
Aula 3 – Octave – Sistemas Lineares I 28/55
Cálculo Numérico
Método de Gauss-Seidel
Para obter x3:

 a12 a13   b1 
 0 − −   
( j) a11 ( )
a11   x   a11 
 x1   1
j

 ( j )   a21 a23   ( j )   b2 
x
   a = − 0 − ×  x2  +
a22   a22 
2
 x3( j )   22  ( j −1) 
  x3   b 
  a31 a32
− − 0   3
 a33 a33   a33 

X1 D X1
Aula 3 – Octave – Sistemas Lineares I 29/55
Cálculo Numérico
D(i,:)*X1

Esta expressão realiza uma


multiplicação entre dois vetores:
uma linha da matriz D e o vetor X1

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 30/55
Método de Gauss-Seidel

Ordem da matriz: n

Matriz dos coeficientes: A

Vetor X inicial: X

Vetor dos termos independentes: b

Precisão: erro

Número máximo de iterações: nmax


Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 31/55
Fatoração LU
No Octave, usa-se o comando simples:

>> [L,U,P]=lu(A)

Resolve-se, então, o sistema utilizando:

>> y=inv(L)*P*b

>> x=inv(U)*y

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 32/55
Fatoração LU
Considere o sistema:

 3 x1 − 4 x2 + x3 = 9

 x1 + 2 x2 + 2 x3 = 3
 4x − 3 x3 = −2
 1

Resolva-o utilizando Fatoração LU.

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 33/55
Fatoração LU

 1 0 0   4 0 −3 
   
L =  0, 75 1 0  , U =  0 −4 3, 25 
 0, 25 −0, 5 1   0 0 4, 375 
   

 0 0 1 
  1
e P= 1 0 0  RESPOSTA:

x = −1 
 0 1 0   
   2 
Aula 3 – Octave – Sistemas Lineares
Cálculo Numérico 34/55
REFERÊNCIA

Becker, A. J.; Silva, D. M. I.; Dias, F.H.S.; Pinheiro L. K.


Noções Básicas de Programação em MATLAB.
Universidade Federal de Santa Maria, Santa Maria, Outubro
de 2010.

Aula 3 – Octave – Sistemas Lineares


Cálculo Numérico 35/55

Você também pode gostar