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.