Você está na página 1de 31

IFES – Instituto Federal do Espírito Santo – Campus São Mateus

CURSO: Engenharia Mecânica SEMESTRE: 2013/1


DISCIPLINA: Cálculo Numérico
PROFESSOR: Eduardo da Silva

Notas de Aula:
Revisão

ORIENTAÇÕES
Prezado aluno, seguem as notas de aula de nosso curso até aqui. É importante
lembrar que elas são um resumo com os principais pontos abordados em sala e o
seu caráter sintético, portanto, abstrai e não substitui as demonstrações vistas em
sala e as implementações em linguagem específica praticadas no laboratório.

Capítulo 1 – Noções Sobre Erros


1.1 – Introdução
O Cálculo Numérico tem por objetivo estudar esquemas numéricos (algoritmos
numéricos) para resolução de problemas das mais diversas áreas que podem ser
representados por um modelo matemático. Ele corresponde a um conjunto de ferramentas
ou métodos usados para obter a solução de problemas matemáticos de forma aproximada.
Esses métodos se aplicam principalmente a problemas que não apresentam solução exata e,
portanto, precisam ser resolvidos numericamente.

A necessidade de produzir resultados numéricos se deve a vários motivos, por exemplo,


um problema de matemática pode ser resolvido analiticamente, mas esse método pode se
tornar extremamente complicado e complexo com o aumento do tamanho do problema, ou
quando existem problemas para os quais não existem métodos matemáticos, entre outros.

Os métodos numéricos buscam soluções aproximadas para as formulações matemáticas.


Nos problemas reais, os dados são medidas que não são exatas. Sabe-se que uma medida
física não é um número, mas sim um intervalo, pela própria imprecisão da medida, por isso
trata-se sempre com erros, inerentes à própria medição. Os métodos aproximados buscam
uma aproximação do que seria o valor exato, dessa forma é inerente a eles trabalhar com
aproximações, erros e desvios.
Vejamos as várias fases da resolução de problemas, através do fluxograma:

Problema Levantamento
Real de dados

Construção do Escolha do Método


Modelo Matemático Numérico Adequado

Implementação Análise dos Quando necessário:


Computacional resultados Obtidos reformular algum dos passos
anteriores

Mesmo que todas as fases do fluxograma acima tenham sido realizadas corretamente,
ainda podem-se obter resultados finais totalmente diferentes do que se esperava. Estes
resultados dependem também:
 da precisão dos dados de entrada;
 da forma com que os dados são representados na maquina;
 das operações numéricas realizadas.

1.2 – Representação de Números


Para mostrar como a representação dos números na máquina utilizada pode gerar erros,
vejamos alguns exemplos.

Exemplo (1) Calcule a área de uma lagoa circular de raio 1.000 m.

Os resultados obtidos foram:

I – 3140000m 2

II – 3141600m 2

III – 3141592,65m 2

Exemplo (2) Efetuar os seguintes somatórios em duas máquinas diferentes, uma


30.000
calculadora e um computador: S  x
i 1
i para xi  0,5 e para xi  0,11 .

Os resultados obtidos foram:

(i) Para xi  0,5 , temos:


Calculadora: S  15.000
Computador: S  15.000

(ii) Para xi  0,11 , temos:


Calculadora: S  3300
Computador: S  3299,99691

1.2.1 - Conversão dos Números nos Sistemas Decimal e Binário


Números Inteiros

Considere os números (237)10 e (110111) 2 . Cada um destes números está representado em


uma base diferente, um na base 10 e o outro na base 2, respectivamente.
Estes números podem ser decompostos, de acordo com suas bases, da seguinte forma:

(237)10  2.10 2  3.101  7.10 0


e
(110111) 2  1.25  1.2 4  0.23  1.2 2  1.21  1.2 0

De modo geral, pode-se escrever um número na base  , (a j a j 1 ...a1a0 )  com


0  ak    1 , na forma:

a j  j  a j 1  j 1  ...  a1  1  a0  0

Desta forma, ficará mais simples analisar uma forma de converter um número do sistema
binário para o sistema decimal. Vejamos como converter o número (110111) 2 :
(110111) 2  1.25  1.2 4  0.23  1.2 2  1.21  1.2 0 

Exemplo (3) Converter os números abaixo do sistema binário para o sistema decimal.
(a) (10111) 2 
(b) (1101) 2 

Solução:
Vamos agora criar um algoritmo para esta conversão. Considere, por exemplo, o número
(1101) 2 , isto é, (1101) 2  1.23  1.2 2  0.21  1.2 0 .

Pode-se criar um algoritmo de forma genérica para esta conversão. De modo geral, a
representação de um número (a j a j 1 ...a1a0 ) 2 na base 10, que denotaremos por b0 é obtida
da seguinte forma:
bj  a j
b j 1  a j 1  2b j
b j  2  a j  2  2b j 1

