Você está na página 1de 15

PR

UNIVERSIDADE TECNOLGICA FEDERAL DO PARAN

Curso: Engenharia de Produo Civil


Disciplina Mtodos Numricos

ALEX BARBOSA CAMPOS SILVA


JONATHAN DA MAIA SANTOS DE MELO
RODOLFO KRUL TESSARI

3 TRABALHO DE MTODOS NUMRICOS


GAUSS-SIEDEL
LINGUAGEM FORTRAN

Prof. Violeta Maria Estephan

Curitiba
2009
1

Sumrio
1.INTRODUO ................................................................................................................... 3
2.O MTODO GAUSS-SEIDEL ................................................................................................ 3
3.CDIGO FONTE................................................................................................................. 3
4.ANLISE DOS PROBLEMAS PROPOSTOS ............................................................................ 7
4.1 Apresentao dos resultados ............................................................................................... 16
5.CONCLUSES ................................................................................................................. 17

1.

INTRODUO

A importncia do estudo de resoluo de Sistemas-lineares na Engenharia e de uma grandeza


imensurvel, pois diversos clculos e dimensionamentos so feitos atravs de Sistemas Lineares,
alm de que esse mtodo possui uma grande preciso, levando em conta que utilizado o valor
anterior calculado nas Funes de Iteraes.
Neste trabalho foram omitidas as dedues do mtodo tendo em vista que o mesmo j foi
deduzido em sala e ser apresentado como programao.

2.

O MTODO GAUSS-SEIDEL

O mtodo de Gauss-Seidel um mtodo interativo para resoluo de sistemas de equaes


lineares. O seu nome uma homenagem aos matemticos alemes Carl Friedrich Gauss e Philipp
Ludwig von Seidel. semelhante ao mtodo de Jacobi (e como tal, obedece ao mesmo critrio de
convergncia). condio suficiente de convergncia que a matriz seja estritamente diagonal
dominante e fica garantida a convergncia da sucesso de valores gerados para a soluo exata
do sistema linear.
Esse mtodo difere do processo de Jacobi-Richardson por utilizar para o clculo de uma
componente de x(k+1) o valor mais recente das demais componentes Por esse motivo o mtodo
da Gauss-Seidel tambm conhecido por Mtodo dos Deslocamentos Sucessivos.
3.

O CDIGO FONTE

program Gauss_Sudel
!----------------------------------------------------------------------------------------------!#declarao das variveis: matriz com valores reais, demais variveis inteiras
implicit none
real*4, allocatable, dimension (:,:) :: mat
real*4, allocatable, dimension (:) :: soluc, copia, vetor_erro, vetor_soluc, posicao_i, posicao_j
real*4 soma, dk
integer nlin, ncol, i, j, ver, posicaoi, posicaoj, n_it
character*30 texto
!----------------------------------------------------------------------------------------------!#Abertura dos blocos de notas para posterior entrada dos dados da matriz
!# e gravao dos resultados da matriz escalonada
open (1, file="GJS52EQUIPE7DADOS.TXT")
3

open (2, file="GJS52EQUIPE7SOLUC.TXT")


!----------------------------------------------------------------------------------------------!# Entrada visual do program por meio do emprego da subrotina INICIO
!----------------------------------------------------------------------------------------------call INICIO (ver)
open(1, file="GJS52EQUIPE7DADOS.TXT")
read (1,*) nlin,ncol
allocate (mat(nlin,ncol), soluc(nlin), copia(nlin), posicao_i(1), posicao_j(1), vetor_erro(nlin),
vetor_soluc(nlin))
do i=1, nlin
read (1,*) mat(i,:)
end do
close(1)
!_____________________________________________________________soluc=0
texto="Soluo inicial"
call impressao (texto, soluc,nlin,ncol-1)
dk=1
n_it=0
do while (dk .ge. 0.0001)
copia=soluc
do i = 1, nlin
soma=0
do j = 1, ncol-1
if (j==i) cycle
soma=soma+mat(i,j)*soluc(j)
end do
soluc(i)=(-soma+mat(i,ncol))/mat(i,i)
4

