Este blog Mudou

Este Blog mudou-se para:

quinta-feira, 27 de outubro de 2005

Calc. Numérico: Sistemas Lineares

Olá! Andei meio distante em? Bom hoje vamos falar um pouco sobre cálculo numérico vamos dar uma olhada em dois assuntos muito interessantes: o primeiro é resolução de sistemas lineares o segundo será interpolação.

Sistemas lineares

Sistemas lineares serão modelados como um conjunto de equações do tipo

ax + by + cz = k

dx + ey + fz = m

gx + hy + iz = n

Você já deve ter visto um desses por aí não?

Eliminação Gaussiana

O primeiro método numérico que vem é Eliminação Gaussiana (é sério o Gauss era muito brabo o cara era um gênio mesmo!).

O objetivo da eliminação Gaussiana é representando os S.L. (apelido para sistema linear) como matrizes operar essa matriz para obter uma matriz triangular, algo do tipo:

a b c k

0 e f m

0 0 i n

Que voltando para o S.L. vamos ter a última equação com:

uma variável = valor

daí é só ir substituindo nas outras equações o resultado da anterior. Muito facim facim né não?

Aí você diz: “não né não e esse passe de mágica aí da matriz pra matriz triangular?” Ok, vamos ver mais de perto como se faz isso.

Para cada item que você queira zerar calcule um multiplicador baseado no elemento da diagonal principal da matriz. (Ãhn?? agora você viajou né não?). Vamos ver um exemplo:

Eu quero zerar o d vou usar o a por que ele está na diagonal principal daí

Mult = d/a

Aí para a linha toda eu faço

item_da_linha2 = (item_da_linha1*mult)- item_da_linha2

é só isso até zerar tudo o que precisar.

Decomposição L.U.

A idéia da Decomposição L.U. é muito parecida com a da Eliminação Gaussiana a diferença aqui será que não vamos nos preocupar com os termos independentes na matriz (k,m e n no exemplo anterior) e para isso depois de feitos os passos da Eliminação Gaussiana vamos fazer umas continhas, coisa pouca eu garanto ;-).

A*X = B

Bonito né? Sim e daí? Tá tá eu explico A = matriz com os coeficientes das variáveis no S.L. no nosso exemplo

a b c

d e f

g h i

X = Matriz coluna com as variáveis do S.L.

x

y

z

B = matriz coluna dos termos independentes

k

m

n

A matriz A será decomposta em matriz L e matriz U (olha aí você num queria saber por quê esse nome?)

U será a matriz A depois de passar por Eliminação Gaussiana que você já sabre fazer.

A matriz L será uma matriz muito interessante triangular superior com 1s na digonal principal e preenchida com os mults usados na Eliminação Gaussiana de A daí L =

1 0 0

m 1 0

m m 1

Põe tudo no liquidificador e... ops receita errada, Voltando como L*U =A

L*U*X=B

Vamos chamr U*X de Y ok? Por quê? Pro quê sim ué!

Daí

L*Y=B

Vamos agora calcular a matriz coluna Y

Y1

Y2

Y3

Ora faça você as contas! Multiplique L pela matriz coluna Y e encontre os resultados comparando o resultado com B.

Agora ache X com U e Y lembre:

U*X = Y

Pivotamento

Pivotamento é o seguinte para garantir boas operações no cálculo do mult e nas operações com linhas da matriz o ideal é que o maior número da matriz seja o seu pivô(pivô é o elemento da diagonal principal que você usa para calcular o mult). Assim você pode trocar uma linha com outra para gaantir que o maior pivô esteja na diagonal principal sempre que for fazer essas operções. No caso do Pivotamento completo você poderá também trocar colunas cuidado!!! ao trocar colunas você também está trocando a ordem das variáveis do seu S.L. então você deve alterar teu vetor X das variáveis de acordo com as trocas que você faça. No caso da Decomposição L.U. a troca de linhas também é perigosa pois você deve trocar os valores da matriz B de acordo!

Métodos Iterativos

Vamos passar agora a métodos iterativos que não darão necessariamente respostas exatas

Método iterativo de Gauss-Jacobi

Antes de começar para este método você precisa de uma condição muito especial. Em cada equação deve haver uma variável cujo coeficiente seja maior que a soma dos outros dois. E isso é importante mesmo! Depois disso selecione para cada variável uma equação que a represente você deve selecionar a variável da equação que tem o maior índice e isolar essa variável. Daí você vai ter coisinhas como

x = (k-by-cz)/a

y = (m-dx-fz)/a

z = (n-gx-hy)/a

Chuta valores para x y e z vai calculando x y e z usando o valor da iteração anterior na atual e pronto.

E isso não para não é?Para sim, calcule o erro de cada variável como sendo (X0-X1)/X1 o erro da iteração será o maior dos erros quando ele chegar ao limiar que você gosta, retire do fogo e deixe descansar por uma hora em local seco e ventilado ops... receita errada de novo ^^.

Método Iterativo de Gauss-Seidel

Faça o mesmo, mas numa mesma iteração se você já calculou x use esse valor no cálculo de y e de z. Oxe e é só isso? É só isso que que você quer mais? Eu eim!

Não vou passar para interpolação hoje não!

Aí já tem coisa demais.

Fica pra o próximo artigo.

2 comentários:

Anônimo disse...

Por acaso vc teria a lógica em Delphi do Sistema de Equações Lineares pelo Método de Gauss para me passar? Estou precisando para entregar um trabalho, ficarei muito grato pela ajuda.
VLW

Anônimo disse...

olá,tudo bom?eu queri dizer que sua didática é ótima,você consegue transmitir o que realmente quer mas,eu tenho uma sugestão:daria pra você passar alguns exemplos do cotidiano?ficaria muito feliz,um abraço!