b1  a1  2b2
b0  a a  2b1
De modo geral, ao considerarmos um número N qualquer na base 10, N  Z , e sua
representação binária dada por (a j a j 1 ...a1a0 )10 , podemos utilizar o seguinte algoritmo,
onde a cada k, se obtém o dígito binário a k . Vejamos:
Passo 0: Para k  0 , temos N k  N .
Passo 1: Obtenha q k e rk tais que N k  2.qk  rk .
Faça a k  rk
Passo 2: Se q k  0 , pare.
Caso contrário, faça N k 1  qk .
Faça k  k  1 e volte para o Passo 1.

1.2.2 – Aritmética de Ponto Flutuante


Uma máquina representa um número real em um sistema chamado aritmética de ponto
flutuante, isto é,

r  (0, d1d 2 d 3 ...d j ...). e

Onde,
 : base em que a máquina opera;
t : número de dígitos da mantissa;
0  d j    1, com j  1,2,..., t e d1  0 ;
e : expoente no intervalo [e1 , e2 ] , com e1  0, e2  1 e e1 , e2  Z .
Em qualquer máquina, poucos números reais são representados exatamente, e, portanto, a
representação de um número real será feita por truncamento ou arredondamento. Vejamos
um exemplo:

Exemplo (9) Considere uma máquina que opera no sistema   10 , t  3 e e  [5,5] . De


que forma os números ficam representados nesta máquina (em módulo) ?
Solução:
Considere o conjunto

G  {x  IR | m | x | M } .

Dado x  IR pode ocorrer um dos seguintes casos:

I – x  G : x  235,89

II – | x | m : x  0,354.10 9

III – | x | M : x  0,621.10 7
Observações:

(1) Algumas linguagens de programação permitem que as variáveis sejam declaradas


em precisão dupla, ou seja, uma variável representada no sistema de aritmética de
ponto flutuante da máquina com aproximadamente o dobro de dígitos disponíveis
na mantissa.
(2) O zero em ponto flutuante é, em geral, representado com o menor expoente possível
a máquina. Isto ocorre, pois a representação do zero por uma mantissa nula e um
expoente qualquer para a base  pode acarretar perda de dígitos significativos no
resultado da adição deste zero a u outro número.
1.3 – Erros

1.3.1 – Erros Absolutos e Erros Relativos

Definição: Erro absoluto é a diferença entre o valor exato de um número x e sua


aproximação x , isto é,

EAx  x  x .

Na maioria das vezes, apenas o valor de x é conhecido, e, portanto, é impossível obter o


valor exato do erro absoluto. O que se faz, é obter um limitante superior ou uma estimativa
para o módulo do erro absoluto. Vejamos alguns exemplos:

Definição: Erro relativo é a razão entre o erro absoluto e o valor aproximado, ou seja,

EAx x  x
ER x  
x x

Observação: apesar de erros menor ocorrerem quando se utiliza arredondamento, este


acarreta em um tempo de execução maior, e por isso, o truncamento é mais utilizado.

1.3.3 – Análise de Erros nas Operações de Aritmética de Ponto Flutuante

Dada uma sequência de operações, como por exemplo, u  [( x  y)  z  t ]  w , é


importante saber como o erro se propaga ao longo das operações seguintes.
O erro total de em uma operação é composto pelo erro das parcelas e pelo erro no resultado
da operação.
Capitulo 2 – Zeros Reais de Funções Reais
2.1 – Introdução
Nas mais diversas áreas das ciências exatas ocorrem situações que envolvem a resolução de
uma equação do tipo f ( x)  0 . Podemos tomar como exemplo um circuito não linear, se
quisermos saber a corrente que vai fluir no circuito, temos que resolver a equação
E  Ri  g (i)  0 , a Lei de Kirchoff. Então, temos que ter em mente que o objetivo deste
capítulo é o estudo de métodos numéricos para resolução de equações não lineares como a
descrita anteriormente.

Um número real  é um zero da função f (x) se f ( )  0 . Em alguns casos, por exemplo,


de equações polinomiais, os valores de x que anulam f (x) podem ser reais ou complexos.
No entanto, neste capítulo estudaremos apenas zeros reais de funções reais de f (x) .

Graficamente, os zeros reais de funções reais são representados pelas abscissas dos pontos
onde uma curva intercepta o eixo-x.
Na maioria destes métodos, partiremos de uma aproximação inicial para o zero e em
seguida refinaremos essa aproximação através de processos iterativos. Por esse motivo, os
métodos contêm duas fases:

FASE I – Localização ou isolamento de raízes, que consiste em obter um intervalo que


contém o zero.

FASE II – Refinamento, que consiste em, escolhidas aproximações iniciais no intervalo


encontrado na Fase I, melhorá-las sucessivamente até se obter uma aproximação para o
zero dentro de uma precisão  predeterminada.

2.2 – Fase I: Isolamento de Raízes

Nesta fase é feita uma análise teórica e gráfica da função f (x) . É importante frisar que o
sucesso da Fase II depende muito da precisão desta primeira análise.