end do
texto="Soluo parcial"
call impressao (texto, soluc,nlin,ncol-1)

vetor_erro=abs(soluc-copia)
Vetor_soluc=abs(soluc)
posicao_i=maxloc(Vetor_erro)
posicao_j=maxloc(vetor_soluc)
posicaoi=posicao_i(1)
posicaoj=posicao_j(1)
dk=vetor_erro(posicaoi)/vetor_soluc(posicaoj)
n_it=n_it+1
end do
texto="Soluo Final"
call impressao (texto, soluc,nlin,ncol-1)
write (2,*) ""
write (2,1) dk
1 format (" ERRO:", F10.7)
write (2,*) "Nmero de iteraes:", n_it
close (2)
ver=system("GJS52EQUIPE7SOLUC.TXT")
!----------------------------------------------------------------------------------------------contains !##descrio das subsrotinas
!----------------------------------------------------------------------------------------------!## subrotina para fornecimento correto para entrada de dados ao usurio
subroutine INICIO (ver)
implicit none
5

integer ver
open(1, file="GJS52EQUIPE7DADOS.TXT")
write (1, '("Nlin Ncol", 10X, "!Substitua Nlin e Ncol pela dimenso da matriz ampliada")')
!## prepara o bloco de notas para um sistema escalonado
write (1, 10)
10 format (//, 'a11 a12 a13 r1',/,'a21 a22 a23 r2',/,'a31 a32 a33 r3')
write (1,11)
11 format (/,'!Substitua as incognitas A pelos valores da sua matriz e R pelo resultado',/,'!caso seja
maior siga no mesmo formato')
write (1,*) " "
write (1,*) "!!PRGRAMA GAUSS-SUDEL!!"
close (1)
ver=system ("GJS52EQUIPE7DADOS.TXT")
end subroutine INICIO
!----------------------------------------------------------------------------------------------!## subrotina de impresso da solucao aps cada iteracao
subroutine impressao (texto,soluc,nlin,ncol)
implicit none
real*4, allocatable, dimension (:,:) :: mat
real*4, allocatable, dimension (:) :: soluc
integer nlin, ncol, i, j
character*30 texto
open (2,file="GJS52EQUIPE7SOLUC.TXT")
write (2,*) " "
write (2,*) texto
write (2,*) "____________________________________________________"

do j=1,ncol
write (2,1,advance="no") soluc(j)
1 format (4X,F15.5)
end do
write (2,*) " "
write (2,*) "____________________________________________________"
end subroutine impressao
!----------------------------------------------------------------------------------------------end program Gauss_Sudel
4.

ANLISE DOS RESULTADOS DOS PROBLEMAS PROPOSTOS

Sim, foi preciso pivotear as linhas pois da maneira que estavam dispostas, o mtodo divergia da
resposta, e condio dominante para que o mtodo convirja, foi citada na introduo deste
trabalho, de que condio suficiente de convergncia que a matriz seja estritamente diagonal
dominante e fica garantida a convergncia da sucesso de valores gerados para a soluo exata
do sistema linear, caso essa condio no seja atendida o mtodo diverge do valor real do
sistema.
4.1.

APRESENTAO DA RESOLUO DOS SISTEMAS UTILIZANDO O PROGRAMA

a)

200 2 0,3 0,01 5


0,4 0,03 9 10 7
2 30 1
4 10
2,3 0,8 60 1 20
Soluo:
Para a resoluo do item a, foram realizadas as seguintes trocas:
linha 2 com linha 3
linha 3 com linha 4
O sistema utilizado foi o seguinte:

200 2
2 30
2,3 0,8
0,4 0,03

0,3 0,01 5
1
4 10
60 1 20
9 10 7

Soluo inicial
____________________________________________________
0.00000 0.00000 0.00000 0.00000
____________________________________________________
7

Soluo parcial
____________________________________________________
0.02500 0.33167 0.32795 0.40285
____________________________________________________
Soluo parcial
____________________________________________________
0.02117 0.26728 0.32224 0.40833
____________________________________________________
Soluo parcial
____________________________________________________
0.02182 0.26669 0.32214 0.40841
____________________________________________________
Soluo parcial
____________________________________________________
0.02183 0.26669 0.32213 0.40841
____________________________________________________
Soluo Final
____________________________________________________
0.02183 0.26669 0.32213 0.40841
____________________________________________________
ERRO: 0.0000246
Nmero de iteraes: 4
b)