Vamos iniciar com o estudo de alguns teoremas:


Teorema: Seja f (x) uma função contínua em [a, b] . Se f (a). f (b)  0 , então existe pelo
menos uma raiz em [a, b] , isto é, existe um ponto x   tal que f ( )  0 .
Graficamente,
Observação: Se f ' ( x) existir e preservar o sinal em (a, b) , então este intervalo contém um
único zero de f (x) .

Uma forma de se isolar as raízes de f (x) usando os resultados anteriores é tabelar f (x)
para vários valores de x e analisar as mudanças de sinal de f (x) e o sinal da derivada nos
intervalos em que f (x) mudou de sinal.

Exemplo (1) Buscar as raízes de f ( x)  x 3  9 x  3 utilizando os resultados anteriores.


Solução:
Construindo uma tabela com vários valores para f (x) e considerando apenas os sinais,
temos:

x   -90 -9 -5 -3 -1 0 1 2 3 4 
f (x) - - - - + + + - - + + +

Como f (x) é contínua em IR , de acordo com as variações de sinal, podemos concluir que
cada um dos intervalos I1  [5,3] , I 2  [0,1] e I 3  [2,3] contém pelo menos uma raiz
em f (x) . E ainda, como f (x) é polinomial, podemos afirmar que cada intervalo contém
uma única raiz.

Mas este processo pode ser bastante trabalhoso, uma vez que se podem fazer diversas
tentativas até se encontrar as mudanças de sinal. Por isso, vamos estudar outros resultados
teóricos para obtenção de raízes de funções. Mas estes resultados são úteis apenas para
funções polinomiais.

Teorema (Fundamental da Álgebra): Um polinômio de grau n , n  1 da forma:

pn ( x)  an x n  an1 x n1  ...  a1 x1  a0  0 (*)

Com ai  IR e a n  0 tem exatamente n raízes, reais ou complexas, desde cada raiz seja
contada de acordo com sua multiplicidade.

2.3 – Fase II: Refinamento


Nesta fase estudaremos alguns métodos de refinamento de raízes. A forma como se efetua o
refinamento é que diferencia os métodos. Todos estes métodos são métodos iterativos.
Método Iterativo: é uma seqüência de instruções que são executadas passo a passo, alguma
das quais são repetidas em ciclos.

Cada iteração utiliza resultados das iterações anteriores e efetua determinados testes que
permitem verificar se foi atingido um resultado próximo o suficiente do resultado esperado,
e estes métodos iterativos fornecem apenas uma aproximação para a solução exata.

2.3.1 - Critérios de Parada


Todos os métodos iterativos para se obter zeros de funções efetuam um teste para saber se
x k (o valor aproximado na iteração k ) está próximo da raiz exata.

Para saber que tipo de teste efetuar para verificar se x k está suficientemente próximo da
raiz exata é necessário saber o que é raiz aproximada, pois existem duas interpretações para
raiz aproximada que nem sempre levam ao mesmo resultado:

x é raiz aproximada com precisão  se :

(i) | x   | 

(ii) | f ( x ) | 

Pergunta: Como efetuar o teste (i) se não conhecemos  ?

Resposta: Uma forma é reduzir o intervalo que conte a raiz a cada iteração. Ao se
conseguir um intervalo [a, b] tal que:

  [a, b]
 , então x  [a, b] , | x   |  . Portanto, x  [a, b] pode ser tomado como x .
b a  

Nem sempre é possível ter as exigências (i) e (ii) satisfeitas simultaneamente, por isso os
métodos numéricos são desenvolvidos de forma a satisfazer pelo menos um destes critérios.
OBS: Em programas computacionais, além do teste de parada usado para cada método,
deve-se ter o cuidado de estipular um número máximo de iterações para se evitar que o
programa entre em “looping” devido a erros no próprio programa ou a inadequação do
método usado para o problema em questão.

2.3.2 – Métodos Iterativos para se obter Zeros Reais de Funções Reais


I – Método da Bissecção

Seja f (x) contínua no intervalo [a, b] e tal que f (a). f (b)  0 .

Suponhamos que o intervalo (a, b) contenha uma única raiz da equação f ( x)  0 .

Objetivo: reduzir a amplitude do intervalo que a raiz está até se atingir à precisão desejada:
(b  a)   , e, para isso faz-se divisões sucessivas de [a, b] pela metade.
Graficamente,

ITERAÇÕES:
 f (a0 )  0   (a0 , x0 )
a  b0    
x0  0  f (b0 )  0   a1  a0 
2  f ( x )  0 b  x 
 0   1 0 

 f (a1 )  0   ( x1 , b1 )
a b    
x1  1 1  f (b1 )  0   a 2  x1 
2  f ( x )  0 b  b 
 1   2 1 

 f (a 2 )  0   ( x 2 , b2 )
a  b2    
x2  2  f (b2 )  0   a3  x 2 
2  f ( x )  0 b  b 
 2   3 2 