2
0.7
138
11
1.8

-2
-63
-3
-25
-6

11
2
21
-51
-12

87
3
0.3
7
3

-1 245
-8 1358
-18 56
-11 38
-81 157

Soluo:
Para a resoluo do item c, foram realizadas as seguintes trocas:
linha 1 com linha 3
linha 3 com linha 4

O sistema utilizado foi o seguinte:

138
0.7
11
2
1.8

-3
-63
-25
-2
-6

21
2
-51
11
-12

0.3
3
7
87
3

-18 56
-8 1358
-11 38
-1 245
-81 157

Soluo inicial
____________________________________________________
0.00000 0.00000 0.00000 0.00000 0.00000
____________________________________________________
Soluo parcial
____________________________________________________
0.40580 -21.55105 9.90666 1.05877 -1.76132
____________________________________________________
Soluo parcial
____________________________________________________
-1.80228 -20.98701 9.67914 1.13102 -1.81579
____________________________________________________
Soluo parcial
____________________________________________________
-1.76265 -20.98343 9.70760 1.12597 -1.81957
____________________________________________________
Soluo parcial
____________________________________________________
-1.76739 -20.98234 9.70616 1.12624 -1.81954
____________________________________________________
Soluo parcial
____________________________________________________
-1.76714 -20.98238 9.70626 1.12622 -1.81954
____________________________________________________
Soluo parcial
____________________________________________________
-1.76716 -20.98237 9.70626 1.12622 -1.81954
____________________________________________________
Soluo Final
____________________________________________________
-1.76716 -20.98237 9.70626 1.12622 -1.81954
____________________________________________________

ERRO: 0.0000095
Nmero de iteraes: 6
c)

0,7
2
0
0
1
1

-63
-8
48
0
-11
2

2 3 -8 1
18
0 31 0 -1 1358
-8 0 0 11 382
0 192 0 -89 129
0 0 0 132 359
-11 4 -5 28 193

Soluo:
Para a resoluo do item c, foram realizadas as seguintes trocas:
linha 5 com linha 6
coluna 1 com coluna 2
Devido troca de colunas, neste caso a soluo apresentada encontra-se na seguinte
ordem: y, x, z, w, t, g. O sistema utilizado foi o seguinte:

-63
-8
48
0
2
-11

0,7
2
0
0
1
1

2 3 -8 1
18
0 31 0 -1 1358
-8 0 0 11 382
0 192 0 -89 129
-11 4 -5 28 193
0 0 0 132 359

Soluo inicial
____________________________________________________
0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
____________________________________________________
Soluo parcial
____________________________________________________
-0.01587 678.93652 -47.84524 0.67188 202.97798 -2.42508
____________________________________________________
Soluo parcial
____________________________________________________
4.66288 686.02490 -23.10719 -0.45225 137.36368 -2.08889
____________________________________________________
Soluo parcial
____________________________________________________
4.20869 701.80023 -25.37010 -0.29641 147.32283 -2.24625
____________________________________________________
Soluo parcial
____________________________________________________
4.45643 700.29694 -24.10002 -0.36935 143.38754 -2.21421
10