Exemplo (11) Aplicar o Método da Bissecção para f ( x)  x 3  9 x  3 no intervalo [0,1]
com precisão   10 3 .
Solução:

A continuação do processo anterior se dá de acordo com a tabela a seguir:

Iterações x f (x) ba


1 0,5 -1,375 0,5
2 0,25 0,765625 0,25
3 0,375 -0,322265625 0,125
4 0,3125 0,218017578 0,0625
5 0,34375 -0,0531311035 0,03125
6 0,328125 0,08222029114 0,015625
7 0,3359375 0,0144743919 7,8125. 10 3
8 0,33984375 -0,0193439126 3,90625. 10 3
9 0,337890625 -2,43862718. 10 3 1,953125. 10 3
10 0,336914063 6,01691846. 10 3 9,765625. 10 4

Então, x  0,336914063 é uma raiz aproximada depois de dez iterações.

II – Método de Newton-Raphson
Antes de estudarmos este método é importante sabermos um pouco sobre sua origem. Este
método foi criado para na tentativa de acelerar o Método do Ponto Fixo (MPF), uma vez
que o MPF é mais importante nos conceitos que são introduzidos em seu estudo do em que
sua eficiência computacional.

Para estudar o MPF devemos considerar uma função f (x) contínua no intervalo [a, b] , que
contém uma raiz da equação f ( x)  0 . Este método consiste em transformar f (x) em uma
equação equivalente x   (x) e a partir de uma aproximação inicial x 0 gerar uma
sequência {x k } de aproximações para  pela relação xk 1   ( xk ) , pois a função  (x) é
tal que f ( )  0 se e somente se  ( )   . Desta forma o problema muda, ou seja, ao
invés de encontrarmos uma raiz para f (x) , devemos encontrar uma raiz para  (x) .
Uma função  (x) que satisfaz a condição anterior é chamada de função de iteração para a
equação f ( x)  0 .

Exemplo (13) Para a equação x 2  x  6  0 , temos várias funções de iterações, algumas


delas são:
(1) 1 ( x)  6  x 2
(2)  2 ( x)   6  x
6
(3)  3 ( x)   1
x
6
(4)  4 ( x) 
x 1

Pelo exemplo, podemos notar que dada uma equação f ( x)  0 , existem infinitas funções
de iteração  (x) para a equação f ( x)  0 .

Graficamente, uma raiz para a equação x   (x) é a abscissa do ponto de intersecção da


reta y  x e da função y   (x) .
Pode-se notar que não é para qualquer escolha de  (x) que o processo recursivo definido
por  (x) gera uma seqüência que converge para  .
Um resultado que fornece condições suficientes para que o processo seja convergente é o
seguinte teorema.
Teorema: Seja  uma raiz da equação f ( x)  0 , isolada nem intervalo I centrado em  .
Seja  (x) uma função de iteração para a equação f ( x)  0 . Se
i)  (x) e  ' ( x) são contínuas em I
ii) |  ' ( x) | M  1, x  I
iii) x0  I ,
então a sequência {x k } gerada pelo processo iterativo xk 1   ( xk ) converge para  .

OBS: No algoritmo do MPF, escolhemos x k como raiz aproximada de  se


| xk  xk 1 ||  ( xk 1 )  xk 1 |  ou se | f ( xk ) |  . E, devemos observar que | xk  xk 1 | 
não implica necessariamente que | xk   |  . Contudo se  ' ( x)  0 em I (intervalo
centrado em  ), a sequência {x k } será oscilante em torno de  e, neste caso,
| xk  xk 1 |   | xk   |  , pois | xk   | | xk  xk 1 | .

Agora que conhecemos um pouco sobre o MPF, poderemos voltar ao estudo do Método de
Newton-Raphson. O Método de Newton-Raphson faz, na tentativa de garantir e acelerar a
convergência do MPF, a escolha de uma função de iteração  (x) tal que  ' ( )  0 .

Então, dada a função f ( x)  0 e partindo da forma geral para  (x) , queremos obter a
função A(x) tal que  ' ( )  0 .

 ( x)  x  A( x) f ( x) 
  ' ( x)  1  A' ( x) f ( x)  A( x) f ' ( x)
  ' ( )  1  A' ( ) f ( )  A( ) f ' ( )   ' ( )  1  A( ) f ' ( ).

Assim,

1
 ' ( )  0  1  A( ) f ' ( )  0  A( )  ,
f ' ( )

1
donde, tomamos A( x)  .
f ( x)

f ( x)
Então, dada f (x) , a função de iteração  ( x)  x  será tal que  ' ( )  0 , pois como
f ' ( x)
podemos verificar:
[ f ' ( x)]2  f ( x) f ' ' ( x) f ( x) f ' ' ( x)
 ' ( x)  1  
[ f ' ( x)]2 [ f ' ( x)]2

e, como f ( )  0 ,  ' ( )  0 (desde que f ' ( )  0 ).


f ( xk )
Assim, escolhido x 0 , a seqüência {x k } será determinada por xk 1  x k  ,
f ' ( xk )
k  0,1,2,...

OBS: Em geral, afirma-se que o Método de Newton converge desde que x 0 seja escolhido
“suficientemente próximo” da raiz  , isto, devido ao fato das hipóteses do teorema da
convergência do MPF estão satisfeitas.

Exemplo (15) A função f ( x)  x 3  9 x  3 possui três raízes, isto é, 1  I1  (4  3) ,


 2  I 2  (0,1) e  3  I 3  (2,3) . Ao aplicar o Método de Newton-Raphson para encontrar
a raiz da função f ( x)  x 3  9 x  3 com x0  1,5 , a sequência gerada foi:
Iterações x f (x)
1 -1,6666667 0,1337037.10 2
2 18,3888889 0,6055725.10 4
3 12,3660104 0,1782694.10 4
4 8,4023067 0,5205716.10 3
5 5,83533816 0,1491821.10 3
6 4,23387355 0,4079022.10 2
7 3,32291096 0,9784511.10
8 2,91733893 0,1573032.10
9 2,82219167 0,7837065.10 1
10 2,81692988 0,2342695.10 3

Podemos observar que de início existe uma divergência da região onde estão as raízes, mas,
a partir de x 7 , os valores aproximam-se cada vez mais de  3 . A causa da divergência inicial
é que x 0 está próximo de 3 que é uma raiz de f ' ( x) e esta aproximação gera
x1  1,6666667   3 que é outro zero de f ' ( x) , pois

f ' ( x)  3 x 2  9  f ' ( x)  0  x   3
Exemplo (16) Aplicar o Método de Newton-Raphson para encontrar a raiz da função
f ( x)  x 2  9 x  3 , com x0  0,5 ,   10 4 e, sabendo-se que   (0,1) .
Solução:

Iterações x f (x)
0 0,5  0,1375.10
1 0,333333333 0,373703.10 1
2 0,337606838 0,1834054.10 4

Assim,
x  0,337606838 e f (x )  1,834054.10 5   .
Capitulo 3 – Resoluções de Sistemas Lineares

Método de Eliminação de Gauss


Passo 1:
Permutar as equações de maneira que a primeira incógnita x1 apareça com
coeficiente diferente de zero na primeira equação, ou seja, faça com que a 11
seja diferente de zero.

Passo 2:
Use a11 como pivô para eliminar x1 de todas as equações exceto a primeira.
Isto é:
Para i = 2 até n faça
Li = -ai1 * L1 + a11 * Li
fimPara

Passo 3:
Examine cada nova equação L:
a) Se L tem a forma 0x1 + 0x2+0x3 + ... +0xn = 0, ou se L é múltiplo de outra
equação, retire L do Sistema.

b) Se L tem a forma 0x1 + 0x2+0x3 + ... +0xn = b, com b diferente de zero, o


sistema não tem solução. Abandone o algoritmo.

Passo 4:
Repita os Passos 1, 2 e 3 com o sistema formado por todas as equações a
partir da primeira.

Passo 5:
Continue o processo até que o sistema esteja na forma escalonada ou que
apareça uma equação degenerada tal como em (b) do Passo 3.

Método Babilônico:

O método Babilônico é um cálculo iterativo no qual, dado um número n


cuja raiz quadrada aproximada deseja-se encontrar, assume-se uma
aproximação inicial a0 e calcula-se b0. Em seguida, utiliza-se o algorit-
mo:

Para k = 1 até Kmax faça


ak = (ak-1 + bk-1)/2
bk = n/ak
erro = abs (bk2 – n )
fimPara
Fatoração Cholesky
Uma matriz de ordem n é Definida Positiva se xTAx > 0 para todo x pertencente
ao Rn, tal que todos os elementos de x são diferentes de zero.

A matriz definida positiva A pode ser fatorada em A = LLT onde L é triangular


inferior com elementos positivos na diagonal.

Se for possível fazer a decomposição LU de A, ou seja det(a11) diferente de zero,


então é possível fatorar A como LDU.

Sendo:
 L: Matriz triangular inferior com diagonal unitária.
 D: Matriz diagonal
 U: Matriz triangular superior com diagonal unitária.

Considerando as hipóteses anteriores e A simétrica, ou seja: A = AT, tem-se U =


L T.

Logo: A = LDLT para Matrizes fatoráveis LU de ordem n, Definidas Positivas e


Simétricas. A tal decomposição é dado o nome de Fatoração Cholesky.

Algoritmo de Fatoração Cholesky (LLT)

Passo 0:
Criar uma matriz L singular a partir do tamanho de A.
Passo 1:
Multiplicar a primeira linha de L pela primeira coluna de LT e isolar l11.
(l11)2 = a11. Logo é fácil obter o valor do elemento l11 como sendo a raiz
quadrada de a11.

Passo 2:

Multiplicar a primeira linha de L pela segunda coluna de LT, igualar ao