____________________________________________________
Soluo parcial
____________________________________________________
4.40377 701.23297 -24.37193 -0.35451 144.34314 -2.22569
____________________________________________________
Soluo parcial
____________________________________________________
4.42099 701.06598 -24.28438 -0.35983 144.05548 -2.22299
____________________________________________________
Soluo parcial
____________________________________________________
4.41651 701.13184 -24.30756 -0.35857 144.13399 -2.22387
____________________________________________________
Soluo parcial
____________________________________________________
4.41782 701.11725 -24.30088 -0.35898 144.11169 -2.22365
____________________________________________________
Soluo Final
____________________________________________________
4.41782 701.11725 -24.30088 -0.35898 144.11169 -2.22365
____________________________________________________
ERRO: 0.0000318
Nmero de iteraes: 8
d)
Problema proposta

0.7071
0
0
-0.7071
0.7071
0
0
0
0
0
0
0
0

1
-1
0
0
0
0
0
0
0
0
0
0
0

0
0
1
0
1
0
0
0
0
0
0
0
0

0
0
0
1
0
-1
0
0
0
0
0
0
0

0
0
0
0.6585
0.7526
0
0
-0.6585
0.7526
0
0
0
0

0
1
0
0
0
0
0
-1
0
0
0
0
0

0
0
0 0
0
0 0
0
0
0 0
0
0 0
0
0
0 0
0
0 0
0
0
0 0
0
0 0
0
0
0 0
0
0 0
1 0.6585 0 0
0
0 0
0 0.7526 1 0
0
0 0
0
0
0 1
0
0 0
0
0
1 0
0
0 0
-1
0
0 0 0.7071 0 0
0
0
0 0 0.7071 1 0
0 0.7526 0 0
0
1 0
0
0
0 0 0.7071 0 1

0
0
2000
0
-1000
0
-500
0
4000
0
-500
2000
0

11

Para a resoluo do item d, foram realizadas as seguintes trocas:


linha 04 com linha 1
linha 02 com linha 4
linha 09 com linha 5
linha 02 com linha 6
linha 06 com linha 7
linha 12 com linha 8
linha 07 com linha 9
linha 08 com linha 10
O sistema utilizado foi o seguinte:

0.7071
0.7071
0
-0.7071
0
0
0
0
0
0
0
0
0

0
1
0
0
0
-1
0
0
0
0
0
0
0

1
0
1
0
0
0
0
0
0
0
0
0
0

0
0
0
1
0
0
-1
0
0
0
0
0
0

0.7526
0
0
0.6585
0.7526
0
0
0
0
0.6585
0
0
0

0
0
0
0
0
1
0
0
0
-1
0
0
0

0
0
0 0
0
0 0
0
0
0 0
0
0 0
0
0
0 0
0
0 0
0
0
0 0
0
0 0
0
0
1 0
0
0 0
0
0
0 0
0
0 0
1 0.6585 0 0
0
0 0
0 0.7526 0 0
0
1 0
0 0.7526 1 0
0
0 0
0
0
0 1
0
0 0
-1
0
0 0 0.7071 0 0
0
0
0 0 0.7071 1 0
0
0
0 0 0.7071 0 1

-1000
0
2000
0
4000
0
0
2000
-500
0
0
-500
0

O nosso programa divergiu da resposta, a soluo apresentada foi obtida atravs de outro
mtodo computacional a HP, ficando para a tentativa de soluo deste e do prximo sistema
como desafio da apresentao do programa.
Na execuo do programa a resposta deve convergir para:
F1
F2
F3
F4
F5
F6

-3086.48173
2182.45123
1023.34229
-2199.55161
1509.12388
2182.45123

F7
F8
F9
F10
F11
F12
F13

-1483.78111
396.184067
1033.03261
0
-1858.94199
645.13465
1314.45788

12

-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

e)
0
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Problema Proposto
-0.7071 0 0 0
0
-0.7071 0 0 1
0
0.7071 0 1 0
0
0
0 -1 0 -0.7071
0
-1 0 0 0.7071
0
0 0 -1 -0.7071
0
0 0 0 0.7071
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0
0
0 0 0
0

0
0
0
0
1
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
1
-1
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
1
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
-0.707
0.7071
0.7071
0.7071
0
0
0
0
0
0
0
0
0.9806
0