elemento correspondente em A e isolar os elementos da primeira coluna de L.
l11 * l21 = a12
l21 = a12/l11

Passo 3:
Repetir o passo anterior, multiplicando a primeira linha de L, pelas terceira,
quarta, até a n-éssima coluna de LT.
l31 = a13/l11
l41 = a14/l11
ln1 = a1n/l11

Passo 4: Para j = 1 até n .


Forme a diagonal principal, pela fórmula:
𝑗−1
ljj =(ajj - ∑𝑘=1 ljk ) ½

Passo 5: Termine de compor a matriz L calculando os elementos abaixo da


diagonal. Para isso, siga os passos:

Para j = 1 até n-1 faça.


Para i = j+1 até n faça.
𝑗−1
lij = (aij - ∑𝑘=1 lik * ljk )/ ljj
fimPara
fimPara

Resolução de Sistemas Lineares a partir da Fatoração Cholesky:

Uma vez tendo feita a Fatoração Cholesky, o sistema de equações lineares Ax = b


pode ser decomposto em:
LLTx = b
Fazendo LTx = y

Tem-se: Ly = b. Como L é uma matriz triangular inferior, pode-se obter y por


substituições sucessivas:

yi = ( bi - ∑𝒊−𝟏
𝒋=𝟏 lijyj)/ lii i = { 1, 2, …, n}

Já o sistema LTx = y pode ser obtido por substituições retroativas na forma:

xi = ( yi - ∑𝒏𝒋=𝒊+𝟏 lijxj)/ lii i = { n, n-1, …, 1}

Cálculo do Determinate a partir da Fatoração Cholesky

Uma vez tendo feito a decomposição de A = LLT, o determinante de A é:


Det(A) = Det(L) * Det(LT)

Como L é uma matriz triangular, tem-se:


Det(A) = Det(D) * Det(D).
Onde D é a diagonal principal. Assim: Det(A) = ( Det(D) )2 -> (∏𝑛𝑖=1 lii )2

Algoritmo de Fatoração Cholesky (LDLT)


Métodos Iterativos:
São métodos em que dado um vetor x0 qualquer como solução do Sistema Ax=b,
a solução que diminui o erro é dada por:
Xk+1 = Mxk + c

Onde M é uma matriz de coeficientes obtida a partir da matriz A e c é obtido a


partir do termo independente b.
O método é considerado estacionário se a matriz M permanece fixa a cada
iteração e não estacionário, caso contrário.

As iterações do método chegam ao fim quando o número de iterações k >= kmax


ou quando o erroRelativo aceito é atingido:
erroRelativo = abs ( (xk – xk-1)/ xk

Método de Jacobi

No Sistema Ax=b, a Matriz A pode ser decomposta em: A = D + E + F. Sendo:


 D – Matriz Diagonal

 E – Matriz triangular inferior nula na Diagonal

 F – Matriz triangular superior nula na Diagonal

Assim: Ax = b equivale a:
 (D + E + F) x = b

 Dx + (E+F)x = b

 Dx = b – (E+F)x. Para eliminar Dx e deixar apenas x à esquerda, multiplica-se pela


inversa de D (D-1) em ambos os lados.

 D-1Dx = D-1b – (D-1(E+F))x

 Ix = (– D-1(E+F))x + D-1b. Considerando J = – D-1(E+F) e c = D-1b


k
Portanto: x = Jxk-1 + c
Método de Gauss-Seidel

No Sistema Ax=b, a Matriz A pode ser decomposta em: A = D + E + F. Sendo:


 D – Matriz Diagonal

 E – Matriz triangular inferior nula na Diagonal

 F – Matriz triangular superior nula na Diagonal

Assim: Ax = b equivale a:
 (D + E + F) x = b

 (D + E)x + Fx = b

 (D + E)x = b – Fx. Multiplicando por (D + E)-1

 (D + E)-1 (D + E)x = (D + E)-1b – ((D + E)-1Fx).

 Ix = (D + E)-1b – ((D + E)-1Fx).

 x = – (D + E)-1Fx + (D + E)-1b. Considerando: S = – (D + E)-1Fx e d = (D + E)-1b.

k k-1
Portanto: x = Sx + d.
k k-1
Ou, se preferir sem calcular a inversa: (D+E)x = -Fx b
4. Interpolação Polinomial

Introdução
Vamos supor que temos um conjunto de dados {xi,f(xi)} tal como na tabela abaixo:
xi 0 1.5 3.0 4.5 6.0
f(xi) 0.001 0.016 0.028 0.046 0.057

Nosso problema é estimar o valor de f(x) para um valor de x que não tenha sido
medido, como por exemplo, x=2.0.
Portanto, interpolar um ponto x a um conjunto de n+1 dados {xi,f(xi)}, significa
simplesmente, calcular o valor de f(x), sem conhecer a forma analítica de f(x).
A interpolação polinomial consiste em se obter um polinômio p(x) que passe por
todos os pontos do conjunto de (n+1) dados {xi,f(xi)}, isto é:
p(x0)=f(x0)
p(x1)=f(x1) (5.1)
...
p(xn)=f(xn)
(note que a contagem começa em zero, portanto temos n+1 pontos na expressão acima).
O polinômio p(x) é chamado de polinômio interpolador. É possível se demonstrar
que existe um único polinômio p(x) de grau menor ou igual a n que passa por todos os
(n+1) pontos do conjunto {xi,f(xi)} (ver o livro texto Noções de Cálculo Numérico para
uma demonstração dessa proposição).

Forma de Lagrange
Seja um conjunto de n+1 dados {xi,f(xi)}. Queremos encontrar um polinômio interpolador
p(x) que satisfaça a condição (1), isto é, passe por todos os pontos.
Uma possível forma para p(x) que satisfaça (1) é:
p( x)  L0 ( x)  f ( x0 )  L1 ( x)  f ( x1 ) Ln ( x)  f ( xn ) (5.2)
onde os Lk(x) são polinômios tais que:

Lk  xi   ki (5.3)
sendo que:
0 se, k  i
ki   (5.4)
1 se, k  i
Portanto,
p( x 0 )  L0 ( x 0 )  f ( x 0 )  L1 ( x 0 )  f ( x1 )  Ln ( x 0 )  f ( x n )
p( x 0 )  1  f ( x 0 )  0  f ( x1 ) 0  f ( x n )
p( x 0 )  f ( x 0 )
e,
p( x1 )  L0 ( x1 )  f ( x 0 )  L1 ( x1 )  f ( x1 )  Ln ( x1 )  f ( x n )
p( x1 )  0  f ( x 0 )  1  f ( x1 ) 0  f ( x n )
p( x1 )  f ( x1 )
ou seja:
p( xi )  f ( xi )
o que mostra que o polinômio interpolador p(x) passa exatamente sobre os pontos {xi,f(xi)}
da tabela dada.
Temos agora que encontrar os polinômios Lk(x), que satisfaçam (3). Uma função
que satisfaz a condição (3) é:

 x  x    x  x  x  x    x  x  x  x 
k 1 k 1
Lk ( x ) 
0 1 n

 x  x    x  x  x  x    x  x  x  x 
k 0 k 1 k ki 1 k ki 1 k n

que é fácil verificar, pois:

Lk  x k   1 e
Lk  xi   0 se, i  k

De maneira compacta, podemos escrever o polinômio interpolador na Forma de


Lagrange, como:
pn  x    Li  x   f  xi 
n
(5.5)
i 0

e,

x  x 
n

j
j 0
j i
Li  x  
x 
n

i  xj
j 0
j i

Exemplo:
Ajuste uma reta aos seguintes pontos:

x 2 4

f(x) 3,1 5,6

 x  x1   x  x0 
px      f x0      f x1 
 x0  x1   x1  x0 
 x 4  x 2
p x      3.1     5.6  1.55  x  4  2.8  x  2
24 42
px   1.25  x  0.6

Forma de Newton

Tabela de Diferenças Divididas.


Para que possamos discutir a Forma de Newton temos que antes nos familiarizar
com a construção da chamada “Tabela de Diferenças Divididas”
Dada a tabela de valores:
x x0 x1 x2 x3
f(x) f(x0) f(x1) f(x2) f(x3)

podemos construir a seguinte tabela:

x f(xi) f[xi, xi+1] f[xi, xi+1, xi+2] f[xi, xi+1, xi+2, xi+3]

x0 f(x0)
f[x0,x1]
f[x0,x1,x2]
x1 f(x1)
f[x1,x2] f[x0,x1,x2,x3]

x2 f(x2) f[x1,x2,x3]
f[x2,x3]

x3 f(x3)

onde:

f  x1   f  x0 
 
f x0 , x1 
x1  x 0

f  x 2   f  x1 
 
f x1 , x 2 
x 2  x1

f  x3   f  x2 
 
f x2 , x3 
x3  x2
  
f x1 , x2  f x0 , x1 
 
f x0 , x1 , x2 
x2  x0

  
f x 2 , x 3  f x1 , x2 
 
f x1 , x 2 , x 3 
x3  x1

  
f x1 , x2 , x3  f x0 , x1 , x2 

f x0 , x1 , x2 , x3  x3  x0

Exemplo: Dados os seguintes valores:

xi 0,1 0,4 0,7 1 1,2


f(xi) 0,813 0,536 0,682 1,25 1,864

a tabela de diferenças divididas é:

xi f(xi) f[xi , xi+1] f[xi , xi+1, xi+2] f[xi , xi+1 , xi+2


,xi+3]

0,536  0,813
 0,923
0,487   0,923 
0,1 0,813
0, 4  0,1
 2,350
0,7  0,1 2,343  2,350
 0,008
1  0,1
0,4 0,536 0,682  0,536
 0, 487
0,7  0, 4
1,893  0,487
 2,343
0,7 0,682 1  0,4
1, 25  0,682
 1,893
1  0,7
1,250
2,354  2,343
1  0,014
3,07  1,893 1,2  0,4
 2,354
1, 2  0,7
1,864  1, 25
 3,07
1,2 1,864 1, 2  1

0,014  (0,008 )
f[xi , xi+1 , xi+2 , xi+3 , xi+4 ] =1,2  0,1  0,02

Forma de Newton para o Polinômio Interpolador


Para calcularmos o polinômio interpolador da Forma de Newton, vamos começar
com o caso mais simples: encontrar um polinômio de grau 0, p0(x), que interpola f(x) no
ponto x0. Vamos partir da diferença dividida f[x0,x], que é dada por:

f  x  f  x0 

f x0 , x  x  x0
(5.10)

Isolando-se f(x) da expressão acima, tem-se:

f x   f x0   f x0 , x  x  x0  (5.11)

Da própria definição de polinômio interpolador, sabe-se que:

p0(x)=f(x0) (5.12)

Portanto, a expressão (5.3) pode ser escrita como:


f x   p0 x  f x0 , x  x  x0  (5.13)

A expressão acima não pode ser usada diretamente, pois não podemos calcular o
valor f[x0,x], já que não conhecemos o de f(x) em qualquer ponto x (veja expressão (5.1)
acima). Fora do ponto x0, sabemos que o polinômio interpolador é apenas uma aproximação
de f(x), caso contrário teríamos uma resposta exata e não precisaríamos da interpolação. Em
outras palavras, tem-se que:

p0(x)f(x), para xx0 (5.14)

Portanto, da expressão (5.4), concluímos que f[x,x0](x-x0) é simplesmente a


diferença entre o valor de f(x) (valor real da função) e o valor p0(x) que obtivemos com a
interpolação. Em outras palavras, esse termo é o erro no processo de interpolação, isto é:

E0 x   f x  p0 x  f x0 , x  x  x0  (5.15)


Podemos realizar o mesmo exercício, partindo de uma diferença dividia de ordem
maior, ou seja f[x0,x1,x], que é dada por:
f x   f x 0 
 f x1 , x 0 
f x0 , x  f x1 , x0  x  x0
f x0 , x1 , x  f x1 , x0 , x  
x  x1 x  x1 (5.16)
f x   f x0   x  x 0   f x1 , x0 
f x0 , x1 , x 
x  x1   x  x0 
Portanto, tem-se que:
f x  f x0   x  x0   f x1 , x0   x  x1   x  x0   f x0 , x1 , x (5.17)
e
f x  f x0   x  x0   f x0 , x1   x  x1   x  x0   f x0 , x1 , x (5.18)
Podemos verificar que o polinômio interpolador de ordem 1, p1(x), é dado por:

p1 x  f x0   x  x0   f x0 , x1  (5.19)

pois,
p1 x0   f x0   x0  x0   f x0 , x1   f x0  (5.20)

f x1   f x0 
p1 x1   f x0   x1  x0   f x0 , x1   f x0   x1  x0    f x1  (5.21)
x1  x0

que são as condições fundamentais para se encontrar tal polinômio.


Portanto, o erro cometido ao se aproximar f(x) por p1(x) é:

E1 x  x  x0   x  x1   f x0 , x1 , x (5.22)

Podemos continuar indefinidamente, até encontrarmos o polinômio interpolador de


uma ordem n qualquer, aplicando sempre o mesmo raciocínio. A expressão geral para um
polinômio interpolador de ordem n será então:

pn x   f x0   x  x0   f x0 , x1   x  x0   x  x1   f x0 , x1 , x2    


(5.23)
 x  x0   x  x1     x  xn1   f x0 , x1 ,, xn 

e o erro é dado por:

En x  x  x0   x  x1    x  xn   f x0 , x1 ,, xn , x (5.24)

Exemplo: Dado:
x 0,2 0,5 0,9 1,5 2,0
F(x) 4,88 5,00 5,72 8,00 11,00
encontre o polinômio interpolador p(x) usando a forma de Newton:
xi f(xi) f[xi , xi+1] f[xi , xi+1, xi+2]
0,2 4,88 5,00  4,88
 0,4
1,8  0,4
0,5  0,2
2
0,9  0,2
0,5 5,00
5,72  5,00
0
 1,8
0,9  0,5 3,8  1,8
0,9 5,72  2
1,5  0,5
8,00  5,72
 3,8
1,5 8,00 1,5  0,9
6,0  3,8
 2 0
11,00  8,00 2,0  0,9
2,0 11,00  6,0
2,0  1,5

Usando (5.9):

p( x)  4,88  ( x  0,2).04  ( x  0,2).( x  0,5).2

p( x)  4,88  0,4 x  0,08  ( x 2  0,5 x  0,2 x  0,1).2

p( x)  4,88  0,4 x  0,08  2 x 2  x  0,4 x  0,2

p( x)  2 x 2  x  5

Note que usando a forma de Newton, p(xi) = f(xi)

Você também pode gostar