0
0
0
0
0
0
0
0
0
0
1
-1
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0.9806
0.1961
0
0
0
0
-0.9806
-0.1961
0
0
0
0
0
0

0
0
0
0
0
0
0
0.7071
0.7071
0
0
0
0
0
0
-0.7071
-0.7071
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
-1
0
0
0
0
0

0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0 0
0
0 0.9806 0.7433 0 0
0
1 0.1961 0.669 0 0 8000
0
0
0
1 0
0
-1
0
0
0 0
0
0
0
-0.743 -1 0 -5000
0
0
-0.669 0 -1
0
0
0
0
0 0 5000
0 -0.1961
0
0 1 8660.25

Para a resoluo do item d, foram realizadas as seguintes trocas diversas trocas para atender a mxima do mtodo de Gass-seidel
Que na diagonal principal no haja termo nulo.

13

O sistema utilizado foi o seguinte:

-1 0 -0.7071 0 0 0

0 0 0

0 0

0 0

0 -1 -0.7071 0 0 1

0 0 0

0 0

0 0

0 0 0.7071 0 1 0

0 0 0

0 0

0 0

0 0

-1 0 0 0.7071 1 0 0

0 0

0 0

0 0

0 -1 0 -0.7071 0 0 0

0 0

0 0

0 0

0 0 -1 -0.7071 0 0 1

0 0

0 0

0 0

0 0 0 0.7071 0 1 0

0 0

0 0

0 0

0 0 0

-1 0 0 0.7071 0 1 0.1961 0.7071 0

0 0

0 0

0 0 0

0 -1 0 -0.707 0 0 0.9806 0.7071 0

0 0

0 0

0 0 0

0 0 -1 0.7071 0 0

0 0

0 0

0 0 0

0 0 0 0.9806 0 0

0 0

5000

0 0

0 0 0

0 0 0 0.7071 1 0

0 0

0 0

0 0 0

0 0 0

0 1

0 0

0 0

0 0 0

0 0 0

0 0 -0.9806

0.9806 0.7433 0 0

0 0

0 0 0

0 0 0

0 0

-0.7071 0

-1

0 0

0 0

0 0 0

0 0 0

-1 0

0 0

0 0 0

0 0 0

0 0

0 0 0

0 0 0

0 0

0 0 0

0 0

0 0 0

0 0

0 0 0

0 0

0 0 -0.1961

0.1961

0.669

0 0

8000

0 0

-0.1961

0 0 0

0 0

0 0 0

0 0

-0.7071 -1

0 0 0

0 0

0 1 8660.25

-0.743 -1 0
0

-5000

1 0

-0.669 0 -1

14

A soluo apresentada pelo programa para esse sistema foi mostrada em sala durante a
apresentao do programa, sendo que foram 74 iteraes e um erro de 10E-5.
Frisamos que para a convergncia do programa no pode haver nmeros nulos na diagonal
principal
5.

CONCLUSES

O mtodo se mostrou o muito eficaz para a resoluo de sistemas lineares, sendo que a
aproximao muito precisa, dependendo do erro adotado. um mtodo tambm caso
necessrio realiz-lo manualmente sem mquinas de clculo, se mostra eficiente tambm,
levando em conta que se consegue funes de iteraes o que facilita a visualizao e realizao
de contas.
Enfim de todos os mtodos conhecidos do Gauss para resoluo de sistema, esse foi o mtodo
que mais agradou nossa equipe, pela fcil aplicao e tambm pela preciso.
O que mais nos chama a ateno nesse mtodo a utilizao dos valores anteriores para o clculo
do prximo valor esse fato leva a preciso.
Aps a realizao desse trabalho ficamos cientes que a condio necessria para o xito do
mtodo o de que a matriz seja estritamente diagonal e aps alguns testes com o programa de
Gauss-Seidel verficou-se tambm que na diagonal principal no pode possuir nenhum numero
nulo.

15

Você também pode gostar