SlideShare uma empresa Scribd logo
0
Universidade Federal Fluminense
UFF – Volta Redonda, RJ
INTRODUÇÃO AOS
MÉTODOS
NUMÉRICOS
Prof. Diomar Cesar Lobão
Trabalho original preparado por: Prof. Ionildo José Sanches e Prof. Diógenes Lago Furlan
Universidade Federal do Paraná. Departamento de Informática CI-202
URL: http://www.professores.uff.br/diomar_cesar_lobao
1
SUMÁRIO
1 INTRODUÇÃO.....................................................................................................................................4
2 CONCEITO DE ERRO........................................................................................................................5
2.1 INTRODUÇÃO.....................................................................................................................................5
2.2 ERROS NA FASE DE MODELAGEM......................................................................................................5
2.3 ERROS NA FASE DE RESOLUÇÃO........................................................................................................5
2.4 ERROS ABSOLUTOS E RELATIVOS......................................................................................................5
2.5 ERRO DE ARREDONDAMENTO............................................................................................................6
2.6 ERRO DE TRUNCAMENTO...................................................................................................................7
3 REPRESENTAÇÃO DOS NÚMEROS REAIS.................................................................................9
3.1 INTRODUÇÃO.....................................................................................................................................9
3.2 SISTEMA DE NUMERAÇÃO ...............................................................................................................10
3.2.1 Sistema de Numeração Decimal...........................................................................................................10
3.2.2 Sistema de Numeração Binário ............................................................................................................10
3.2.3 Conversão do Sistema Decimal para Binário ......................................................................................10
3.3 ARITMÉTICA DE PONTO FLUTUANTE ...............................................................................................13
3.4 PROPAGAÇÃO DE ERROS..................................................................................................................15
4 ZEROS DE EQUAÇÕES TRANSCENDENTES E POLINOMIAIS............................................17
4.1 INTRODUÇÃO...................................................................................................................................17
4.1.1 Derivada de uma função num ponto.....................................................................................................17
4.1.2 Tipos de Métodos..................................................................................................................................17
4.1.3 Isolamento de Raízes ............................................................................................................................18
4.1.4 Classificação dos métodos....................................................................................................................19
4.2 MÉTODO DA BISSEÇÃO....................................................................................................................20
4.2.1 Estimativa do Número de Iterações......................................................................................................20
4.2.2 Considerações Finais ...........................................................................................................................21
4.2.3 Exemplos...............................................................................................................................................21
4.3 MÉTODO DA FALSA POSIÇÃO ..........................................................................................................22
4.3.1 Casos especiais.....................................................................................................................................23
4.3.2 Considerações finais.............................................................................................................................24
4.3.3 Exemplos...............................................................................................................................................24
4.4 MÉTODO DA ITERAÇÃO LINEAR ......................................................................................................25
4.4.1 Casos de convergência .........................................................................................................................26
4.4.2 Considerações finais.............................................................................................................................27
4.4.3 Exemplos...............................................................................................................................................27
4.5 MÉTODO DE NEWTON-RAPHSON OU MÉTODO DAS TANGENTES .....................................................28
4.5.1 Considerações finais.............................................................................................................................29
4.5.2 Exemplos...............................................................................................................................................29
4.5.3 Condições de Newton-Raphson-Fourier...............................................................................................30
4.6 MÉTODO DA SECANTE.....................................................................................................................32
4.6.1 Exemplos...............................................................................................................................................33
4.7 MÉTODO MISTO ..............................................................................................................................34
4.7.1 Exemplos...............................................................................................................................................34
4.8 MÉTODO PARA EQUAÇÕES POLINÔMIAIS.........................................................................................35
4.8.1 Introdução.............................................................................................................................................35
4.8.2 Localização de Raízes...........................................................................................................................35
4.8.3 Determinação das Raízes Reais............................................................................................................37
2
4.8.4 Método de Newton para Zeros de Polinômios......................................................................................38
5 SISTEMAS LINEARES.....................................................................................................................41
5.1 INTRODUÇÃO...................................................................................................................................41
5.1.1 Classificação Quanto ao Número de Soluções.....................................................................................41
5.2 MÉTODOS DIRETOS (ALGORITMOS DIRETOS)..................................................................................42
5.2.1 Regra de Cramer ..................................................................................................................................42
5.2.2 Método da Eliminação de Gauss..........................................................................................................43
5.2.3 Método de Jordan.................................................................................................................................45
5.2.4 Exemplos...............................................................................................................................................45
5.3 FATORAÇÃO LU-CROUT-CHOLESKY-DOOLITLE .............................................................................46
5.3.1 Cálculo dos Fatores L e U....................................................................................................................47
5.4 MÉTODOS ITERATIVOS (ALGORITMOS ITERATIVOS)........................................................................50
5.4.1 Método de Gauss-Jacobi ( Algébrico ).................................................................................................50
5.4.2 Método de Gauss-Jacobi ( Matricial )..................................................................................................52
5.4.3 Método de Gauss-Seidel ( Algébrico )..................................................................................................54
5.4.4 Método de Gauss-Seidel ( Matricial )...................................................................................................56
5.4.5 Segunda Abordagem da Fórmula Matricial do Método Gauss-Seidel.................................................58
5.4.6 Método da Sobrerelaxação Sucessiva .................................................................................................63
5.4.7 Condições Necessária e Suficiente para Convergência do Método de Gauss-Jacobi e Gauss-Seidel64
6 INTERPOLAÇÃO ..............................................................................................................................66
6.1 INTRODUÇÃO...................................................................................................................................66
6.1.1 Conceito de Interpolação......................................................................................................................66
6.2 INTERPOLAÇÃO LINEAR...................................................................................................................67
6.2.1 Obtenção da Fórmula...........................................................................................................................67
6.2.2 Exemplos...............................................................................................................................................68
6.3 INTERPOLAÇÃO QUADRÁTICA .........................................................................................................69
6.3.1 Obtenção da Fórmula...........................................................................................................................69
6.3.2 Exemplos...............................................................................................................................................69
6.4 INTERPOLAÇÃO DE LAGRANGE........................................................................................................71
6.4.1 Obtenção da Fórmula...........................................................................................................................72
6.4.2 Exemplos: .............................................................................................................................................73
6.5 INTERPOLAÇÃO PARABÓLICA PROGRESSIVA ...................................................................................74
6.6 INTERPOLAÇÃO DE NEWTON COM DIFERENÇAS DIVIDIDAS.............................................................75
6.6.1 Diferenças Divididas ............................................................................................................................75
6.6.2 Propriedade do Operador Diferenças Divididas .................................................................................76
6.6.3 Exemplos...............................................................................................................................................76
6.7 INTERPOLAÇÃO DE GREGORY-NEWTON ..........................................................................................78
6.7.1 Diferenças Ordinárias ou Finitas.........................................................................................................79
6.7.2 Relação entre diferenças divididas e diferenças ordinárias.................................................................79
6.7.3 Gregory-Newton usando Diferenças Ordinárias..................................................................................79
6.7.4 Exemplos...............................................................................................................................................79
6.8 INTERPOLAÇÃO SPLINES: LINEAR, QUADRÁTICA, CÚBICA ..............................................................80
6.8.1 Spline Linear.........................................................................................................................................81
6.8.2 Spline Quadrática.................................................................................................................................84
6.8.3 Spline Cúbica Natural ..........................................................................................................................87
6.8.4 Considerações Gerais sobre Interpolação ...........................................................................................93
7 AJUSTE DE CURVAS .......................................................................................................................95
7.1 MÉTODO DOS QUADRADOS MÍNIMOS..............................................................................................96
7.1.1 Ajuste Linear Simples ...........................................................................................................................97
7.1.2 Ajuste Polinomial..................................................................................................................................99
8 INTEGRAÇÃO NUMÉRICA..........................................................................................................103
8.1 INTRODUÇÃO.................................................................................................................................103
8.1.1 Fórmulas de Newton-Cotes ................................................................................................................104
8.2 REGRA DOS RETÂNGULOS .............................................................................................................105
3
8.2.1 Exemplos.............................................................................................................................................106
8.3 REGRA DOS TRAPÉZIOS .................................................................................................................107
8.3.1 Regra do Trapézio Repetida ...............................................................................................................108
8.3.2 Exemplos.............................................................................................................................................108
8.4 REGRA DE SIMPSON.......................................................................................................................109
8.4.1 Regra de Simpson Repetida................................................................................................................110
8.4.2 Exemplos.............................................................................................................................................110
9 SOLUÇÃO NUMÉRICA DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS...........................112
9.1 INTRODUÇÃO.................................................................................................................................112
9.2 TIPOS DE EQUAÇÕES DIFERENCIAIS...............................................................................................112
9.2.1 Equações Diferenciais Ordinárias .....................................................................................................112
9.2.2 Equações Diferenciais Parciais..........................................................................................................113
9.3 SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ........................................................................................113
9.4 ORDEM DE UMA EQUAÇÃO DIFERENCIAL ORDINÁRIA...................................................................114
9.5 REDUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS ...................................................................114
9.6 SOLUÇÃO NUMÉRICA DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS – PROBLEMA DE VALOR INICIAL
116
9.6.1 Método de Euler..................................................................................................................................117
9.7 ANÁLISE DO ERRO PARA O MÉTODO DE EULER NA SOLUÇÃO NUMÉRICA DO PROBLEMA DE VALOR
INICIAL ....................................................................................................................................................120
9.8 MÉTODO DE EULER MODIFICADO..................................................................................................121
9.8.1 Método Heum......................................................................................................................................124
9.8.2 Método Runge-Kutta...........................................................................................................................127
9.8.3 Derivação do Método de Runge-Kutta de Segunda Ordem................................................................128
9.8.4 Método de Heun..................................................................................................................................128
9.8.5 Método de Euler Modificado ..............................................................................................................129
9.8.6 Método de Ralston ..............................................................................................................................129
9.9 MÉTODO DE RUNGE_KUTTA TERCEIRA ORDEM............................................................................131
9.10 MÉTODO DE RUNGE_KUTTA QUARTA ORDEM ..........................................................................131
9.11 MÉTODOS DE PASSOS MÚLTIPLOS..............................................................................................132
9.12 IDÉIA BASICA DOS MÉTODOS DE PASSOS MÚLTIPLOS................................................................133
9.12.1 Métodos Explícitos..............................................................................................................................134
9.12.2 Algoritmos de Adans-Bashforth de ordem m......................................................................................134
9.12.3 Métodos Implícitos..............................................................................................................................134
9.12.4 Algoritmos de Adans-Moulton de ordem m ........................................................................................134
9.12.5 Passos para se obter 1+ny ..................................................................................................................135
9.13 SOLUÇÃO DE SISTEMAS DE EQUAÇÕES DIFERENCIAIS................................................................137
10 UTILIZANDO O MATLAB.........................................................................................................146
4
1 Introdução
Cálculo Numérico é a obtenção da solução de um problema pela aplicação de método numérico; a
solução do problema será caracterizada, então, por um conjunto de números, exatos ou aproximados.
Método Numérico é um algoritmo composto por um número finito de operações envolvendo
apenas números (operações aritméticas elementares, cálculo de funções, consulta a uma tabela de valores,
consulta a um gráfico, arbitramento de um valor, etc.).
Problema
Físico
Modelo
Matemático
Solução
Modelagem Resolução
Modelagem é a fase de obtenção do modelo matemático que descreve o comportamento do sistema
físico.
Resolução é a fase de obtenção da solução através da aplicação de métodos numéricos (este é o
objetivo de estudo do Cálculo Numérico).
5
2 Conceito de Erro
2.1 Introdução
A noção de erro está presente em todos os campos do Cálculo Numérico. De um lado, os dados,
em si, nem sempre são exatos e, de outro lado, as operações sobre valores não exatos propagam esses
erros a seus resultados. Finalmente, os próprios métodos numéricos, freqüentemente métodos
aproximados, buscam a minimização dos erros, procurando resultados o mais próximo possível do que
seriam valores exatos.
Erro é a diferença entre o valor exato e o valor apresentado.
No próximo capítulo, sobre representação de números reais, iremos analisar várias situações em
que ocorrem erros, quando utilizamos o computador para realizar os cálculos. A seguir, analisaremos os
erros que ocorrem durante as fases de modelagem e resolução e também sobre erros de arredondamento e
erros de truncamento.
2.2 Erros na Fase de Modelagem
Ao se tentar representar um fenômeno do mundo físico por meio de um método matemático,
raramente se tem uma descrição correta deste fenômeno. Normalmente, são necessárias várias
simplificações do mundo físico para que se tenha um modelo.
Exemplo: Estudo do movimento de um corpo sujeito a uma aceleração constante.
Tem-se a seguinte equação:
d = do + vo * t + 1/2 * α * t2
onde:
d : distância percorrida
do : distância inicial
vo : velocidade inicial
t : tempo
α : aceleração
Determinar a altura de um edifício com uma bolinha de metal e um cronômetro: 3s
d = 0 + 0 * 3 + 1/2 * 9.8 * 32
= 44.1m
Este resultado é confiável?
1. Fatores não considerados:
• resistência do ar
• velocidade do vento, etc.
2. Precisão dos dados de entrada:
• Se o tempo fosse 3,5s → d = 60.025m
• Variação de 16,7% no cronômetro → 36% na altura.
2.3 Erros na Fase de Resolução
Para a resolução de modelos matemáticos muitas vezes torna-se necessária a utilização de
instrumentos de cálculo que necessitam, para o seu funcionamento, que sejam feitas certas aproximações.
Tais aproximações podem gerar erros, tais como: conversão de bases, erros de arredondamento e erros de
truncamento.
2.4 Erros Absolutos e Relativos
Erro absoluto (EA) é a diferença entre o valor exato de um número N e o seu valor aproximado
N’:
6
N = N’ + EAN (N > N’ → EAN > 0
N < N’ → EAN < 0)
EAN = N − N’ Erro absoluto
Por exemplo, sabendo-se que π ∈ (3.14, 3.15) tomaremos para π um valor dentro deste intervalo e
teremos, então, |EAπ| = |π - π‘| < 0.01.
Erro Relativo é definido como o erro absoluto dividido pelo valor aproximado:
'
'
' N
NN
N
EA
ER N
N
−
== Erro Relativo
É claro que EAN só poderá ser determinado se N for exatamente conhecido; como isso é raro, em
cálculos numéricos costuma-se trabalhar com uma limitação máxima para o erro, ao invés do próprio
(indicando-se, então, | E | < ε, onde ε é o limite).
Por exemplo, se α = 3876.373 e só desejamos a parte inteira α’, o erro absoluto será:
∆α = | α − α' | = 0.373
Se fizermos o mesmo com o número β = 1.373, teremos:
∆β = | β − β' | = 0.373
Obviamente, o efeito de aproximação de β é muito maior do que em α, mas o erro absoluto é o
mesmo nos dois casos. O erro relativo, entretanto, pode traduzir perfeitamente este fato, pois:
δα =
0 373
3876
,
≅ 0,000096 < 10-4
δβ =
0 373
1
,
≅ 0,373 < 5*100
2.5 Erro de Arredondamento
Ao se aplicar um método numérico, os erros devidos aos valores iniciais, intermediários e finais
conduzem a um erro global (diferença entre o exato e o obtido) também chamado de arredondamento.
Erros iniciais são os cometidos no arredondamento dos dados iniciais. Os erros intermediários são
decorrentes dos erros cometidos durante a aplicação do método numérico e os erros finais decorrentes da
apresentação final do resultado.
Os tipos de arredondamentos mais conhecidos são:
• Arredondamento para baixo ou por falta;
• Arredondamento para cima ou por excesso;
• Arredondamento para o numero de maquina mais próximo.
Critério de Arredondamento: no cálculo manual, ao registrar um valor aproximado, costuma-se
usar a seguinte regra:
1. somar meia unidade após a última casa decimal a conservar;
2. desprezar as demais casas.
Assim, com 2 números significativos tem-se:
2 = 1.414 ... ≅ 1.41 (1.414 ... + 0.005 = 1.419 ... → 1.41)
23
= 1.259 ... ≅ 1.26 (1.259 ... + 0.005 = 1.264 ... → 1.26)
7
O uso deste critério limita o erro a meia unidade da última casa conservada:
E = 2 − 1.41 = 1.41421 ... − 1.41 = 0.00421 < 0.005
Os valores aproximados obtidos podem ser inferiores (valor aproximado por falta) ou superiores
(valor aproximado por excesso) aos exatos; 1.41 é o valor aproximado, por falta, de 2 ; 1.26 é o valor de
23
, aproximado por excesso.
Para concluir este item de erro de arredondamento, deve-se ressaltar a importância de se saber o
número de dígitos significativos do sistema de representação da máquina que está sendo utilizada para
que se tenha a noção da precisão do resultado obtido.
Além da precisão decimal, o cálculo do chamado Épsilon da máquina nos dá uma idéia da
exatidão da máquina.
O ε da máquina é o menor número de ponto flutuante, tal que: 1 + ε > 1. Alguns métodos para
cálculo de ε não dão seu valor exato, mas isto nem sempre é necessário, pois o que importa é a sua ordem
de grandeza.
O programa abaixo, escrito na linguagem Matlab, calcula uma aproximação do ε da máquina:
Eps=1.0;
while (Eps + 1 > 1)
Eps = Eps / 2.0;
sprintf('A maquina acha que %1.25f%s',Eps,' vale zero!')
end;
O programa acima, executado num Pentium, obteve a seguinte resposta:
A maquina acha que 0.0000000000000001110223025 vale zero!
Logo, o número de dígitos significativos é 19.
2.6 Erro de Truncamento
São erros provenientes da utilização de processos que deveriam ser infinitos ou muito grandes
para a determinação de um valor e que, por razões práticas, são truncados.
Estes processos infinitos são muito utilizados na avaliação de funções matemáticas, tais como,
exponenciação, logaritmos, funções trigonométricas e várias outras que uma máquina pode ter.
Exemplo: Uma máquina poderia calcular a função seno(x) e exponencial(x) utilizando as seguintes
técnicas:
seno(x) = x
x x x
− + − +
3 5 7
3 5 7! ! !
...
ex
= 1
2 3
2 3
+ + + +x
x x
! !
...
Fazendo truncamento:
seno(x) ≅ x
x x x x
n
n
n
− + − + + −
3 5 7
3 5 7
1
! ! !
... ( )
!
8
ex
≅ 1
2 3
2 3
+ + + + +x
x x x
n
n
! !
...
!
A solução é a de interromper os cálculos quando uma determinada precisão é atingida.
De uma maneira geral, pode-se dizer que o erro de truncamento pode ser diminuído até chegar a
ficar da ordem do erro de arredondamento; a partir desse ponto, não faz sentido diminuir-se mais, pois o
erro de arredondamento será dominante.
9
3 Representação dos Números Reais
3.1 Introdução
{Números
Complexos (2+3√-1 )
Reais
{Irracionais (π; √2 )
Racionais
{Inteiros (-1004; 2)
Fracionários
{Ordinários (32/7; 1/3)
Decimais (-3.15; 0.33...)
Algumas das propriedades básicas da aritmética real não valem mais quando executadas no
computador, pois, enquanto na matemática alguns números são representados por infinitos dígitos, no
computador isso não é possível, pois uma palavra de memória é finita e a própria memória também.
Exemplos: 2 , 3 , π e
3
1
.
Se desejássemos calcular a área de uma circunferência de raio 100m, obteríamos os seguintes
resultados:
a) A = 31400m2
b) A = 31416 m2
c) A = 31415.92654 m2
Como justificar as diferenças entre os resultados? É possível obter o valor exato desta área?
Os erros ocorridos dependem da representação dos números na máquina utilizada. A representação
de um número depende da base escolhida ou disponível na máquina em uso e do número máximo de
dígitos usados na sua representação.
O número π, por exemplo, não pode ser representado através de um número finito de dígitos
decimais. No exemplo mostrado acima, o número π foi escrito como 3.14, 3.1416 e 3.141592654
respectivamente nos casos (a), (b) e (c). Em cada um deles foi obtido um resultado diferente, e o erro
neste caso depende exclusivamente da aproximação escolhida para π, Qualquer que seja a circunferência,
a sua área nunca será obtida exatamente, uma vez que π é um número irracional.
Como neste exemplo, qualquer cálculo que envolva números que não podem ser representados
através de um número finito de dígitos não fornecerá como resultado um valor exato. Quanto maior o
número de dígitos utilizados, maior será a precisão obtida. Por isso, a melhor aproximação para o valor da
área da circunferência é aquela obtida no caso (c).
Além disso, um número pode ter representação finita em uma base e não-finita em outras bases. A
base decimal é a que mais empregamos atualmente. Um computador opera normalmente no sistema
binário.
Observe o que acontece na interação entre o usuário (ou dados do programa) e o computador: os
dados de entrada são enviados ao computador pelo usuário no sistema decimal; toda esta informação é
convertida para o sistema binário, e as operações todas serão efetuadas neste sistema. Os resultados finais
10
serão convertidos para o sistema decimal e, finalmente, serão transmitidos ao usuário. Todo este processo
de conversão é uma fonte de erros que afetam o resultado final dos cálculos.
Na próxima seção, iremos estudar os processos de conversão de números do sistema decimal para
o sistema binário e vice-versa. Estudaremos também a forma de armazenamento feita pelos computadores
digitais.
3.2 Sistema de Numeração
Existem vários sistemas numéricos, dentre os quais destacam-se o sistema decimal (base 10), o
octal (base 8) e o hexadecimal (base 16).
Em um sistema numérico com base β, existem β dígitos e o maior é β – 1. De um modo geral, um
número na base β, (ajaj-1...a2a1a0)β, 0 ≤ ak ≤ (β – 1), k = 1, 2, ..., j, pode ser escrito na forma polinomial:
ajββββj
+ aj-1ββββj-1
+...+ a2ββββ2
+ a1ββββ1
+ a0ββββ0
Com esta representação, podemos facilmente converter um número representado em qualquer
sistema para o sistema decimal.
3.2.1 Sistema de Numeração Decimal
No sistema de numeração usual, o sistema decimal, usamos dez dígitos 0, 1, ..., 9. Um número
maior que 9 é representado usando uma convenção que atribui significado à posição ou lugar ocupado por
um dígito. Por exemplo, em virtude das posições ocupadas pelos dígitos individuais no número 2015, este
número tem significado numérico calculado como:
2015 = 2*103
+ 0*102
+ 1*101
+ 5*100
= 2000 + 0 + 10 + 5 = 2015
Notamos que um número é expresso como uma soma de potências de 10 multiplicadas por
coeficientes apropriados. No sistema decimal, 10 é a base do sistema. Existem 10 dígitos, o maior sendo
9. Em um sistema numérico com base β, existem β dígitos e o maior é β -1.
3.2.2 Sistema de Numeração Binário
No sistema binário existem apenas 2 dígitos: 0 e 1. Como os circuitos eletrônicos usados no
computador apresentam 2 estados possíveis, convencionou-se chamar o estado desligado de 0 e o estado
ligado de 1. Cada dígito de um número representado no sistema binário é denominado bit (contração de
BInary digiT), o conjunto de 4 bits é denominado nibble e o de 8 bits de byte, termo bastante utilizado na
área de informática.
3.2.2.1 Conversão do Sistema Binário para Decimal
Quando um número é escrito no sistema binário, os dígitos individuais representam os coeficientes
de potências de 2. Por exemplo, o número decimal 19 é escrito em representação binária como 10011,
pois este arranjo de dígitos binários significa:
10011 = 1*24
+ 0*23
+ 0*22
+ 1*21
+ 1*20
= 16 + 0 + 0 + 2 + 1 = 19
3.2.3 Conversão do Sistema Decimal para Binário
A conversão de um número decimal para binário é feita da seguinte forma:
11
19 2
91 2
41 2
20 2
10 2
01
LSB
MSB
19(10) = 10011(2)
O bit menos significativo de um número binário recebe a notação de LSB (Least Significant Bit) e
o bit mais significativo de MSB (Most Significant Bit).
3.2.3.1 Conversão de Números Binários Fracionários em Decimais
Consideremos agora a conversão de um número fracionário binário (base 2) para um número
decimal (base 10).
0.12510 = 0*100
+ 1*10-1
+ 2*10-2
+ 5*10-3
= 0.1 + 0.02 + 0.005 = 0.12510
0.0012 = 0*20
+ 0*2-1
+ 0*2-2
+ 1*2-3
= 0 + 0 + 0 + 0.125 = 0.12510
0.1012 = 0*20
+ 1*2-1
+ 0*2-2
+ 1*2-3
= 0 + 0.5 + 0 + 0.125 = 0.62510
3.2.3.2 Conversão de Números Decimais Fracionários em Binários
Consideremos agora a conversão de um número fracionário da base 10 para a base 2. Um número
real entre 0 e 1 pode ter representação finita no sistema decimal, mas representação infinita no sistema
binário.
No caso geral, seja r um número entre 0 e 1 no sistema decimal e (0.d1d2...dj...)2 sua representação
no sistema binário. Os dígitos binários d1, d2, ..., dj, ... são obtidos através do seguinte algoritmo:
Passo 0: r1 = r; k = 1
Passo 1: Calcule 2rk.
Se 2rk = 1, faça: dk = 1,
caso contrário, faça: dk = 0
Passo 2: Faça rk+1 = 2rk− dk
Se rk+1 = 0, pare.
Caso contrário:
Passo 3: k = k + 1.
Volte ao passo 1.
Observar que o algoritmo pode ou não terminar após um número finito de passos. Para r =
(0.125)10 teremos: r1 = 0.125.
k = 1 2r1 = 0.25 ⇒ d1 = 0
r2 = 0.25 − d1 = 0.25
k = 2 2r2 = 0.5 ⇒ d2 = 0
12
r3 = 0.5
k = 3 2r3 = 1.0 ⇒ d3 = 1
r4 = 0
Temos então 0.12510 = 0.0012, sendo portanto a representação binária finita. Já para r = 0.110,
teremos: r1 = 0.1
k = 1 2r1 = 0.2 ⇒ d1 = 0
r2 = 0.2
k = 2 2r2 = 0.4 ⇒ d2 = 0
r3 = 0.4
k = 3 2r3 = 0.8 ⇒ d3 = 0
r4 = 0.8
k = 4 2r4 = 1.6 ⇒ d4 = 1
r5 = 0.6
k = 5 2r5 = 1.2 ⇒ d5 = 1
r6 = 0.2 = r2
Como r6 = r2, teremos que os resultados para k de 2 e 5 se repetirão e então: r10 = r6 = r2 = 0.2 e
assim indefinidamente.
Concluímos que: (0.1)10 = (0.00011001100110011...)2 e, portanto, o número (0.1)10 não tem
representação binária finita.
O fato de um número não ter representação finita no sistema binário pode acarretar a ocorrência de
erros aparentemente inexplicáveis em cálculos efetuados em sistemas computacionais binários.
Um computador que opera no sistema binário irá armazenar uma aproximação para (0.1)10, uma
vez que possui uma quantidade fixa de posições para guardar os dígitos de mantissa de um número, e esta
aproximação será usada para realizar os cálculos. Não se pode, portanto, esperar um resultado exato.
Podemos agora entender melhor por que o resultado da operação:
S = 01
1
1000
.
n=
∑
não é obtido corretamente num computador. Supondo uma máquina digital que trabalhe com apenas 9
dígitos na mantissa, o número (0.1)10 seria armazenado como (0.000110011)2 e este número representa
exatamente (0.099609375)10. Portanto, todas as operações que envolvem (0.1)10 seriam realizadas com
esta aproximação. Veremos na próxima seção a representação de números em aritmética de ponto
flutuante com o objetivo de se entender melhor a causa de resultados imprecisos em operações numéricas.
O programa em Matlab a seguir permite calcular 01
1
1000
.
i=
∑ , sendo 100 o valor exato dessa somatória.
x=0;
for i=1:1000
x = x + 0.1;
sprintf('x = %0.20f', x)
end
13
Quando essa somatória é efetuada utilizando o computador o valor é: 99.99999999999859300000.
Se escrever um programa em linguagem C usando double (maior precisão) o resultado será
99.99999999999859310000.
3.3 Aritmética de Ponto Flutuante
Usa-se, rotineiramente, duas formas para fazer o armazenamento dos números em máquinas:
ponto fixo (para valores inteiros) e ponto flutuante (para valores reais).
Uma máquina de calcular, ou um computador digital, representa um número real no sistema
denominado aritmética de ponto flutuante. Neste sistema, o número x é representado na forma:
x = ± β
ββββ
e
t
tdddd
....321
321






++++
onde:
β: é a base em que a máquina opera;
di: são números inteiros contidos no intervalo 0 ≤ di ≤ (β - 1); i = 1, 2, ..., t; d1 ≠ 0;
e: representa o expoente de β e assume valores entre I ≤ e ≤ S;
I, S: limite inferior e limite superior, respectivamente, para a variação do expoente.
d d d dt
t
1 2 3
1 2 3
β β β β
+ + + +





... é chamada de mantissa e é a parte do número que representa
os seus dígitos significativos e t é o número de dígitos significativos do sistema de representação,
comumente chamado de precisão da máquina.
Exemplo 1: No sistema de base β = 10 (decimal), tem-se:
0.12510 =
1
10
2
10
5
10
101 2 3
0
+ +





.
3.141510 = 0.31415 • 101
=
3
10
1
10
4
10
1
10
5
10
101 2 3 4 5
1
+ + + +





.
Os números assim representados estão normalizados, isto é, a mantissa é um valor entre 0 e 1. A
forma normalizada é utilizada nas operações envolvendo ponto flutuante em computadores digitais.
No sistema de base β = 2 (binário), tem-se:
1010 = 10102 = 0.101 • 24
=
1
2
0
2
1
2
21 2 3
4
+ +





.
410 = 1002 = 0.1 * 23
=
1
2
* 23
Exemplo 2: Numa máquina de calcular cujo sistema de representação utilizado tenha β=2, t = 10, I = −15
e S = 15, o número 2510 e 3.510 é assim representado:
2510 = 110012 = 0.11001 * 25
= 0.11001 * 2101
sendo 210 )101()5( =
1
2
1
2
0
2
0
2
1
2
0
2
0
2
0
2
0
2
0
2
1 2 3 4 5 6 7 8 9 10
+ + + + + + + + +





 * 2101
14
ou, de uma forma mais compacta:
1100100000 0101
Mantissa expoente
Cada dígito é chamado de bit, portanto, nesta máquina são utilizados 10 bits para a mantissa, 4
para o expoente e mais um bit para o sinal da mantissa (se bit=0 positivo, se bit=1 negativo) e um bit para
o sinal do expoente, resultando, no total, 16 bits, que são assim representados:
2510 =
3.510 = 0.111 * 210
O maior valor representado por esta máquina descrita no exemplo 2 seria:
que, na base decimal, tem o seguinte valor: 0.1111111111 * 21111
= 3273610
E o menor valor seria: −0.1111111111 * 21111
= − 3273610
Logo, os números que podem ser representados nesta máquina estariam contidos no intervalo
[−32736; 32736].
Nesta máquina, ainda, o valor zero seria representado por:
O próximo número positivo representado seria:
0.1 * 2-15
= 0.000015259
O subsequente seria:
0.1000000001 * 2-15
= 0.000015289
Através desses exemplos pode-se concluir que o conjunto dos números representáveis neste
sistema é um subconjunto dos números reais, dentro do intervalo mostrado anteriormente.
Considere, por exemplo, uma máquina que opera no sistema:
β = 10; t = 3; e ∈ [-5,5].
Os números serão representados da seguinte forma nesse sistema:
0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1
Valor da Mantissa Expoente
Sinal da Mantissa Sinal Exp.
0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0
0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
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 1 1 1 1 1
0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1
15
0.d1d2d3 * 10e
, 0 ≤ dj ≤ 9, d1 ≠ 0, e ∈ [−5, 5]
O menor número (m), em valor absoluto, representado nesta máquina é:
m = 0.100 * 10-5
= 10-6
e o maior número (M), em valor absoluto, é:
M = 0.999 * 105
= 99900
Considere o conjunto dos números reais R e o seguinte conjunto:
G = {x ∈ R | m ≤ | x | ≤ M}
Dado um número real x, várias situações poderão ocorrer:
1. x ∈ G: por exemplo, x = 235.89 = 0.23589 * 103
. Observe que este número possui 5 dígitos na
mantissa. Estão representados exatamente nesta máquina os números: 0.235*103
e 0.236*103
.
Se for usado o truncamento, x será representado por 0.235*103
e, se for usado o
arredondamento, x será representado por 0.236*103
. Na próxima seção, sobre erros,
estudaremos o truncamento e o arredondamento;
2. | x | < m: por exemplo, x = 0.345*10-7
. Este número não pode ser representado nesta máquina
porque o expoente e é menor que −5. Esta é uma situação em que a máquina acusa a ocorrência
de underflow;
3. | x | > M: por exemplo, x = 0.875*109
. Neste caso o expoente e é maior que 5 e a máquina acusa
a ocorrência de overflow.
Algumas linguagens de programação permitem que as variáveis sejam declaradas em precisão
dupla. Neste caso, esta variável será representada no sistema de aritmética de ponto flutuante da máquina,
mas com aproximadamente o dobro de dígitos disponíveis na mantissa. É importante observar que, neste
caso, o tempo de execução e requerimento de memória aumenta de forma significativa.
O C fornece três tipos para números de ponto flutuante. Cada tipo tem um intervalo e uma
precisão especificada:
IntervaloTipo Nº de bits
Inicio Fim
float 32 3.4E−38 3.4E+38
double 64 1.7E−308 1.7E+308
long double 80 3.4E−4932 3.4E+4932
O tipo long double é o tipo de ponto flutuante com maior precisão. É importante observar que os
intervalos de ponto flutuante, na tabela acima, estão indicados em faixa de expoente, mas os números
podem assumir valores tanto positivos quanto negativos.
3.4 Propagação de Erros
Durante as operações aritméticas de um método, os erros dos operandos produzem um erro no
resultado da operação; sendo A, a, B, b os valores exatos e aproximados, respectivos, e Ea e Eb, os erros
dos operandos.
A + B = (a + Ea) + (b + Eb) = a + b + Ea + Eb ∴ EAA+B = Ea + Eb
A − B = (a + Ea) − (b + Eb) = a − b + Ea − Eb ∴ EAA-B = Ea − Eb
16
A * B = (a + Ea) (b + Eb) = ab + aEb + bEa + Eb*Ea ∴ EAA*B = aEb + bEa + Eb*Ea
Vejamos através de um exemplo, como os erros descritos anteriormente podem influenciar o
desenvolvimento de um cálculo.
Exemplo: Suponha-se que as operações abaixo sejam processadas em uma máquina com 4 dígitos
significativos e fazendo-se: x1 = 0.3491*104
e x2 = 0.2345*100
tem-se:
(x2 + x1) − x1 = (0.2345*100
+ 0.3491*104
) − 0.3491*104
= 0.3491*104
− 0.3491*104
= 0.0000
x2 + (x1 − x1) = 0.2345*100
+ (0.3491*104
− 0.3491*104
)
= 0.2345 + 0.0000
= 0.2345
Os dois resultados são diferentes, quando não deveriam ser, pois a adição é uma operação
distributiva. A causa desta diferença foi um arredondamento feito na adição (x2 + x1), cujo resultado tem 8
dígitos. Como a máquina só armazena 4 dígitos, os menos significativos foram desprezados.
Ao se utilizar máquinas de calcular deve-se estar atento a essas particularidades causadas pelo erro
de arredondamento, não só na adição, mas também nas outras operações.
17
4 Zeros de Equações Transcendentes e Polinomiais
4.1 Introdução
Seja F(x) uma função real definida num intervalo [a, b]. Chama-se raiz(es) desta função em [a, b]
a todo ξ (csi) ∈ (a, b) tal que F(ξ) = 0, como mostra a figura abaixo.
0
f(x)y
x
ξ b
a
4.1.1 Derivada de uma função num ponto
A função ƒ : A → R diz-se derivável no ponto de acumulação a ∈ A quando existe e é finito o
limite:
∆ ∆
∆
∆
∆
∆x x a x
y
x
f x f a
x a
f a x f a
x→ → →
=
−
−
=
+ −
0 0
lim lim
( ) ( )
lim
( ) ( )
Quando f é derivável em a, o limite é chamado derivada de f no ponto a.
4.1.2 Tipos de Métodos
Pode-se dizer que são dois os métodos para se achar a(s) raiz(es) de uma equação:
Método direto: quando fornece solução em apenas um único passo. Esta raiz é exata, a menos de
erros de arredondamento.
Exemplo: Seja F(x) = x2
− 3x + 2. A solução direta pode ser obtida através da fórmula de Baskara com a
expressão: X
b b ac
a
=
− ± −2
4
2
, que terá como conjunto solução {1, 2}.
a = 1; b = -3; c = 2; %f(x) = x^2 - 3*x + 2
delta = b*b - 4*a*c;
if (delta >= 0)
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
sprintf('x1 = %15.8fn',x1)
sprintf('x2 = %15.8fn',x2)
else
sprintf('Nao possui raizes reaisn');
end
Método iterativo ou indireto: é um processo de cálculo infinito, recursivo, em que o valor obtido
a cada passo depende de valores obtidos em passos anteriores. Este tipo de método, na maioria das vezes,
não obtém solução exata para as raízes, mas sim uma solução aproximada dentro de uma faixa de erro
considerada aceitável.
É importante salientar, que normalmente, os métodos iterativos são mais precisos quando
executados em um computador que permite agilizar os cálculos matemáticos, obtendo assim uma melhor
precisão.
18
Exercício: Calcular 4 e de 2 usando o Método de Newton definido por:
2
1
1






+
=
−
−
n
n
n
x
x
x
x , para n = 1, 2, 3, ...
onde: x: o número a ser calculado a raiz
x0: uma atribuição inicial qualquer diferente de zero (por exemplo, x0 = 1).
Como vimos anteriormente, o cálculo das duas raízes de uma equação do segundo grau, colocada
sob a forma ax2
+ bx + c = 0, são facilmente obtidas pela fórmula de Baskara. Entretanto, se colocarmos
uma expressão em que apareça uma equação transcendente, a solução já não é tão simples, como
demonstram os exemplos abaixo:
ex
+ x = 0
cos(x) – x = 0
ln(x) + x – 2 = 0
Mesmo um polinômio de grau maior que três já não tem uma solução algébrica simples como a da
equação do segundo grau, a não ser em casos particulares. Vamos analisar como enfrentar esse problema,
tão comum em diversas áreas da engenharia, da economia, das ciências, da física, entre tantas outras.
Essas equações, com enorme freqüência, nos levam a raízes reais não racionais que, ao serem
representadas no computador, necessariamente, o serão de forma aproximada, pelas razões já expostas no
capítulo anterior, tendo em vista que necessitariam de infinitos dígitos, em suas mantissas, para serem
representadas.
Além disso, em geral, estamos interessados em obter esses valores, essas raízes, com uma
determinada precisão, com um erro tolerável, com algumas casas decimais, sem a pretensão de obter
valores exatos. Isso é mais do que suficiente, para a maioria dos problemas práticos encontrados.
Os métodos numéricos a serem apresentados, partindo de valores inicialmente propostos, buscam
aprimorar esses valores, diminuindo os erros, aproximando-se, assim, dos valores das raízes procuradas,
até que os erros sejam aceitáveis, podendo-se garantir que sejam erros inferiores a valores pré-definidos.
Para se calcular uma raiz duas etapas devem ser seguidas:
• Isolar a raiz, ou seja, achar um intervalo [a, b], o menor possível, que contenha uma e somente
uma raiz da equação f(x) = 0;
• Melhorar o valor da raiz aproximada, isto é, refiná-la até o grau de exatidão requerido. Com a
abordagem iterativa precisamos determinar um intervalo inicial para construirmos a seqüência
{xi} e teremos que a raiz x' será dada por:
i
i
xx
∞→
= lim'
Além disto, temos que estipular critérios de parada, pois na pratica não calcularemos infinitos
termos, mas apenas o suficiente para atingirmos a exatidão desejada.
4.1.3 Isolamento de Raízes
Nesta fase é feita uma análise teórica e gráfica da função f(x). Para tal fim, usa-se freqüentemente
um importante teorema da álgebra.
Teorema: Se uma função f(x) contínua num intervalo [a, b] assume valores de sinais opostos nos
19
pontos extremos deste intervalo, isto é, f(a). f(b) < 0, então o intervalo conterá, no mínimo, uma raiz da
equação f(x) = 0; em outras palavras haverá, no mínimo, um número ξ ∈ (a, b) tal que f(ξ) = 0.
4.1.3.1 Número de Raízes Reais
Na seção anterior vimos como delimitar as raízes reais de F(x) = 0. Agora iremos verificar quantas
raízes existem no intervalo delimitado. Os métodos a seguir dão uma boa indicação sobre o número de
raízes do intervalo.
Teorema de Bolzano: Seja F(x) = 0 uma equação algébrica com coeficientes reais e x ∈ (a, b):
• Se F(a).F(b) < 0, então existe um número impar de raízes reais (contando suas
multiplicidades) no intervalo (a, b).
• Se F(a).F(b) > 0, então existe um número par de raízes reais (contando suas multiplicidades)
ou não existe raízes reais no intervalo (a, b).
A determinação do número de raízes de equações transcendentes geralmente é quase impossível,
pois algumas equações podem ter um número infinito de raízes.
Não faremos maiores considerações sobre este importante tópico, por não ser o objeto de estudo
neste momento, e por merecer um trabalho a parte, devido a extensão de seu conteúdo. Entretanto,
podemos salientar que o problema de isolar raízes constitui-se da enumeração, localização e separação
das mesmas.
4.1.3.2 Refinamento
Depois de isolar a raiz no intervalo [a, b], passa-se a calculá-la através de métodos numéricos.
Como veremos adiante, estes métodos devem fornecer uma seqüência {xi} de aproximação, cujo limite é
a raiz exata ξ. Em cada aproximação xn, da raiz exata ξ, usa-se um destes critérios e compara-se o
resultado com a tolerância ε pré-fixada.
A verificação, de que xn está "suficientemente" próxima da raiz, pode ser feita de dois modos
diferentes (que podem levar a resultados diferentes):
| f(xn) | ≤ ε ( abordagem pelo eixo y)
| xn − xn-1 | ≤ ε (abordagem pelo eixo x)
Observa-se que dependendo dos números envolvidos é aconselhável usar os testes de erro relativo:
||
||
1
1
−
−−
n
nn
x
xx
≤ ε
4.1.4 Classificação dos métodos
Métodos de quebra: Os métodos de quebra são os mais intuitivos geometricamente; contudo, são
os que convergem mais lentamente. Estes métodos são assim chamados porque a partir de um intervalo
que contenha uma raiz da função, vai-se particionando este intervalo em outros menores, que ainda
contenham a raiz. Dependendo da escolha do ponto de quebra do intervalo, poderemos ter diferentes
métodos, tais como.
• Método da Bisseção;
• Método da Falsa Posição.
Métodos de ponto fixo: Nos métodos de ponto fixo começamos de uma aproximação inicial x0 e
construímos a seqüência {xi} na qual cada termo é dado por xi+1 = ζ(xi), onde ζ é uma função de iteração.
Conforme for ζ, (dzeta) teremos diferentes métodos de ponto fixo, tais como.
20
• Método de Newton-Raphson;
• Método da Iteração Linear.
Métodos de múltiplos pontos: Os métodos de múltiplos pontos constituem uma generalização do
método anterior, onde para determinar um ponto xi+1 utilizamos vários pontos anteriores: xi, xi-1, ..., xi-p.
Exemplo:
• Método da Secante.
4.2 Método da Bisseção
Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo que ξ ∈ (a,
b), tal que f(ξ) = 0.
y
x0 b
a x1
x2
f(x)
f(a)
f(b)
ξ
x3
x4
Interpretação geométrica do método da bisseção
Dividindo o intervalo [a, b] ao meio, obtém-se x1, havendo, pois, dois subintervalos, [a, x1] e [x1,
b], a ser considerados. Se f(x1) = 0, então ξ = x1; caso contrário, a raiz estará no subintervalo onde a
função tem sinais opostos nos pontos extremos, ou seja, se f(a). f(x1) < 0 então ξ ∈ [a, x1], senão f(a). f(x1)
> 0 e ξ ∈ [x1, b].
O processo se repete até que se obtenha uma aproximação para a raiz exata ξ, ou seja, que o
critério de parada seja satisfeito. Então, por indução, temos:
Algoritmo:
2
ba
xn
+
= , para n = 1, 2, 3, ...
Se f(a). f(xn) < 0, então teremos b = xn, senão a = xn.
Critério de Parada:
errof xn ≤)(
ou
| b − a | ≤ erro
Restrição: É necessário conhecer um intervalo que contenha o valor desejado ξ.
4.2.1 Estimativa do Número de Iterações
Considerando uma precisão ε e um intervalo inicial [a, b] é possível saber, a priori, quantas
iterações serão efetuadas pelo método da bisseção até que se obtenha | b − a | ≤ ε, usando o algoritmo
deste método.
Vimos que:
k
kk
kk
abab
ab
22
0011 −
=
−
=− −−
21
Deve-se obter o valor de k tal que bk − ak < ε, ou seja,
ε<
−
k
ab
2
00
⇒
kab
200
<
−
ε
log(b0 − a0) − log(ε) < k * log(2)
k
ab
<
−−
)2log(
)log()log( 00 ε
Portanto, se k satisfaz a relação acima, ao final da iteração k teremos o intervalo [a, b] que contem a
raiz ξ.
4.2.2 Considerações Finais
• As iterações não envolvem cálculos laboriosos;
• Apesar de teoricamente seguro, o método pode ter falhas. Se ocorrer um erro de
arredondamento, mesmo que pequeno, no momento em que a máquina avalia o sinal do ponto
médio, poderemos ter um intervalo que efetivamente não contém uma raiz;
• Pode ser difícil encontrar um intervalo [a, b], tal que f(a). f(b) < 0, em equações com raízes de
multiplicidade par ou muito próximas;
• A convergência é muito lenta, pois se o intervalo inicial é tal que b0 − a0 >> ε e se ε for muito
pequeno, o numero de iterações (k) tende a ser muito grande;
• Deve ser utilizado apenas para diminuir o intervalo que contém a raiz.
4.2.3 Exemplos
Exemplo 1: Encontrar a raiz da função f(x) = x.ln(x) − 3.2 contida no intervalo [2, 3], com erro ≤ 10-2
.
a) Algoritmo:
2
ba
xn
+
=
b) Escolha do intervalo:
f(2) = −1.81371 f(3) = 0.09584
ξ ∈ [2, 3]
c) Valor do erro:
erro ≤ 10-2
d) Iterações:
a Xn b f(a) f(xn) | xn − a | ε = | f(xn) |
2 2.5 3 −1.81371 −0.90927 0.5 0.90927
2.5 2.75 3 −0.90927 −0.41810 0.25 0.41810
2.75 2.875 3 −0.41810 −0.16385 0.125 0.16385
2.875 2.9375 3 −0.16385 −0.03467 0.0625 0.03467
2.9375 2.96875 3 −0.03467 0.03042 0.03125 0.03042
2.9375 2.953125 2.96875 −0.03467 −0.00217 0,015625 0.00217
e) Resposta:
A raiz desejada é ξ = 2,953125
Exercício 1: Encontrar a raiz de f(x) = x2
− 3, contida no intervalo [1; 2], com erro ≤ 10-2
.
Resposta: A raiz desejada é ξ = 1.734375
22
Exercício 2: Encontrar a raiz da função f(x) = x2
+ ln(x) contida no intervalo [0.5, 1], com erro ≤ 10-2
.
Resposta: A raiz desejada é ξ = 0.65625
Exercício 3: Encontrar a primeira raiz positiva da função f(x) = e-x
− sen(x), com erro ≤ 10-2
.
Resposta: A raiz desejada é ξ = 0.59375
4.3 Método da Falsa Posição
Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo que ξ ∈ (a,
b), tal que f(ξ) = 0.
No caso do Método da Bisseção, xn é obtido através da média aritmética entre os extremos a e b:
2
ba
xn
+
=
Na maioria das vezes a raiz está mais próxima de um dos extremos do intervalo. Se partirmos do
princípio de que a raiz deve estar mais próxima do ponto que apresenta o menor valor da função, então,
em vez de tomar a média aritmética entre a e b, o método da falsa posição toma a média aritmética
ponderada entre a e b com pesos | f(b) | e | f(a) |, respectivamente:
)()(
)()(
afbf
afbbfa
xn
+
+
= , visto que f(a) e f(b) têm sinais opostos, temos então:
)()(
)().(
)()(
)()()()(
)()(
)()(
afbf
afab
a
afbf
aafaafabfbaf
afbf
abfbaf
xn
−
−
−=
−
+−−
=
−
−
= , para n = 1, 2, 3, ...
Graficamente, este método procura particionar o intervalo [a, b], na interseção da reta que une os
pontos (a, f(a)) e (b, f(b)) com o eixo x. Este ponto é representado como xn. Escolhe-se então um novo
subintervalo conforme for a variação do sinal da curva f.
O método da falsa posição aplicado na figura abaixo mostra que f(x1).f(a) < 0, com isso, o novo
intervalo que contém pelo menos uma raiz real é dado por (a, x1). Continuando o processo, determinamos
o ponto x2 e verifica-se, agora, que f(x2).f(x1) < 0, daí o processo segue tendo o intervalo (x1, x2).
Após encontrar o ponto x1, devemos verificar, como no caso da bisseção, se a raiz está entre o
intervalo (a, x1) ou (x1, b). Se f(a).f(x1) < 0, então teremos b = x1, caso contrário teremos a = x1. A partir
daí o processo se repete até que o critério de parada seja satisfeito.
y
x0 b
a
x1
f(x)
f(b)
f(a)
ξ
f(b')
x2
Representação geométrica do método da falsa posição
23
O algoritmo deste método também pode ser encontrado através da análise dos triângulos formados
pela reta (a, f(a)) e (b, f(b)) com o eixo x. Seja o triângulo f(a)x1a e o triângulo f(a)f(b)f(b’), então, pela
propriedade da semelhança de triângulos temos:
∴
−
−−
=−∴
−
−
=
−
−
∴
−
−
=
−
−
)()(
))()((
)()()()(
)()(
1
1
1 afbf
afab
ax
af
ax
afbf
ab
af
afbf
ax
ab
)()(
))()((
1
afbf
afab
ax
−
−
−=
Se f(a).f(x1) < 0, então teremos b = x1, senão a = x1. A partir daí o processo se repete até que o
critério de parada seja satisfeito.
Então, por indução temos:
Algoritmo:
)()(
)().(
afbf
afab
axn
−
−
−= Para n = 1, 2, 3, ...
Se f(a).f(xn) < 0, então teremos b = xn, senão a = xn.
Critério de Parada:
| xn − xn-1 | ≤ erro (x0 = a ou x0 = b)
Pode ser usado também o critério: errof xn ≤)(
Restrição:
É necessário conhecer um intervalo que contenha o valor desejado ξ.
4.3.1 Casos especiais
Se f(x) é contínua no intervalo [a, b] com f(a).f(b) < 0 então o método da falsa posição gera uma
seqüência convergente.
Se uma função é côncava ou convexa em [a, b], ou seja, a segunda derivada existe em [a, b] e
f”(x) não muda de sinal nesse intervalo, então no método da falsa posição teremos sempre uma das
extremidades fixa. Este caso especial também é chamado de Método das Cordas. A figura abaixo mostra
graficamente os quatro casos que podem ocorrer:
f x
f a e f b
"( )
( ) ( )
>
< >
⇒
0
0 0
b é ponto fixo
f x
f a e f b
"( )
( ) ( )
>
> <
⇒
0
0 0
a é ponto fixo
24
y
x0 b
a x1
x2
f(x)
f(b)
f(a)
ξ
y
x0
b
a
x1x2
f(x)
f(a)
f(b)
ξ
f x
f a e f b
"( )
( ) ( )
<
< >
⇒
0
0 0
a é ponto fixo
y
x0 b
a
x1
x2
f(x)
f(a)
f(b)
ξ
f x
f a e f b
"( )
( ) ( )
<
> <
⇒
0
0 0
b é ponto fixo
y
x0
b
a x1
x2
f(x)
f(b)
f(a)
ξ
Método da falsa posição com uma das extremidades fixa
4.3.2 Considerações finais
• Se o ponto fixo existir e for razoavelmente próximo da raiz, o método tem boa convergência;
caso contrário, pode ser mais lento que a bisseção.
4.3.3 Exemplos
Exemplo 1: Determinar pelo método da falsa posição a menor raiz positiva da função de quarto grau f(x)
= x4
− 26x2
+ 24x + 21 até que o erro absoluto seja igual ou inferior a 0.01. Os cálculos devem ser
efetuados com 2 casas decimais e com arredondamento.
a) Algoritmo:
)()(
)().(
afbf
afab
axn
−
−
−=
f(x) = x4
− 26x2
+ 24x + 21
f’(x) = 4x3
− 52x + 24
f”(x) = 12x2
− 52
b) Escolha do intervalo:
Em primeiro lugar, deve-se procurar o intervalo onde possivelmente esteja a primeira raiz
positiva. Através da análise do valor da função nos primeiros pontos do eixo dos x temos que:
f(0) = 21, f(1) = 20, f(2) = −19, logo, entre (1, 2) existe uma raiz positiva.
c) Valor inicial:
a = 1 b = 2
f”(1) = −40 f”(2) = −4 → f”(1).f”(2) > 0 ∴ a concavidade não muda.
25
temos f”(x) < 0, f(a) > 0 e f(b) < 0, portanto, b é ponto fixo.
d) Valor do erro:
erro ≤ 10-2
e) Iterações:
x
f
f f
1 1
2 1 1
2 1
1
1 20
19 20
1
20
39
1 51= −
−
−
= −
− −
= −
−
=
( )( ( ))
( ( ) ( ))
( )( )
( )
,
| x1 − a | = | 1,51 − 1 | = 0,51 > erro
f(a).f(x1) = (20).(3,16) = 63,2 > 0, portanto a raiz está no intervalo (x1, b), então a = x1
x
f
f f
2 1 51
2 1 51 1 51
2 1 51
1 51
0 49 316
19 316
151
155
22 16
1 58= −
−
−
= −
− −
= −
−
=,
( , )( ( , ))
( ( ) ( , ))
,
( , )( , )
( , )
.
( , )
,
,
| x2 − x1 | = | 1,58 − 1,51 | = 0,07 > erro
f(a).f(x2) = (1,51).(1,58) = 2,3858 > 0, ∴ a = x2
x
f
f f
3 1 58
2 1 58 1 58
2 1 58
158
0 42 0 24
19 0 24
158
010
19 24
1 59= −
−
−
= −
− −
= −
−
=,
( , )( ( , ))
( ( ) ( , ))
,
( , )( , )
( , )
,
,
,
,
| x3 − x2 | = | 1,59 − 1,58 | = 0,01 < erro
f) Resposta:
ξ = 1,59 é a primeira raiz positiva do polinômio.
Exercício 1: Calcular a raiz aproximada para a equação f(x) = cos(x) + x, com ε ≤ 0.001.
Resposta: ξ = −0.7391 é a raiz procurada da equação.
Exercício 2: Calcular a raiz negativa para a função f(x) = ex
+ x, com o erro ≤ 0.01. Sabe-se que a raiz
está contida no intervalo [−1, 0].
Resposta: ξ = −0.5677 é a raiz procurada da equação.
4.4 Método da Iteração Linear
Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo ξ ∈ (a, b),
tal que f(ξ) = 0.
Por um artifício algébrico, pode-se transformar f(x) = 0 em duas funções que lhe sejam
equivalentes.
f(x) = 0 →



=
=
)(xgy
xy
onde g(x) é chamada de função de iteração.
26
y
x
0
f(x)
ξ
y=x
y=g(x)
Interpretação geométrica do método da iteração linear
Sendo x0 a primeira aproximação da raiz ξ, calcula-se g(x0). Faz-se então, x1 = g(x0), x2 = g(x1), x3
= g(x2) e assim sucessivamente.
Então, por indução, temos:
Algoritmo:
)( 1−= nn xgx
para n = 1, 2, 3, ...
Critério de Parada:
| xn − xn-1 | ≤ erro
Melhor extremo:
Empiricamente, sabe-se que o método tem sucesso quando | g'(x) | < 1 em todo intervalo.
O extremo mais rápido para iniciar o método é aquele para o qual o módulo da primeira
derivada é menor.
Se | g'(a) | < | g'(b) | então x0 = a, senão x0 = b.
4.4.1 Casos de convergência
Seja f(x) = x3
− 5x + 3. Possíveis g(x):
g(x) =
5
33
+x
g(x) = ( ) 3
1
35 −x
g(x) = 2
35
x
x −
g(x) =
5
3
2
−
−
x
Como podemos ter várias funções g(x), vamos estabelecer algumas condições para que os
resultados sejam satisfatórios.
Vamos observar graficamente o problema e verificar que há funções g(x) que não são indicadas
para a escolha.
Convergência monotônica
0 < g’(x) < 1
Convergência oscilante
−1 < g’(x) < 0
27
y
x
0
x1
x2
x0
y=x
y=g(x)
ξ
y
x
0
x1
x2
x0
y=x
y=g(x)
x3
x4
ξ
Divergência monotônica
g’(x) > 1
y
x
0
x1
x2
x0
y=xy=g(x)
ξ
Divergência oscilante
g’(x) < −1
y
x
0
x1
x2
x0
y=x
y=g(x)
ξ x3
x4
Convergência no método da iteração linear
4.4.2 Considerações finais
• A maior dificuldade neste método é encontrar uma função de iteração que satisfaça à condição
de convergência;
• Teste de | g'(x) | < 1 pode levar a um engano se x0 não estiver suficientemente próximo da raiz.
A velocidade de convergência dependerá de | g'(ξ) |: quanto menor este valor maior será a
convergência;
• Devemos observar que o teste de erro ( | xn − xn-1 | ≤ erro ) não implica necessariamente que |
xn − ξ | ≤ erro, conforme vemos na figura abaixo:
y
x
0
ξ
y=x
y=g(x)
xn xn-1
4.4.3 Exemplos
Exemplo 1: Dada a função f(x) = x2
+ 3x − 40, obter sua raiz contida no intervalo [4.5, 5.5], pelo MIL,
com um erro ≤ 10-4
.
a) Algoritmo: )( 1−= nn xgx
b) Escolha da função de iteração:
y = x
28
y =
3
402
−
−x
y' =
3
2x−
→ divergência oscilante
y =
3
40
+x
y' = 2
)3(
40
+
−
x
→ convergência oscilante
y = x340 − y' =
x3402
3
−
−
→ convergência oscilante
c) Melhor extremo (valor inicial):
y = x340 − → y' =
x340*2
3
−
−
y'(4.5) = −0.2914 y'(5.5) = −0.3094 ∴ x0 = 4.5
d) Valor do erro:
erro ≤ 10-4
e) Iterações:
x1 = 5.14782
x2 = 4.95546
x3 = 5.01335
x4 = 4.99599
x5 = 5.00120
x6 = 4.99964
x7 = 5.00011
x8 = 4.99997
x9 = 5.00000 | x9 – x8 | = 0.00003 < erro
f) Resposta:
A raiz desejada é ξ = 5.00000
Exercício 1: Dada a função f(x) = x2
+ 3x − cos(x) − 2.45, obter sua raiz contida no intervalo [0.5, 1],
pelo MIL, com um erro ≤ 10-2
.
Resposta: A raiz desejada é ξ = 0.8161
4.5 Método de Newton-Raphson ou Método das Tangentes
Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo ξ ∈ (a, b), tal
que f(ξ) = 0 e f’(x) ≠ 0.
y
x0
a
f(a)
b=x0
f(x)
x1x2
αβ
x'1
ξ
f(x0)
f(x1)
29
Interpretação geométrica do método de Newton
Tomemos x0 = b. Então temos:
)('
)()(
)(')('
0
0
01
10
0
00
xf
xf
xx
xx
xf
xfxftg −=∴
−
=∴=α
Se erroxx ≤− 01 , então x1 é a raiz desejada, senão deve-se calcular x2, que é obtido com base no
mesmo raciocínio anterior:
)('
)(
1
1
12
xf
xf
xx −= .
Se erroxx ≤− 12 , então x2 é a raiz desejada, senão deve-se calcular x3, ..., xn, até que
erroxx nn ≤− −1 . Então, por indução, temos:
Algoritmo:
)('
)(
1
1
1
−
−
− −=
n
n
nn
xf
xf
xx , para n = 1, 2, 3, ...
Critério de Parada:
erroxx nn ≤− −1
Restrição:
É necessário conhecer um intervalo que contenha o valor desejado ξ.
Melhor extremo:
Para decidir qual o melhor extremo do intervalo (a, b) a iniciar o método, basta verificar
qual dos extremos possui função e segunda derivada com mesmo sinal:
f(xi). f''(xi) > 0 Para i = {extremos do intervalo}
4.5.1 Considerações finais
• Requer o conhecimento da forma analítica de f '(x), mas sua convergência é extraordinária.
4.5.2 Exemplos
Exemplo 1: Calcular a raiz positiva da equação f(x) = 2x − sen(x) − 4 = 0, com erro ≤ 10-3
, usando o
método de NR.
a) Algoritmo:
)('
)(
1
1
1
−
−
− −=
n
n
nn
xf
xf
xx
f(x) = 2x − sen(x) − 4
f´(x) = 2 − cos(x)
f''(x) = sen(x)
b) Escolha do intervalo:
f(2) = −0.9093 f(3) = 1.8589
f(2). f(3) < 0 → ξ ∈ [2, 3]
c) Melhor extremo (valor inicial):
f(2) = −0.9093 f(3) = 1.8589
f''(2) = 0.9093 f''(3) = 0.1411
∴ x0 = 3
d) Valor do erro:
30
erro ≤ 10-3
e) Iterações:
3783.2
9900.2
8589.1
3
)3('
)3(
31 =−=−=
f
f
x
| x1 − x0 | = | 2.3783 − 3 | = 0.6217 > erro
3543.2
7226.2
0653.0
3783.2
)3783.2('
)3783.2(
3783.22 =−=−=
f
f
x
| x2 − x1 | = | 2.3543 − 2.3783 | = 0.0240 > erro
3542.2
7058.2
0002.0
3543.2
)3543.2('
)3543.2(
3543.23 =−=−=
f
f
x
| x3 − x2 | = | 2.3542 − 2.3543 | = 0.0001 < erro
f) Resposta:
A raiz desejada é ξ = 2.3542
Exercício 1: Obter a raiz cúbica de 5, usando o método NR sendo o erro ≤ 10-3
.
f(x) = x3
− 5
f'(x) = 3x2
f''(x) = 6x
Resposta: A raiz desejada é ξ = 1.7100
Exercício 2: Calcular a raiz negativa de f(x) = x3
− 5x2
+ x + 3, com erro ≤ 10-4
.
f(x) = x3
− 5x2
+ x + 3
f´(x) = 3x2
− 10x + 1
f''(x) = 6x − 10
Resposta: A raiz desejada é ξ = −0.64575
Exercício 3: Seja a função f(x) = sen(x) − tg(x). Deseja-se saber uma das raízes desta função, sabendo-se
que está contida no intervalo (3, 4). Todos os cálculos devem ser realizados com 4 casas decimais com
arredondamento e erro não superior a 0.001.
f(x) = sen(x) − tg(x)
f'(x) = cos(x) − sec2
(x)
f''(x) = −sen(x) − 2sec2
(x) tg(x)
Resposta: A raiz desejada é ξ = 3.1416
4.5.3 Condições de Newton-Raphson-Fourier
Segundo Newton, para haver a convergência à uma raiz em seu método, bastaria que o intervalo
(a, b) em análise fosse suficientemente pequeno. Contudo, Raphson e Fourier concluíram que um
intervalo pequeno é aquele que contém uma e somente uma raiz. Com isso, algumas condições foram
estabelecidas para que tal exigência fosse válida:
31
1ª) Se f(a). f(b) > 0, então existe um número par de raízes reais (contando suas multiplicidades) ou
não existe raízes reais no intervalo (a, b) (Teorema de Bolzano);
2ª) Se f(a).f(b) < 0, então existe um número ímpar de raízes reais (contando suas multiplicidades)
no intervalo (a, b) (Teorema de Bolzano);
3ª) Se f'(a). f'(b) > 0, então o comportamento da função neste intervalo poderá ser apenas
crescente ou apenas decrescente, e nunca os dois se alternando;
4ª) Se f'(a). f'(b) < 0, então a função terá o comportamento de ora crescer ora decrescer;
5ª) Se f"(a). f"(b) > 0, então a concavidade não muda no intervalo em análise;
6ª) Se f"(a). f"(b) < 0, então a concavidade muda no intervalo em análise.
Portanto, haverá convergência à uma raiz no intervalo (a, b) se e somente se:
f(a). f(b) < 0, f'(a). f'(b) > 0 e f"(a). f"(b) > 0.
Exemplo 2: Seja a função f(x) = x2
− 9.5x + 8.5, obter a raiz contida no intervalo [8, 9]. Os cálculos
devem ser realizados com 4 decimais com arredondamento e erro não superior a 0,001.
a) Algoritmo :
)('
)(
1
1
1
−
−
− −=
n
n
nn
xf
xf
xx
f(x) = x2
− 9.5x + 8.5
f’(x) = 2x − 9.5
f”(x) = 2
b) Escolha do intervalo:
f(8) = −3.5; f(9) = 4
f(8). f(9) < 0 → ξ ∈ [8, 9]
c) Melhor extremo (valor inicial):
f(8) = −3,5 f(9) = 4 f(8). f(9) < 0
f'(8) = 6.5 f'(9) = 8.5 f′(8). f′(9) > 0
f"(8) = 2 f"(9) = 2 f″(8). f″(9) > 0
∴ x0 = 9
d) Valor do erro:
erro ≤ 10-3
e) Iterações:
5294.8
5.8
4
9
)9('
)9(
91 =−=−=
f
f
x
| x1 − x0 | = | 8.5294 − 9 | = 0.4706 > erro
5001.8
5588.7
2214.0
5294.8
)5294.8('
)5294.8(
5294.82 =−=−=
f
f
x
| x2 − x1 | = | 8.5001 − 8.5294 | = 0.0293 > erro
5000.8
5002.7
0008.0
5001.8
)5001.8('
)5001.8(
5001.83 =−=−=
f
f
x
| x3 − x2 | = | 8.5000 − 8.5001 | = 0.0001 < erro
f) Resposta:
A raiz desejada é ξ = 8.5000
32
Exercício 4: Calcular a raiz da equação f(x) = x3
− x + 1 = 0, contida no intervalo [−2, −1], com um erro ≤
10-3
.
f(x) = x3
− x + 1
f’(x) = 3x2
− 1
f”(x) = 6x
Resposta: A raiz desejada é ξ = −1.3247
4.6 Método da Secante
Uma grande desvantagem do método de Newton é a necessidade de se obter a derivada f’(x) e
calcular o seu valor numérico a cada iteração.
Para contornar este problema podemos substituir o cálculo da primeira derivada f’(xn) pelo
quociente das diferenças, usando assim, um modelo linear baseado nos dois valores calculados mais
recentemente:
1
1 )()(
)('
−
−
−
−
≈
nn
nn
n
xx
xfxf
xf
onde xn e xn-1 são duas aproximações para a raiz.
Substituindo o valor aproximado da derivada acima, a função de iteração fica:
x
x
n
n
x
f x
f x f x
x x
x
x x f x
f x f x
n
n
n n
n
n n n
n n
n n
+
+
= −
−
−
= −
−
−
−
−
−
−
1
1
1
1
1
1
( )
( ) ( )
( ). ( )
( ) ( )
, para n = 1, 2, 3, ...
Para iniciar o método necessitamos de duas aproximações (x0 e x1) para a raiz.
y
x0 x1
xo
x2
f(x)
f(x0)
f(x1)
ξ
x3
x4
Interpretação geométrica do método da secante
Neste método partimos das duas aproximações iniciais x0 e x1 e determinamos a reta que passa
pelos pontos (x0, f (x0)) e (x1, f (x1)). A intersecção desta reta com o eixo x fornece o ponto x2. Em seguida
é calculado uma nova aproximação para a raiz a partir dos pontos (x1, f(x1)) e (x2, f (x2)). O processo se
repete até que seja satisfeito o critério de parada.
Observe que neste método não necessitamos da característica que é fundamental no método da
33
falsa posição que exige que f(xn). f(xn-1) < 0. É importante salientar também que a raiz não necessita estar
entre as duas aproximações iniciais (x0 e x1).
A convergência deste método é mais rápido que o método da bisseção e o da falsa posição,
contudo, pode ser mais lento que o método de Newton-Raphson.
Algoritmo:
)()(
)().(
1
1
1
−
−
+
−
−
−=
nn
nnn
nn
xfxf
xfxx
xx , para n = 1, 2, 3, ...
Critério de parada:
| xn+1 − xn | ≤ erro
4.6.1 Exemplos
Exemplo 1: Calcular a raiz da função f(x) = x2
+ x − 6, sendo x0 = 1.5, x1 = 1.7 e o erro ≤ 10-2
.
a) Algoritmo :
)()(
)().(
1
1
1
−
−
+
−
−
−=
nn
nnn
nn
xfxf
xfxx
xx
b) Valor inicial:
x0 = 1.5 x1 = 1.7
c) Valor do erro:
erro ≤ 10-2
d) Iterações:
0357.2
84.0
)282.0(
7.1
)25.2(41.1
)41.1)(2.0(
7.1
)5.1()7.1(
)7.1().5.17.1(
7.12 =
−
−=
−−−
−
−=
−
−
−=
ff
f
x
| x2 − x1 | = | 2.0357 − 1.7 | = 0.3357 > erro
9977.1
)41.1(1798.0
)1798.0)(3357.0(
0357.2
)7.1()0357.2(
)0357.2().7.10357.2(
0357.23 =
−−
−=
−
−
−=
ff
f
x
| x3 − x2 | = | 1.9977 − 2.0357 | = 0.038 > erro
0000.2
)1798.0(0115.0
)0115.0)(038.0(
9977.1
)0357.2()9977.1(
)9977.1().0357.29977.1(
9977.14 =
−−
−−
−=
−
−
−=
ff
f
x
| x4 − x3 | = | 2.0000 − 1.9977 | = 0.0023 < erro
e) Resposta:
ξ = 2.0000 é a raiz procurada.
Exercício 1: Calcular a raiz da função f(x) = 3x − cos(x), sendo x0 = 0, x1 = 0.5 e o erro ≤ 10-4
. Efetue os
cálculos com 5 casas decimais com arredondamento.
Resposta: ξ = 0.31675 é a raiz procurada.
Exercício 2: Calcular a raiz da função f(x) = x3
− 4, sendo x0 = 1, x1 = 2 e o erro ≤ 0,05.
Resposta: ξ = 1,5914 é a raiz procurada.
34
4.7 Método Misto
O método misto, consiste na aplicação seqüencial dos métodos NR e Falsa Posição, nesta ordem.
O método NR é aplicado no primeiro passo, sempre a partir do melhor extremo. Então, com o novo
resultado obtido N
x1 , determina-se qual valor dos extremos do intervalo será substituído ( f(a). f( N
x1 ) < 0
→ b = N
x1 , senão a = N
x1 ) e então aplica-se o método da Falsa Posição. O resultado obtido em F
mx será
utilizado na próxima iteração pelo método NR, mas antes é feito o teste do erro para verificar o critério de
parada.
Assim, por indução, seguem-se as iterações seguintes. Quando o critério de parada for satisfeito,
tira-se a média aritmética simples do resultado da última iteração de ambos os métodos e obtém-se a
resposta desejada.
Algoritmo:
2
F
m
N
m
m
xx
x
+
= , para m = 1, 2, 3, ...
Critério de parada:
| F
mx – N
mx | ≤ erro
4.7.1 Exemplos
Exemplo 1: Determinar pelo método misto, a raiz da função f(x) = 10sen(x) + cos(x) − 10x contida no
intervalo [0.5, 1], com tolerância de 2*10-4
e cálculos com 4 casas decimais com arredondamento.
a) Algoritmo:
2
F
m
N
m
m
xx
x
+
=
f(x) = 10sen(x) + cos(x) − 10x
f´(x) = 10cos(x) – sen(x) – 10
f"(x) = (−10)sen(x) – cos(x)
b) Valor do erro:
erro ≤ 0.0002
c) Escolha do intervalo:
f(0.5) = 0.6718 f(1) = −1.0450
d) Iterações:
Melhor extremo:
f(0.5) = 0.6718 f(1) = −1.0450
f"(0.5) = −5.6718 f"(1) = −8.9550 ∴ N
x0 = 1
8078.0
)4384.5(
)0450.1(
1
)1´(
)1(
11 =
−
−
−=−=
f
f
xN
extremo à trocar: f(a). f( N
x1 ) = f(0.5). f(0.8078) = (0.6718)(−0.1594) < 0
∴ a = 0.5 b = 0.8078
7488.0
)6718.0()1594.0(
)6718.0(*)3078.0(
5.0
)5.0()8078.0(
)5.0(*)5.08078.0(
5.01 =
−−
−=
−
−
−=
ff
f
xF
35
| F
x1 – N
x1 | = | 0.7488 − 0.8078 | = 0.0590 > erro
extremo à trocar: f(0.5). f(0.7488) = (0.6718)(0.0521) > 0
∴ a = 0.7488 b = 0.8078
7643.0
)3557.3(
)0521.0(
7488.0
)7488.0´(
)7488.0(
7488.02 =
−
−=−=
f
f
xN
extremo à trocar: f(0.7488). f(0.7643) = (0.0521)(−0.0008) < 0
∴ a = 0.7488 b = 0.7643
7641.0
)0521.0()0008.0(
)0521.0(*)0155.0(
7488.0
)7488.0()7643.0(
)7488.0(*)7488.07643.0(
7488.02 =
−−
−=
−
−
−=
ff
f
xF
| F
x2 – N
x2 | = | 0.7641 − 0.7643 | = 0.0002 ≤ erro
e) Resposta:
7642.0
2
7643.07641.0
=
+
=ξ
Exercício 1: Dada a função f(x) = x2
+ 3x − cos(x) − 2.45, obter sua raiz contida no intervalo [0.5, 1] pelo
método misto, com erro ≤ 10-3
e cálculos com 4 decimais com arredondamento.
f(x) = x2
+ 3x − cos(x) − 2.45
f'(x) = 2x + 3+ sen(x)
f"(x) = 2 + cos(x)
Resposta: 8200.0
2
82.082.0
=
+
=ξ
4.8 Método para Equações Polinômiais
4.8.1 Introdução
Embora qualquer um dos métodos estudados anteriormente possam ser usados para encontrar zeros
de um polinômio de qualquer grau, o fato de os polinômios aparecerem com tanta freqüência em
aplicações faz com que seja dedicada uma atenção especial.
Normalmente, um polinômio de grau n é escrito na forma:
Pn = n
n xaxaxaa ++++ K2
210 para an≠0
Sabemos da álgebra elementar como obter os zeros de um polinômio do segundo grau P2(x), ou
seja, n = 2. Existem fórmulas fechadas, semelhantes à fórmula para polinômios de grau 2, mas bem mais
complicadas, para zeros de polinômios de grau 3 e 4. Agora, para n ≥ 5, em geral, não existem fórmulas
explícitas e somos forçados a usar métodos iterativos para encontrar os zeros dos polinômios.
Muitos dos teoremas da álgebra são úteis na localização e classificação dos tipos de zeros de um
polinômio. O estudo será dividido em localização de raízes e determinação das raízes reais.
4.8.2 Localização de Raízes
Vejamos alguns teoremas que serão úteis para efetuar a localização de raízes.
36
Teorema Fundamental da Álgebra: Se Pn(x) é um polinômio de grau n ≥ 1, ou seja, Pn(x) =
n
n xaxaxaa ++++ K2
210 , para naaaa ,,,, 210 K reais ou complexos, com an≠0, então Pn(x) tem pelo
menos um zero, ou seja, existe um número complexo ξ tal que Pn(ξ) = 0.
Para determinarmos o número de zeos reais de um polinômio com coeficientes reais, podemos
fazer uso da regra de sinal de Descartes: Dado um polinômio com coeficientes reais, o número de zeros
reais positivos, p, desse polinômio não excede o número v de variações de sinal dos coeficientes. Temos
ainda que v – p é um número inteiro, par e não negativo.
Exemplos: Dados os polinômios a seguir, determinar o número de raízes reais positivas:
a) P5(x) = + 3x5
– 2x4
– x3
+ 2x + 1
+ −−−− −−−− + +
1 1
⇒ v = 2 ⇒ p:



==−
==−
ou
ppvse
ppvse
0,2
2,0
b) P5(x) = + 3x5
– 2x3
+ 4x2
– x – 1
+ −−−− + −−−− −−−−
1 11
⇒ v = 3 ⇒ p:



==−
==−
ou
ppvse
ppvse
1,2
3,0
c) P7(x) = + x7
+ 1
+ +
0
⇒ v = 0 e p: {v – p ≤ 0 ⇒ p = 0}.
Para determinar o número de raízes reais negativas, neg, tomamos Pn(–x) e usamos a mesma regra
para raízes positivas:
a) P5(x) = + 3x5
– 2x4
– x3
+ 2x + 1
P5(–x) = – 3x5
– 2x4
+ x3
– 2x + 1
−−−− −−−− + −−−− +
111
⇒ v = 3 ⇒ neg:



==−
==−
ou
negnegvse
negnegvse
1,2
3,0
b) P5(x) = + 3x5
– 2x3
+ 4x2
– x – 1
37
P5(–x) = – 3x5
+ 2x3
+ 4x2
+ x – 1
−−−− + + + −−−−
11
⇒ v = 2 ⇒ neg:



==−
==−
ou
negnegvse
negnegvse
0,2
2,0
c) P7(x) = + x7
+ 1
P7(x) = – x7
+ 1
−−−− +
1
Neste caso, vimos que não existe zero positivo. Temos ainda P7(0) = 1 ≠ 0. Temos então que, v =
1 e neg: {v – neg = 0 ⇒ neg = 1}, ou seja, Pn(x) = 0, não tem raiz real positiva, o zero não é raiz e tem
apenas uma raiz real negativa donde tem três raízes complexas conjugadas.
4.8.3 Determinação das Raízes Reais
Estudaremos um processo para se calcular o valor numérico de um polinômio, isto porque em
qualquer dos métodos este cálculo deve ser feito uma ou mais vezes por iteração.
Por exemplo, o Método de Newton, que veremos a seguir, a cada iteração deve-se fazer uma
avaliação do polinômio e uma de sua derivada.
4.8.3.1 Método para Calcular o Valor Numérico de um Polinômio
Para exemplificar o método, estudaremos o processo analisando um polinômio de grau 4:
P4(x) = 01
2
2
3
3
4
4 axaxaxaxa ++++
Este polinômio pode ser escrito na forma:
P4(x) = (((a4x + a3)x + a2)x + a1)x + a0
conhecida como forma dos parênteses encaixados.
Temos então, no caso de n = 4, que
P4
(x) = (((a4
x + a3
)x + a2
)x + a1
)x + a0
b4
b3
b2
:
:
Para se calcular o valor numérico de P4(x) em x = c, basta fazer sucessivamente:
b4 = a4
b3 = a3 + b4c
38
b2 = a2 + b3c
b1 = a1 + b2c
b0 = a0 + b1c
⇒ P(c) = b0.
Portanto, para Pn(x) de grau n qualquer, calculamos Pn(c) calculando as constantes bj, j = n, n – 1,
..., 1, 0 sucessivamente, sendo:
bn = an
bj = aj + bj+1c j = n – 1, n – 2, ..., 1, 0
e b0 será o valor de Pn(x) para x = c.
Podemos calcular o valor de P’n(x) em x = c usando os coeficientes bj obtidos anteriormente.
Tomando como exemplo o polinômio de grau 4, temos:
P4(x) = 01
2
2
3
3
4
4 axaxaxaxa ++++ ⇒ P’4(x) = 12
2
3
3
4 234 axaxaxa +++ .
Usando os valores de aj do cálculo anterior e dado que já conhemos b0, b1, b2, b3 e b4:
P’4(x) = 12
2
3
3
4 234 axaxaxa +++
= )()(2)(34 2132
2
43
3
4 cbbccbbccbbcb −+−+−+
= cbbcbcbcbcbcb 212
2
3
2
3
3
4
3
4 22334 −++−+−
Assim, P’4(x) = 12
2
3
3
4 bcbcbcb +++
Aplicando o mesmo esquema anterior, teremos:
c4 = b4
c3 = b3 + c4c
c2 = b2 + c3c
c1 = b1 + c2c
Calculamos, pois, os coeficientes cj, j = n, n – 1, ..., 1 da seguinte forma:
cn = bn
cj = bj + cj+1c j = n – 1, n – 2, ..., 1
Teremos então ⇒ P’(c) = c1.
4.8.4 Método de Newton para Zeros de Polinômios
Seja Pn(x) = 01
2
2
1
1 axaxaxaxa n
n
n
n +++++ −
− L uma aproximação inicial para a raiz procurada.
Conforme vimos, o Método de Newton consiste em desenvolver aproximações sucessivas para ξ a
partir da iteração:
xk+1 = xk –
)('
)(
k
k
xP
xP
para k = 0, 1, 2, ...
Exemplo 1: Dada a equação polinomial x5
– 3.7x4
+ 7.4x3
– 10.8x2
+ 10.8x – 6.8 = 0, temos que:
39
P5(1) = –2.1
P5(2) = 3.6
Então, existe uma raiz no intervalo (1, 2).
Partindo de x0 = 1.5 e considerando ε ≤ 0.02, o Método de Newton para polinômios fornece:
P’(x) = 5x4
– 14.8x3
+ 22.2x2
– 21.6x + 10.8
((((x – 3.7)x + 7.4)x – 10.8)x + 10.8)x – 6.8
a5 = 1
a4 = –3.7
a3 = 7.4
a2 = –10.8
a1 = 10.8
a0 = –6.8
b5 = 1
b4 = –3.7 + 1(1.5) = –2.2
b3 = 7.4 – 2.2(1.5) = 4.1
b2 = -10.8 + 4.1(1.5) = –4.65
b1 = 10.8 – 4.65(1.5) = 3.825
b0 = -6.8 + 3.825(1.5) = –1.0625
c5 = 1
c4 = -2.2 + 1(1.5) = –0.7
c3 = 4.1 – 0.7(1.5) = 3.05
c2 = -4.65 + 3.05(1.5) = –0.075
c1 = 3.825 – 0.075(1.5) = 3.7125
P(1.5) = –1.0625 e P'(1.5) = 3.7125
x1 = x0 –
)5.1('
)5.1(
P
P
= 1.5 –
(3.7125)
(-1,0625)
= 1.5 – (–0.2862) = 1.7862
| x1 – x0 | = | 1.7862 – 1.5 | = 0.2862 > ε
b5 = 1
b4 = –3.7 + 1(1.7862) = –1.9138
b3 = 7.4 – 1.9138(1.7862) = 3.98158
b2 = –10.8 + 3.98158(1.7862) = –3.68812
b1 = 10.8 – 3.68812(1.7862) = 4.21228
b0 = –6.8 + 4.21228(1.7862) = 0.72398
c5 = 1
c4 = –1.9138 + 1(1.7862) = –0.1276
c3 = 3.98158 – 0.1276(1.7862) = 3.75366
c2 = –3.68812 + 3.75366(1.7862) = 3.01667
c1 = 4.21228 + 3.01667(1.7862) = 9.60065
P(1.7862) = 0.72398 e P'(1.7862) = 9.60065
x2 = x1 –
(1.7862)
(1.7862)
P'
P
= 1.7862 –
(9.60065)
(0.72398)
= 1.7862 – (0.07541) = 1.71079
| x2 – x1 | = | 1.71079 – 1.7862 | = 0.07541 > ε
b5 = 1
b4 = –3.7 + 1(1.71079) = –1.98921
b3 = 7.4 – 1.98921(1.71079) = 3.99688
b2 = –10.8 + 3.99688(1.71079) = –3.96218
b1 = 10.8 – 3.96218(1.71079) = 4.02154
b0 = –6.8 + 4.02154(1.71079) = 0.08001
c5 = 1
c4 = –1.98921 + 1(1.71079) = –0.27842
c3 = 3.99688 – 0.27842(1.71079) = 3.52056
c2 = –3.96218 + 3.52056(1.71079) = 2.06077
c1 = 4.02154 + 2.06077(1.71079) = 7.54707
40
P(1.71079) = 0.08001 e P'(1.71079) = 7.54707
x3 = x2 –
(1.71079)
(1.71079)
P'
P
= 1.71079 –
(7.54707)
(0.08001)
= 1.71079 – (0.01060) = 1.70019
| x3 – x2 | = | 1.70019 – 1.71079 | = 0.0106 < ε
A raiz procurada é: 1.70019
Exercício 1: Calcular a raiz positiva do polinômio P(x) = 2x3
– 2x2
+ 3x – 1, com erro <= 10-4
, pelo
método de Newton para polinômios.
P'(x) = 6x2
– 4x + 3
A raiz procurada é: 0.39661
41
5 Sistemas Lineares
5.1 Introdução
Sistemas Lineares são sistemas de equações com m equações e n incógnitas formados por
equações lineares. Um sistema linear com m equações e n incógnitas é escrito usualmente na forma:
11 1 12 2 1 1
21 1 22 2 2 2
1 1 2 2
a x a x a x b
a x a x a x b
a x a x a x b
n n
n n
m m mn n m
+ + + =
+ + + =
+ + + =







L
L
L
................................................
onde
aij : coeficientes 1 ≤ i ≤ m, 1 ≤ j ≤ n
xj : incógnitas j = 1, 2, ..., n
bi : constantes i = 1, 2, ..., m
A resolução de um sistema linear consiste em calcular os valores de xj, j = 1, 2, ..., n, caso eles
existam, que satisfaçam as m equações simultaneamente.
Usando notação matricial, o sistema linear pode ser representado por AX = B, onde
M =
11 12 1 1
21 22 2 2
1 2
a a a b
a a a b
a a a b
n
n
m m mn n
L
L
L
.................................












é chamada matriz completa ou matriz aumentada do sistema.
A =
11 12 1
21 22 2
1 2
a a a
a a a
a a a
n
n
m m mn
L
L
L
............................












é a matriz dos coeficientes
X =
1
2
x
x
xn
M












é o vetor das incógnitas, e
B =
1
2
b
b
bm
M












é o vetor constante (termos independentes).
5.1.1 Classificação Quanto ao Número de Soluções
Um sistema linear pode ser classificado quanto ao número de soluções em:
42
• Compatível →
determinado (o sistema linear tem solução única)
indeterminado (o sistema linear admite infinitas soluções)



• Incompatível → (o sistema linear não admite solução).
Quando todos os termos independentes forem nulos, isto é, se bi = 0, i = 0, 1, ..., m, o sistema é
dito homogêneo. Todo sistema homogêneo é compatível, pois admitirá pelo menos a solução trivial (xj =
0, j = 0, 1, 2, ..., n).
5.2 Métodos Diretos (Algoritmos Diretos)
Um método é dito direto quando a solução exata
r
x do sistema linear é obtida realizando-se um
número finito de operações aritméticas. São exemplos conhecidos a Regra de Cramer, o Método da
Eliminação de Gauss (ou triangulação) e o Método de Jordan.
5.2.1 Regra de Cramer
Seja um sistema linear com número de equações igual ao número de incógnitas (um sistema n x
n), sendo D o determinante da matriz A, e Dx1, Dx2, Dx3, ..., Dxn os determinantes das matrizes obtidas
trocando em M, respectivamente, a coluna dos coeficientes de x1, x2, x3, ..., xn pela coluna dos termos
independentes, temos que:
O sistema S será compatível e terá solução única se, e somente se, D ≠≠≠≠ 0. Neste caso a única
solução de S é dada por:
x1 = xD
D
1
, x2 = xD
D
2
, x3 = xD
D
3
, ... , xn = xnD
D
A aplicação da Regra de Cramer exige o cálculo de n + 1 determinantes ( det A e det Ai, 1 ≤ i ≤ n);
para n = 20 o número total de operações efetuadas será 21 * 20! * 19 multiplicações mais um número
semelhante de adições. Assim, um computador que efetue cerca de 100 milhões de multiplicações por
segundo levaria 3 x 105
anos para efetuar as operações necessárias.
Com isso, a regra de Cramer é inviável em função do tempo de computação para sistemas muito
grandes.
5.2.1.1 Exemplos
Exemplo 1: Resolva o sistema abaixo pela Regra de Cramer:
1 2 3
1 2 3
1 2 3
1
2 0
2 0
x x x
x x x
x x x
+ + =
− + =
+ − =





Calculando os determinantes D, Dx1, Dx2 e Dx3 temos:
D = 7
121
112
111
=
−
− Dx1 = 1
120
110
111
−=
−
− Dx2 = 3
101
102
111
=
−
Dx3 = 5
021
012
111
=−
Então, x1 = xD
D
1
=
−1
7
, x2 = xD
D
2
=
3
7
, e x3 = xD
D
3
=
5
7
e a solução do sistema é
x : −






1
7
3
7
5
7
, , T
43
Exercício 1: Resolva o sistema abaixo pela Regra de Cramer:
2 0
2 3
3 2
1 2 3
1 2 3
1 2 3
x x x
x x x
x x x
+ − =
+ + =
− − = −





A solução deste sistema é x : ( 0, 1, 1)T
5.2.2 Método da Eliminação de Gauss
O método da eliminação de Gauss consiste em transformar o sistema linear original num outro
sistema linear equivalente com matriz dos coeficientes triangular superior, pois estes são de resolução
imediata. Dizemos que dois sistemas lineares são equivalentes quando possuem a mesma solução. O
determinante de sistemas lineares equivalentes são iguais.
Com (n − 1) passos o sistema linear AX = B é transformado num sistema triangular equivalente:
UX = C, o qual se resolve facilmente por substituições.
Vamos calcular a solução de AX = B em três etapas:
1ª etapa: Matriz Completa
Consiste em escrever a matriz completa ou aumentada do sistema linear original.
2ª etapa: Triangulação
Consiste em transformar a matriz A numa matriz triangular superior, mediante uma
seqüência de operações elementares nas linhas da matriz.
3ª etapa: Retro-substituição
Consiste no cálculo dos componentes x1, x2, ..., xn, solução de AX = B, a partir da solução
do último componente (xn), e então substituirmos regressivamente nas equações anteriores.
Teorema: Seja AX = B um sistema linear. Aplicando sobre as equações deste sistema uma
seqüência de operações elementares escolhidas entre:
i) Trocar a ordem de duas equações do sistema;
ii) Multiplicar uma equação do sistema por uma constante não nula;
iii) Adicionar um múltiplo de uma equação a uma outra equação;
obtemos um novo sistema UX = C e os sistemas AX = B e UX = C são equivalentes.
5.2.2.1 Resolução de Sistemas Triangulares
Seja o sistema linear AX = B, onde A: matriz n x n, triangular superior, com elementos da diagonal
diferentes de zero. Escrevendo as equações deste sistema, temos:
11 1 12 2 13 3 1 1
22 2 23 3 2 2
33 3 3 3
a x a x a x a x b
a x a x a x b
a x a x b
a x b
n n
n n
n n
nn n n
+ + + + =
+ + + =
+ + =
=









L
L
L
O M
Da última equação deste sistema temos:
44
xn = n
nn
b
a
xn-1 pode então ser obtido da penúltima equação:
xn-1 = n n n n
n n
b a x
a
− −
− −
−1 1
1 1
,
,
e assim sucessivamente obtém-se xn-2, ..., x2, e finalmente x1:
x1 = 1 12 2 13 3 1
11
b a x a x a x
a
n n− − − −L
5.2.2.2 Estratégias de Pivoteamento
O algoritmo para o método de eliminação de Gauss requer o cálculo dos multiplicadores:
mik = - ik
kk
a
a
i = k + 1, ..., n e k = 1, 2, 3, ..., n-1
a cada etapa k do processo. Sendo o coeficiente akk chamado de pivô.
O que acontece se o pivô for nulo? E se o pivô estiver próximo de zero?
Estes dois casos merecem atenção especial pois é impossível trabalhar com um pivô nulo. E
trabalhar com um pivô próximo de zero pode resultar em resultados totalmente imprecisos. Isto porque
em qualquer calculadora ou computador os cálculos são efetuados com precisão finita, e pivôs próximos
de zero são origem a multiplicadores bem maiores que a unidade que, por sua vez, origina uma ampliação
dos erros de arredondamento.
Para se contornar estes problemas deve-se adotar uma estratégia de pivoteamento, ou seja, adotar
um processo de escolha da linha e/ou coluna pivotal.
Esta estratégia consiste em:
i) no inicio da etapa k da fase de escalonamento, escolher para pivô o elemento de maior módulo
entre os coeficientes: aik, i = k, k + 1, ..., n;
ii) trocar as linhas k e i se for necessário.
5.2.2.3 Classificação do Sistema Triangular
Seja U um sistema triangular superior escalonado de m equações e n incógnitas, teremos as
seguintes possibilidades:
i) m = n → sistema compatível e determinado;
ii) m < n → sistema compatível e indeterminado.
Se durante o escalonamento surgir equações do tipo: 0x1 + 0x2 + ... + 0xn = bm, então:
i) Se bm = 0, então eliminaremos a equação e continuamos o escalonamento;
ii) Se bm ≠ 0, então conclui-se que o sistema é incompatível.
5.2.2.4 Exemplos
Exemplo 1: Resolver o sistema abaixo pelo método de Gauss.





−=−−
=−+
=++
23
02
32
321
321
321
xxx
xxx
xxx
45
1ª etapa: Matriz completa:
M =










−−−
−
2113
0112
3121
2ª etapa: Triangulação:
Iremos se referir as equações como: E1 (primeira equação), E2 (segunda equação) e assim por
diante. O componentes x indica o pivô.
EEE
EEE
122
133
2
3
−←
−←
→










−−−
−−−
11470
6330
3121
→ E3 = E3 −
7
3
E2 →










−−−
3300
6330
3121
3ª etapa: Retro-substituição:
Da terceira linha temos: 3x3 = 3 ⇒ x3 = 1
Substituindo x3 na segunda linha temos: −3x2 − 3(1) = −6 ⇒ x2 = 1
Substituindo x3 e x2 na primeira linha temos: 1x1 + 2(1) + 1(1) = 3 ⇒ x1 = 0
A solução deste sistema é x : ( 0, 1, 1)T
Exercício 1: Resolver o sistema abaixo pelo método de Gauss:
0 25 0 5 0 25
0 09 0 3 0 49
0 01 0 1 0 81
1 2 3
1 2 3
1 2 3
, , ,
, , ,
, , ,
x x x
x x x
x x x
+ + =
+ + =
+ + =





A solução deste sistema é x : ( 1, -2, 1)T
Exercício 2: Resolver o sistema abaixo pelo método de Gauss:





−=−+−
=−−
=−+
2141
2131
0210
321
321
321
xxx
xxx
xxx
5.2.3 Método de Jordan
Consiste em aplicar operações elementares sobre as equações do sistema linear dado até que se
obtenha um sistema diagonal equivalente.
5.2.4 Exemplos
Exemplo 1: Resolver o sistema linear pelo método de Jordan:
46
x x x
x x x
x x x
1 2 3
1 2 3
1 2 3
2 4
0
1
2
+ + =
− − =
− − = −





1ª etapa: Matriz completa:
M =
1 1 2 4
2 1 1 0
1 1 1 1
− −
− − −










2ª etapa: Diagonalização:
2 2 1
3 3 1
2E E E
E E E
← −
← −
→
1 1 2 4
0 3 5 8
0 2 3 5
− − −
− − −










→ E3 = E3 −
2
3
E2 →
1 1 2 4
0 3 5 8
0 0 1
3
1
3
− − −










→
1 1 2
2 2 3
1
3
15
E E E
E E E
← +
← +
→
1 0 1
3
4
3
0 3 0 3
0 0 1
3
1
3
− −










→
1 1 3
2
2
31 3
1
3
3
E E E
E E
E E
← −
← −
←
→
1 0 0 1
0 1 0 1
0 0 1 1










3ª etapa: Cálculo da solução do sistema:
Da primeira linha temos: x1 = 1
Na segunda linha temos: x2 = 1
Na terceira linha temos: x3 = 1
A solução deste sistema é x : ( 1, 1, 1)T
5.3 Fatoração LU-Crout-Cholesky-Doolitle
A base do método chamado Fatoração ou Decomposição LU, está apoiada na simplicidade de
resolução de sistemas triangulares.
Seja o sistema linear Ax = b
O processo de fatoração para resolução deste sistema consiste em decompor a matriz A dos
coeficientes em um produto de dois ou mais fatores e, em seguida, resolver uma sequência de sistemas
lineares que nos conduzirá a solução do sistema linear original.
Tal processo geral de eliminação é conhecida como método de Crout (ou Cholesky para o caso particular
de matrizes simétricas positivas definidas). A matriz A pode ser decomposta no produto A=LU, onde L é
uma matriz triangular inferior e U é uma matriz triangular superior, quando a matriz for não singular (Det
(A) ≠ 0). Além disso, se atribuirmos valores fixos aos elementos da diagonal, seja de L (lii = 1 no Método
de Doolitle) ou em U (uii = 1 no Método de Crout), esta decomposição será única.
Suponhamos que seja possível fatorar a matriz A dos coeficientes num produto de uma matriz
triangular inferior com diagonal unitária L e uma matriz triangular superior U, isto é:
47
A = LU
Nestas condições, o sistema Ax = b pode ser reescrito na forma LUx = b, o que permite o
desmembramento em dois sistemas triangulares
Ly = b e Ux = y
Resolvendo o primeiro sistema, calculamos y que, usado no segundo sistema, fornecerá o vetor
procurado x.
Dessa maneira, conhecidas L e U, o sistema será resolvido com 2n2
operações (dois sistemas
triangulares), o que representa um ganho substancial comparado com as
3
2 3
n
operações do método da
eliminação de Gauss.
5.3.1 Cálculo dos Fatores L e U
Os fatores L e U podem ser obtidos através de fórmulas para os elementos lij e uij, ou então, podem
ser construídos usando a idéia básica do método da Eliminação de Gauss.
Veremos a seguir como obter L e U através do processo de Gauss.
Dada uma matriz quadrada A de ordem n, seja Ak a matriz constituída das primeiras k linhas e
colunas de A. Suponha que det(Ak) ≠ 0 para k = 1, 2, ..., (n – 1). Então, existe uma única matriz triangular
inferior L = (mij), com mii = 1, 1 ≤ i ≤ n, e uma única matriz truangular superior U = (uij) tais que LU = A.
Ainda mais, det(A) = u11u22...unn.
Para a solução de Ax = b, pode-se decompor A segundo o Método de Crout, da seguinte maneira:




















=










100
10
1
0
00
23
1312
333231
2221
11
3
2
1
333231
232221
131211
u
uu
lll
ll
l
b
b
b
aaa
aaa
aaa
M
M
M
tal que A = L.U. Então, o sistema torna-se L.U.x = b.
Fazendo U.x = y, resolve-se primeiro L.y = b e depois U.x =y.
Para um sistema 3x3 podemos escrever:




















=










3
2
1
23
1312
333231
2221
11
3
2
1
333231
232221
131211
100
10
1
0
00
y
y
y
u
uu
lll
ll
l
b
b
b
aaa
aaa
aaa
M
M
M
M
M
M
Esta multiplicação de matrizes pode ser usada para definir os valores de
lij,
uij e iy em termos dos
valores
aij .
l a11 11=
l a21 21= u a l12 12 11= /
l a31 31= u a l13 13 11= /
1111 /lby =
l a l u22 22 21 12= −
12313232 ulal −=
48
2212122 /)( lclby −=
l a l u l u33 33 31 13 32 23= − −
3323213133 /)( lclclby −−=
Note que o cálculo de “y” pode ser feito da mesma forma que o cálculo de u.
A sequência de operações é :
1). Calcular a primeira coluna de L, calcular a primeira linha de U e y1;
2). Calcular a segunda coluna de L, calcular a segunda linha de U e y2;
e assim sucessivamente.
Os valores de x são obtidos por substituição sucessiva a partir de y (U.x = y)
33 yx =
32322 xuyx −=
21231311 xuxuyx −−=
Note que, o vetor c também pode ser obtido do sistema parcial L.y = b por substituições
sucessivas.
Sugere-se usar o processo "tipo escada" para armazenar L e U na mesma área de memória, o que
torna o processo mais eficiente,










=










3
2
1
333231
232221
131211
3
2
1
333231
232221
131211
y
y
y
lll
ull
uul
b
b
b
aaa
aaa
aaa
M
M
M
M
M
M
De uma forma geral, para sistemas de ordem n:
- Operações com o primeiro pivô: k = 1
li1 = ai1 i = 1,2,3,...,n
u a / l1j 1j 11=
j = 2,3,...,n+1
- Operações com pivô genérico: k = 2,3,...,n
i k (i = k,k+1,...,n)
j > k (j = k+1,...,n+1)
Exemplo 1: Resolver o sistema linear a seguir usando a fatoração LU:





=+−
=−+
=−+
02
3232
22
321
321
321
xxx
xxx
xxx
Seja A =










−
−
−
121
232
121
Calculando os mij e uij, usando o processo de Gauss sem estratégia de pivoteamento parcial. Para
49
triangular A, temos:
Etapa 1:
Pivô = )0(
11a = 1
Multiplicadores: m21 = )0(
11
)0(
21
a
a
=
1
2
= 2 m31 = )0(
11
)0(
31
a
a
=
1
1
= 1
Então:
133
122
11
2
EEE
EEE
EE
−←
−←
←
→ A(1)
=










−
−
−
240
010
121
Uma vez que os elementos )1(
21a e )1(
31a são nulos, podemos guardar os multiplicadores nestas
posições, então:
A(1)
=










−
−
−
241
012
121
Etapa 2:
Pivô = )1(
22a = –1
Multiplicadores: m32 = )1(
22
)1(
32
a
a
=
1
4
−
−
= 4
Então:
233
22
11
4EEE
EE
EE
−←
←
←
→ A(2)
=










−
−
200
010
121
A(2)
=










−
−
241
012
121
Os fatores L e U são:
L =










141
012
001
e U =










−
−
200
010
121
Para resolvermos o sistema Ax = (2, 3, 0)T
, resolvemos Ly = b
50










141
012
001
.










3
2
1
y
y
y
=










0
3
2
ou





=++
=+
=
04
32
2
321
21
1
yy
yy
y
y
⇒ y1 = 2; y2 = –1; y3 = 2
y = (2, –1, 2)T
e, com estes valores, calculamos x através de Ux = y










−
−
200
010
121
.










3
2
1
x
x
x
=










−
2
1
2
ou





=
−=−
=−+
22
1
22
3
2
321
x
x
xxx
⇒ x3 = 1; x2 = 1; x1 = 1
A solução do sistema é x = (1, 1, 1)T
Exercício 1: Resolver o sistema linear a seguir usando a fatoração LU:





=++
=++
=++
323
22
142
321
321
321
4
3
xxx
xxx
xxx
A solução do sistema é x = (–3, 5, 0)T
Exercício 2: Resolver o sistema linear a seguir usando a fatoração LU:
x x x
x x x
x x x
1 2 3
1 2 3
1 2 3
2 4
0
1
2
+ + =
− − =
− − = −





A solução do sistema é x = (1, 1, 1)T
5.4 Métodos Iterativos (Algoritmos Iterativos)
5.4.1 Método de Gauss-Jacobi ( Algébrico )
Seja o sistema abaixo:
11 1 12 2 1 1
21 1 22 2 2 2
1 1 2 2
a x a x a x b
a x a x a x b
a x a x a x b
n n
n n
n n nn n n
+ + + =
+ + + =
+ + + =
...
...
...
...
Pode-se afirmar que o mesmo é convergente, se o sistema estiver na forma diagonalmente
dominante, isto é:
51
11 21 31 1
22 12 32 2
1 2 1
a a a a
a a a a
a a a a
n
n
nn n n n n
≥ + + +
≥ + + +
≥ + + + −
...
...
...
...
ou
aaaa
aaaa
aaaa
nnnnnn
n
n
121
2232122
1131211
...
...
...
...
−
+++≥
+++≥
+++≥
Então, isola-se em cada uma das equações ordenadamente, uma das incógnitas.
1
1
11
1 12 2
0
13 3
0
1
0
2
1
22
2 21 1
0
23 3
0
2
0
1
1 1
0
2 2
0
1 1
0
1
1
1
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ... )
( ... )
...
( ... )
x
a
b a x a x a x
x
a
b a x a x a x
x
a
b a x a x a x
n n
n n
n
nn
n n n nn n
= − − − −
= − − − −
= − − − − − −
onde, 1
0
2
0 0( ) ( ) ( )
, ,...,x x xn
são as atribuições inicial do método.
Condições de Parada:
Se para todo erroxx
j
n
j
n
≤−
− )1()(
, então x
j
n
)(
são as soluções do sistema.
5.4.1.1 Exemplos
Exemplo 1: Resolver por Gauss-Jacobi, com 4 decimais com arredondamento e erro menor ou igual a
0,01 o sistema abaixo:
x + 8y – z = 16
6x – y + z = 7
x + y+ 5z = 18
a) Verificação da convergência:
6x – y + z = 7
x + 8y – z = 16
x + y + 5z = 18
b) Isolamento das incógnitas:
x =
6
1
( 7 + y – z )
y =
8
1
( 16 – x + z )
z =
5
1
( 18 – x – y )
c) Atribuição inicial:
x(0)
= 0 y(0)
=0 z(0)
=0
d) Iterações:
x(1)
=
6
1
( 7 + y(0)
– z(0)
) =
6
1
( 7 + 0 – 0 ) = 1,1667
y(1)
=
8
1
( 16 – x(0)
+ z(0)
) =
8
1
( 16 - 0 + 0 ) = 2
52
z(1)
=
5
1
( 18 – x(0)
– y(0)
) =
5
1
( 18 – 0 – 0 ) = 3,6
x(2)
=
6
1
( 7 + 2 – 3,6 ) = 0,9
y(2)
=
8
1
( 16 – 1,1667 + 3,6 ) = 2,3042
z(2)
=
5
1
( 18 – 1,1667 – 2 ) = 2,9667
x(3)
=
6
1
( 7 + 2,3042 – 2,9667 ) = 1,0562
y(3)
=
8
1
( 16 – 0,9 + 2,9667 ) = 2,2583
z(3)
=
5
1
( 18 – 0,9 – 2,3042 ) = 2,9592
x(4)
=
6
1
( 7 + 2,2583 – 2,9592 ) = 1,0498
y(4)
=
8
1
( 16 – 1,0562 + 2,9592 ) = 2,2379
z(4)
=
5
1
( 18 – 1,0562 – 2,2583 ) = 2,9371
x(5)
=
6
1
( 7 + 2,2379 – 2,9371 ) = 1,0501 | x(5)
- x(4)
| = 0,0003 < erro
y(5)
=
8
1
( 16 - 1,0498 + 2,9371 ) = 2,2359 | y(5)
- y(4)
| = 0,002 < erro
z(5)
=
5
1
( 18 – 1,0498 – 2,2379 ) = 2,9425 | z(5)
- z(4)
| = 0,0054 < erro
A solução deste sistema é: (1,0501; 2,2359; 2,9425)T
Exercício 1: Dado o sistema, pede-se sua solução por Gauss-Jacobi, com 4 decimais com
arredondamento e erro menor ou igual a 0,02.
10x + y + z = 12
x + 5y+ 9z = 15
2x +8y – 4z = 6
A solução deste sistema é: (0,9975; 1,0051; 0,9916)T
5.4.2 Método de Gauss-Jacobi ( Matricial )
Baseado no algoritmo anterior, o método consiste na transformação do algoritmo em um sistema de
matriz. Portanto, no algoritmo:
i
k
ii
i ij j
k
j
j i
n
x
a
b a x
( ) ( )
( )= −
−
=
≠
∑
1 1
1
a mesma situação pode ser escrita na forma:
53
11 1 1 12 2
1
13 3
1
1
1
22 2 2 21 1
1
23 3
1
2
1
1 1
1
2 2
1
1 1
1
a x b a x a x a x
a x b a x a x a x
a x b a x a x a x
k k k
n n
k
k k k
n n
k
nn n
k
n n
k
n
k
nn n
k
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ... )
( ... )
...
( ... )
= − − − −
= − − − −
= − − − −
− − −
− − −
− −
− −
−
Sendo A a matriz dos coeficientes, onde A = D + I + S, no qual D é a matriz diagonal, I a matriz
inferior e S a matriz superior, a expressão anterior poderá ser reescrita na forma:
D X B S I X
k k( ) ( )
( )= − + −1
Multiplicando ambos os termos pela matriz inversa da diagonal,
BDXISDX
XISDBDXDD
kk
kk
1)1(1)(
)1(11)(1
)(
)(
−−−
−−−−
+−=∴
∴−=
+
+
EXJX
kk
+=
− )1()(
onde
J D S I
E D B
= −
=
−
−
+1
1
( )
5.4.2.1 Exemplos
Exemplo 1: Seja o sistema abaixo:
x + y – 5z = -6
4x – y + z = 19
x + 3y – z = 14
obter a sua solução por Gauss-Jacobi Matricial com 3 decimais com arredondamento e erro menor ou
igual a 0,05. Admitir solução inicial nula.
a) Verificação da convergência:
4x – y + z = 19
x + 3y – z = 14
x + y – 5z = -6
b) Obtenção do Algoritmo:










=
011
001
000
I
,










−
−
=
000
100
110
S
,










−
=
500
030
004
D
,










−
=
6
14
19
B
,












−
=
−
5
100
0
3
10
00
4
1
1
D
Então,
54












−
−
=










−
−
•












−
−
=
0
5
1
5
1
3
10
3
1
4
1
4
10
011
101
110
5
100
0
3
10
00
4
1
J












=










−
•












−
=
5
6
3
14
4
19
6
14
19
5
100
0
3
10
00
4
1
E
Então,












+•












−
−
=
−
5
6
3
14
4
19
0
5
1
5
1
3
10
3
1
4
1
4
10
)1()(
XX
kk
c) Atribuição inicial:










=
0
0
0
)0(
X
d) Iterações:










=∴










=∴










=∴










=∴










=
002,3
995,3
031,5
934,2
057,4
951,4
020,3
822,3
850,4
083,3
483,3
617,5
200,1
667,4
750,4
)5()4()3()2()1(
XXXXX
∴ =










( )
,
,
,
6
4 998
3 991
3 005
X
( ) ( )
,
,
,
6 5
0 033
0 004
0 003
X X erro− =










<
A solução deste sistema é: (4,998; 3,991; 3,005)T
Exercício 1: Dado o sistema abaixo:
5x – y = 13
2x + 4y = 14
obter a solução por Gaus-Jacobi Matricial com 4 decimais com arredondamento e erro menor ou igual a
0,005. Admitir solução inicial nula.
A solução deste sistema é: (3,0004; 1,9985)T
5.4.3 Método de Gauss-Seidel ( Algébrico )
Derivado do método de Gauss-Jacobi, este método utiliza a cada iteração os valores já prontos na
própria iteração, para tentar assegurar convergência mais rápida, ou seja,
55
)...(
1
...
)...(
1
)...(
1
)...(
1
)(
11
)(
33
)(
22
)(
11
)(
)1(
3
)1(
434
)(
232
)(
1313
33
)(
3
)1(
2
)1(
424
)1(
323
)(
1212
22
)(
2
)1(
1
)1(
414
)1(
313
)1(
2121
11
)(
1
xaxaxaxab
a
x
xaxaxaxab
a
x
xaxaxaxab
a
x
xaxaxaxab
a
x
k
nnn
k
n
k
n
k
nn
nn
k
n
k
nn
kkkk
k
nn
kkkk
k
nn
kkkk
−−
−−
−−−
−−−−
−−−−−=
−−−−−=
−−−−−=
−−−−−=
Portanto, o algoritmo do método pode ser expresso por:
i
k
ii
i ij j
j
j i
n
x
a
b a x
k i j
k i j
( )
(
( )
( )
)= −
→ >
− → <=
≠
∑
1
11
5.4.3.1 Exemplos
Exemplo 1: Resolver por Gauss-Seidel, com 4 decimais com arredondamento e erro menor ou igual a
0,005 o sistema abaixo.
x + 8y – z = 16
6x – y + z = 7
x + y+ 5z = 18
a) Verificação da convergência:
6x – y + z = 7
x + 8y – z = 16
x + y + 5z = 18
b) Isolamento das incógnitas:
x =
6
1
( 7 + y – z )
y =
8
1
( 16 – x + z )
z =
5
1
( 18 – x – y )
c) Atribuição inicial:
x(0)
= 0 y(0)
=0 z(0)
=0
d) Iterações:
x(1)
=
6
1
( 7 + 0 – 0 ) = 1,1667
y(1)
=
8
1
( 16 – 1,1667 + 0 ) = 1,8542
z(1)
=
5
1
( 18 – 1,1667 – 1,8542 ) = 2,9958
x(2)
=
6
1
( 7 + 1,8542 – 2,9958 ) = 0,9764
56
y(2)
=
8
1
( 16 - 0,9764 + 2,9958 ) = 2,2524
z(2)
=
5
1
( 18 – 0,9764 – 2,2524 ) =2,9542
x(3)
=
6
1
( 7 + 2,2524 – 2,9542 ) = 1,0497
y(3)
=
8
1
( 16 - 1,0497 + 2,9542 ) = 2,2381
z(3)
=
5
1
( 18 – 1,0497 – 2,2381 ) = 2,9424
x(4)
=
6
1
( 7 + 2,2381 – 2,9424 ) = 1,0493 | x(4)
- x(3)
| = 0,0004 < erro
y(4)
=
8
1
( 16 - 1,0493 + 2,9424 ) = 2,2366 | y(4)
- y(3)
| = 0,0015 < erro
z(4)
=
5
1
( 18 – 1,0493 – 2,2366 ) = 2,9428 | z(4)
- z(3)
| = 0,0004 < erro
A solução deste sistema é: (1,0493; 2,2366; 2,9428)T
Exercício 1: Resolver por Gauss-Seidel, com 4 decimais com arredondamento e erro menor ou igual a
0,01 o sistema abaixo.
7x + y – z = 13
x + 8y + z = 30
2x – y + 5z = 21
A solução deste sistema é: (2,0001; 3,0003; 4,0000)T
5.4.4 Método de Gauss-Seidel ( Matricial )
Seja o sistema abaixo,
11 1 1 12 2
1
13 3
1
1
1
22 2 2 21 1 23 3
1
2
1
1 1 2 2 1 1
a x b a x a x a x
a x b a x a x a x
a x b a x a x a x
k k k
n n
k
k k k
n n
k
nn n
k
n n
k
n
k
nn n
k
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
...
...
...
...
= − − − −
= − − − −
= − − − −
− − −
− −
− −
que pode ser representado na forma matricial:
D X B I X S X D I X B S X
k k k k k( ) ( ) ( ) ( ) ( )
( )= − − ∴ + = −
− −1 1
Multiplicando ambos os membros pela inversa de ( D + I ), temos:
XSIDBIDXIDID
kk )1(11)(1
)()()()(
−−−−
+−+=++
BIDXSIDX
kk 1)1(1)(
)()(
−−−
+++−=
57
FXGX
kk
+=
− )1()(
onde,
G D I S
F D I B
= − +
= +
−
−
( )
( )
1
1
5.4.4.1 Exemplos
Exemplo 1: Dado o sistema abaixo,
x + 6y = -21
5x – y = 19
obter suas soluções por Gauss-Seidel Matricial com 3 decimais com arredondamento e erro inferior ou igual a
0,005. Admitir nula a solução inicial.
a) Verificação da convergência:
5x – y = 19
x + 6y = -21
b) Obtenção do Algoritmo:






=
60
05
D , 





=
01
00
I , 




 −
=
00
10
S , 





−
=
21
19
B
Então,








−
=





−
•








−
=








−
=




 −
•








−
−
=
15
62
5
19
21
19
6
1
30
1
0
5
1
30
10
5
10
00
10
6
1
30
1
0
5
1
F
G
Logo,








−
+•








−
=
−
15
62
5
19
30
10
5
10 )1()(
XX
kk
c) Atribuição inicial:






=
0
0)0(
X
d) Iterações:






−
=∴





−
=∴





−
=∴





−
=
000,4
000,3
000,4
001,3
996,3
973,2
133,4
800,3 )4()3()2()1(
XXXX
( ) ( ) ,
,
4 3 0 001
0 000X X erro− =





 <
58
A solução deste sistema é: (3; -4)T
Exercício 1: Dado o sistema abaixo:
5x – y = 13
2x + 4y = 14
obter a solução por Gaus-Seidel Matricial com 4 decimais com arredondamento e erro menor ou igual a
0,005. Admitir solução inicial nula.
A solução aproximada deste sistema é: (3,0004; 1,9998)T
5.4.5 Segunda Abordagem da Fórmula Matricial do Método Gauss-Seidel
Decompõe-se a matriz de coeficientes A em:
UDLA ++=
Onde:
L – Matriz Triangular Inferior
D – Matriz Diagonal
U – Matriz Triangular Superior
















=
















=
















=
−
− 0000
000
00
0
000
000
000
000
0
00
000
0000
1
223
11312
33
22
11
121
3231
21
L
OMMM
ML
L
L
L
MOMMM
L
L
L
L
MOMMM
L
L
L
nn
n
n
nnnnnn
a
aa
aaa
U
d
d
d
d
D
aaa
aa
a
L
)(1)1(11)1(
111
)(
)(
kkk
xUDxLDbDx
xUDxLDbDx
xULbxD
bxUxDxL
bxUDL
−+−−+
−−−
−−=
−−=
+−=
=++
=++
59
5.4.5.1 Interpretação Geométrica do Caso 22×
Considere o Sistema Linear:
33
3
21
21
−=−
=+
xx
xx
O esquema iterativo utilizando o Método de Gauss-Seidel é dado por:
)33(
3
1
)3(
1
1
)1(
1
)1(
2
)(
2
)1(
1
++
+
+=
−=
kk
kk
xx
xx
Para k=0 e T
x ]00[
)0(
= :
2
3
)1(
2
)1(
1
=
=
x
x
Para k=1 e T
x ]23[
)1(
= :
3
4
1
)2(
2
)2(
1
=
=
x
x
Para k=2 e T
x ]
3
41[
)2(
= :
9
14
3
5
)3(
2
)3(
1
=
=
x
x
A solução exata é dada por: T
x ]
2
3
2
3[= .
Esse processo iterativo até à convergência pode ser interpretado geométricamente num grafico com a
componente 1x na abscissa e a componente 2x na ordenada.
-5 -4 -3 -2 -1 0 1 2 3 4 5
-2
-1
0
1
2
3
4
5
6
7
8
x2
x1(0,0) (0,3)
(3,2)(1,2)
(1,4/3)
(4/3,5/3)
x1+x2=3
x1-3x2=-3
60
Observação 1: Verifica-se pelo gráfico acima que a seqüência
)(o
x ,
)1(
x ,
)2(
x , ......,
)(k
x está convergindo
para a solução exata T
x ]
2
3
2
3[= .
Observação 2: A sequência gerado pelo Método de Gauss-Seidel depende fortemente da disposição das
equações. Esta observação pode ser melhor entendida modificando a ordem das equações do exemplo
anterior.
Considere o mesmo Sistema Linear anterior, porém modificando a ordem das equações:
3
33
21
21
=+
−=−
xx
xx
O esquema iterativo utilizando o Método de Gauss-Seidel é dado por:
)3(
)33(
)1(
1
)1(
2
)(
2
)1(
1
++
+
−=
+−=
kk
kk
xx
xx
Para k=0 e T
x ]00[
)0(
= :
6
3
)1(
2
)1(
1
−=
−=
x
x
Para k=1 e T
x ]63[
)1(
−−= :
12
15
)1(
2
)1(
1
−=
=
x
x
5.4.5.2 Estudo da Convergência do Método de Gauss-Seidel
Existem dois critérios de suficiência para a convergência do Método de Gauss-Seidel. O
critério de linhas e o critério de Sassenfeld. O critério de linhas é o mesmo da Método de Gauss-Jacobi.
-5 -4 -3 -2 -1 0 1 2 3 4 5
-2
-1
0
1
2
3
4
5
6
7
8
x
(0,0)
(0,-3)
(-3,6) ......(6,15)
x2
x1
x1+x2=3
x1-3x2= -3
61
Critério de Linhas
Seja o sistema linear bxA = , com A dimensão nn× e seja:
kk
n
kj
j
kj
k
a
a










=
∑
≠
=1
α
Se 1max
,1
<=
=
k
nk
αα , então o método Gauss-Seidel gera uma seqüência { })(k
x convergente para a solução
do sistema dado, independentemente da escolha da aproximação inicial
)0(
x .
A matriz que satisfizer o critério de linhas é chamada de diagonal dominante estrita.
5.4.5.3 Critério de Sassenfeld
Seja o sistema linear bxA = , com A dimensão nn× e seja:
11
1141312
1
.......
a
aaaa n++++
=β
e para nj ....,.........3,2= :
jj
jjjjjjjj
j
a
aaaaa 11112211 ..................... ++++++
=
+−− βββ
β
Define-se j
nj
ββ
,1
max
=
= .
Se 1<β , então o Método de Gauss-Seidel gera uma sequência convergente para a solução do sistema,
qualquer que seja o vetor inicial. Além disso, quanto menor for o valor de β mais rápida é a
convergência.
Exemplo: Verificar as condições de convergência do Método de Gauss-Seidel no sistema abaixo:
33
1
332
31
32
321
=+
=+−
=++
xx
xx
xxx
a) Critério de Linhas
12
2
31
1 >=
+
=α não satisfaz.
b) Critério de Sassenfeld
62
12
2
31
1 >=
+
=β não satisfaz.
Como a convergência do Método de Gauss-Seidel é fortemente dependente da posição das equações,
pode-se trocar a posição das equações.
Tentativa 1: Troca-se a primeira equação pela terceira equação.
332
1
33
321
32
31
=++
=+−
=+
xxx
xx
xx
a) Critério de Linhas
13
1
30
1 >=
+
=α não satisfaz.
b) Critério de Sassenfeld
13
1
30
1 >=
+
=β não satisfaz.
Tentativa 2: Troca-se a primeira coluna pela terceira coluna na equação anterior.
323
10
303
123
123
123
=++
=+−
=++
xxx
xxx
xxx
a) Critério de Linhas
133.0
3
1
1 <==α satisfaz.
1
1
1
2 ==α não satisfaz.
b) Critério de Sassenfeld
133.0
3
1
1 <==β satisfaz.
133.0
1
3
1
1
2 <=
⋅
=β satisfaz.
1
6
4
2
3
1
1
3
1
3
3 <=
⋅+⋅
=β satisfaz.
Com a última modificação o sistema passa a ser convergente para qualquer vetor inicial.
Modificações desse tipo são puramente acadêmicas e são difíceis de serem realizadas em sistemas reais.
Principalmente pelas dimensões dos problemas, resultando num grande esforço computacional, e das
incertezas quanto a sua eficiência.
Exemplo : Verifique a convergência do sistema abaixo pelo critério de linhas e Sassenfeld.
63
4
32
21
21
=+
=+
xx
xx
Critério de Linhas
1
2
1
2
1
=
=
α
α
Não satisfaz
Critério de Sassenfeld
2
1
1
2
1
1
2
1
2
1
=
×
=
=
β
β
Satisfaz
Exemplo : Verifique a convergência do sistema abaixo pelo critério de linhas e Sassenfeld.
5,22,03,01,0
0,12,02,01,0
6,21,02,02,0
2,01,01,05,0
4321
4321
4321
4321
−=+++
=++−−
−=−−+
=+−+
xxxx
xxxx
xxxx
xxxx
5.4.6 Método da Sobrerelaxação Sucessiva
)ˆ( )()1()()1( k
i
k
i
k
i
k
i xxwxx −+= ++
)(
1
ˆ )()1()1(
∑∑ ><
++
−−=
ij
k
jij
ij
k
jiji
ii
k
i xaxab
a
x
21 << w - Utilizado para aumentar a velocidade de convergência.
10 << w - Utilizado em sistemas com dificuldades de convergência pelo Método de gauss Seidel.
64
5.4.7 Condições Necessária e Suficiente para Convergência do Método de Gauss-Jacobi e
Gauss-Seidel
Teorema
Seja n
b ℜ∈ e n
NMA ℜ∈−= )( é não singular. Se M é não-singular e o raio espectral de
NM 1−
satisfaça 1)( 1
<−
NMρ , então o processo iterativo definido por bxNxM
kk
+=
+ )()1(
converge para
bAx 1−
= para qualquer vetor
)0(
x .
{ })(:max)( 11
NMNM −−
∈= λλλρ
Para o Método de Gauss-Jacobi:
)(
)(
)(
)(
)()1(
ULN
DM
xULbxD
xULbxD
bxUxDxL
bxUDL
kk
+−=
=
+−=
+−=
=++
=++
+
Para o Método de Gauss-Seildel:
UN
DLM
xUbxDL
xUbxDxL
bxUxDxL
bxUDL
kk
−=
+=
−=+
−=+
=++
=++
+
)(
)(
)(
)()1(
5.4.7.1 Comparação dos Métodos de Solução de Sistemas Lineares bxA =
Métodos Diretos:
1. Processos finitos (convergência para qualquer sistema não-singular);
2. Apresentam problemas com erros de arredondamento;
3. Utiliza-se técnicas de pivoteamento para amenizar os problemas de arredondamento;
4. O processo de triangularização destrói a esparsidade da matriz de coeficientes. Técnicas de
Esparsidade são utilizadas para amenizar o enchimento da matriz.
5. Para matrizes cheias a solução requer 3
n operações sem considerar o pivoteamento.
Métodos Iterativos:
65
1. Provavelmente mais eficientes para sistemas de grande porte, principalmente com a utilização de
computação de alto desempenho (vetorial e paralela);
2. Tem convergência assegurada apenas sob certas condições;
3. Conserva a esparsidade da matriz de coeficientes;
4. Os métodos de G-J e G-s requerem 2
2n operações por iterações;
5. Poucas vantagens adicionais são conseguidas em soluções para vetores independentes adicionais com
a matriz de coeficientes mantida constante, como no caso da fatoração LU;
6. Carregam menos erros de arredondamento no processo, tendo em vista que a convergência uma vez
assegurada independe da aproximação inicial. Somente os erros da última iteração afetam a solução.
66
6 Interpolação
6.1 Introdução
A interpolação é outra das técnicas bem antigas e básicas do cálculo numérico. Muitas funções são
conhecidas apenas em um conjunto finito e discreto de pontos de um intervalo [a, b], como, por exemplo,
a tabela abaixo que relaciona calor específico da água e temperatura:
Xi x0 x1 x2 x3 x4 x5 x6 x7
Temperatura (°C) 20 25 30 35 40 45 50 55
Calor específico 0.99907 0.99852 0.99826 0.99818 0.99828 0.99849 0.99878 0.99919
Tabela 1 - Calor específico da água.
A partir desses dados suponhamos que se queira calcular:
a) o calor específico da água a 32.5° C
b) a temperatura para a qual o calor específico é 0.99837.
A interpolação tem o objetivo de nos ajudar na resolução deste tipo de problema, ou em casos em
que possuímos um conjunto de valores obtidos através de alguns experimentos.
Interpolar uma função f(x) consiste em aproximar essa função por uma outra função g(x),
escolhida entre uma classe de funções definida a priori e que satisfaça algumas propriedades. A função
g(x) é então usada em substituição à função f(x).
A necessidade de se efetuar esta substituição surge em várias situações, como por exemplo:
a) quando são conhecidos somente os valores numéricos da função por um conjunto de pontos
(não dispondo de sua forma analítica) e é necessário calcular o valor da função em um ponto não tabelado
(como é o caso do exemplo anterior).
b) quando a função em estudo tem uma expressão tal que operações como a diferenciação e a
integração são difíceis (ou mesmo impossíveis) de serem realizadas. Neste caso, podemos procurar uma
outra função que seja uma aproximação da função dada e cujo manuseio seja bem mais simples.
As funções que substituem as funções dadas podem ser de tipos variados, tais como: polinomiais,
trigonométricas, exponenciais e logarítmicas. Nós iremos considerar apenas o estudo das funções
polinomiais.
6.1.1 Conceito de Interpolação
Seja a função y = f(x), dada pela tabela 1. Deseja-se determinar f x( ), sendo:
a) x ∈ (x0, x7) e x ≠ xi, i = 0, 1, 2, ..., 7
b) x ∉ (x0, x7)
Para resolver (a) tem-se que fazer uma interpolação. E, sendo assim, determina-se o polinômio
interpolador, que é uma aproximação da função tabelada. Por outro lado, para resolver (b), deve-se
realizar uma extrapolação.
Consideremos (n + 1) pontos distintos: x0, x1, x2, ..., xn, chamados nós da interpolação, e os
valores de f(x) nesses pontos: f(x0), f(x1), f(x2), ..., f(xn).
A forma de interpolação de f(x) que veremos a seguir consiste em se obter uma determinada
67
função g(x) tal que:
g(x0) = f(x0)
g(x1) = f(x1)
g(x2) = f(x2)
M M
g(xn) = f(xn)
Graficamente temos:
y
x0 x0 x1 x2 x3 x4 x5
g(x)
f(x)
(x0
, f(x0
))
(x1
, f(x1
))
(x2
, f(x2
))
(x3, f(x3))
(x4, f(x4))
(x5, f(x5))
Interpretação geométrica para n = 5
6.2 Interpolação Linear
6.2.1 Obtenção da Fórmula
Dados dois pontos distintos de uma função y = f(x) : (x0, y0) e (x1, y1), deseja-se calcular o valor de
y para um determinado valor de x entre x0 e x1, usando a interpolação polinomial.
O polinômio interpolador é uma unidade menor que o número de pontos conhecidos. Assim
sendo, o polinômio interpolador nesse caso terá grau 1, isto é,
P1(x) = a1x + a0
Para determiná-lo, os coeficientes a0 e a1 devem ser calculados de forma que tenha:
P1(x0) = f(x0) = y0
P1(x1) = f(x1) = y1
ou seja, basta resolver o sistema linear abaixo:
a x a y
a x a y
1 0 0 0
1 1 0 1
+ =
+ =



onde a1 e a0 são as incógnitas e
A
x
x=






0
1
1
1
é a matriz dos coeficientes.
O determinante da matriz A é diferente de zero, sempre que x0 ≠ x1, logo para pontos distintos o
sistema tem solução única.
O polinômio interpolador P1(x) = a1x + a0 tem como imagem geométrica uma reta, portanto
estaremos aproximando a função f(x) por uma reta que passa pelos dois pontos conhecidos (x0, y0) e (x1,
68
y1).
A figura abaixo mostra, geometricamente, os dois pontos, (x0, y0) e (x1, y1), e a reta que passa por
eles.
p1
(x)
x0 x1
y0
y1
0
6.2.2 Exemplos
Exemplo 1: Seja a função y = f(x) definida pelos pontos (0.00; 1.35) e (1.00; 2.94). Determinar
aproximadamente o valor de f(0.73).
P1(x) = a1x + a0 é o polinômio interpolador de 1° grau que passa pelos pontos dados. Então
teremos:
a) Pontos utilizados:
(0.00;1.35) e (1.00; 2.94)
b) Cálculo dos coeficientes:
P1(0) = a1 • 0 + a0 = 1.35 → a0 = 1.35
P1(1) = a1 • 1 + a0 = 2.94 → a1 = 1.59
c) Polinômio interpolador:
P1(x) = 1.59x + 1.35 (equação da reta que passa pelos pontos dados)
d) Resposta:
P1(0.73) = 1.59 • 0.73 + 1.35
P1(0.73) = 2.51
O resultado obtido acima está afetado por dois tipos de erros:
a) Erro de arredondamento (EA) - é cometido durante a execução das operações e no caso de um
resultado ser arredondado.
b) Erro de truncamento (ET) - é cometido quando a fórmula de interpolação a ser utilizada é
escolhida, pois a aproximação de uma função conhecida apenas através de dois pontos dados é feita por
um polinômio de 1° grau.
Exercício 1: Dada a função f(x) = 10x4
+ 2x + 1 com os valores de f(0.1) e f(0.2) determinar P1(0.15) e o
erro absoluto cometido.
Polinômio interpolador: P1(x) = 2.15x + 0.986
P1(0.15) = 1.3085
EA = −0.0034375
Exercício 2: Calcular o calor específico aproximado da água a 32,5° C, usando os valores da tabela 1.
Usando as temperaturas 30° C e 35° C.
69
Polinômio interpolador: P1(x) = −0.000016x + 0.99874
P1(32.5) = 0.99822
6.3 Interpolação Quadrática
6.3.1 Obtenção da Fórmula
Se conhecermos três pontos distintos de uma função, então o polinômio interpolador será:
P2(x) = a2x2
+ a1x + a0
O polinômio P2(x) é conhecido como função quadrática cuja imagem geométrica é uma parábola,
portanto, estaremos aproximando a função f(x) por uma parábola que passa pelos três pontos conhecidos
(x0, y0), (x1, y1) e (x2, y2).
Para determinarmos os valores de a2, a1 e a0 é necessário resolver o sistema:
a2 0
2
x + a1x0 + a0 = y0
a2 1
2
x + a1x1 + a0 = y1
a2 2
2
x + a1x2 + a0 = y2
onde a2, a1 e a0 são as incógnitas e os pontos (x0, y0), (x1, y1) e (x2, y2) são conhecidos.
A matriz dos coeficientes é:
V =
0
2
0
1
2
1
2
2
2
1
1
1
x x
x x
x x










Como os pontos são distintos, então o sistema terá solução única.
6.3.2 Exemplos
Exemplo 1: Utilizando os valores da função seno, dados pela tabela abaixo, determinar a função
quadrática que se aproxima de f(x) =
2
2
1
sen x
x +
, trabalhando com três casas decimais.
x sen(x) f(x)
0 0 0.000
π
6
1
2
0.328
π
4
2
2
0.560
a) Pontos utilizados:
( 0; 0 ) ( π/6; 0.328 ) ( π/4; 0.560 )
b) Cálculo dos coeficientes:
P2(x) = a2x2
+ a1x + a0
( ) ( )
( ) ( )




=++=
=++=
=++=
••
••
••
560.0)(
328.0)(
000)0(
0
4
1
4
2
2
4
2
0
6
1
6
2
2
6
2
01
2
22
aaaP
aaaP
aaaP
πππ
πππ
70
Da primeira linha temos que a0 = 0. Logo, o sistema passa a ser:



=+
=+
560.0785.0617.0
328.0524.0274.0
12
12
aa
aa
Resolvendo o sistema acima encontraremos a solução aproximada:
a2 = 0.333 a1 = 0.452 a0 = 0
c) Polinômio interpolador:
P2(x) = 0.333 2
x + 0.452x
Exemplo 2: Determinar o valor de f(0.2) e o erro absoluto ocasionado pela aplicação da interpolação
quadrática, no cálculo deste valor, usando os valores tabelados da função f(x) = x2
− 2x + 1. Utilizar duas
casas decimais.
x f(x)
0.5 0.25
0.3 0.49
0.1 0.81
a) Pontos utilizados:
( 0.5; 0.25 ) ( 0.3; 0.49 ) ( 0.1; 0.81 )
b) Cálculo dos coeficientes:
P2(x) = a2x2
+ a1x + a0





=++
=++
=++
81.01.001.0
49.03.009.0
25.05.025.0
012
012
012
aaa
aaa
aaa
Resolvendo o sistema pelo método de Gauss, vem:
a2 = 1.00 a1 = −2.00 a0 = 1.00
c) Polinômio interpolador:
P2(x) = x2
− 2x + 1
d) Resposta:
P2(0.2) = (0.2)2
− 2.(0.2) + 1
P2(0.2) = 0.64
Cálculo do erro absoluto:
EA = f(0.2) − P2(0.2)
EA = 0.64 − 0.64
EA = 0
Podemos observar que o polinômio interpolador é igual a função dada. Isto ocorre porque a função
dada é polinomial de 2° grau e, a partir de três pontos da função, consegue-se determiná-la sem erro.
Contudo, poderá existir o erro de arredondamento.
71
Exercício 1: Usando três pontos da Tabela 1, determinar o calor específico aproximado da água a 31° C
Pontos utilizados: (20; 0.99907), (30; 0.99826) e (40; 0.99828)
Polinômio interpolador: P2(x) = 0.00000415x2
− 0.0002885x + 1.00318
P2(31) = 0.99822
6.4 Interpolação de Lagrange
As interpolações vistas anteriormente são casos particulares da interpolação de Lagrange. Vamos
estudar agora o polinômio interpolador de grau menor ou igual a n, sendo dados n + 1 pontos distintos.
Teorema: Sejam (xi, yi), i = 0, 1, 2, ..., n, n + 1 pontos distintos, isto é, xi ≠ xj para i ≠ j. Existe um
único polinômio P(x) de grau menor ou igual a n, tal que P(xi) = yi, para todo i.
O polinômio P(x) pode ser escrito na forma:
Pn(x) = a0 + a1x + a2x2
+ ... + anxn
ou Pn(x) = i
i
i
n
a x=
∑
0
P(x) é, no máximo, de grau n, se an ≠ 0 e, para determiná-lo, deve-se conhecer os valores de a0, a1,
..., an. Como Pn(x) contém os pontos (xi, yi), i = 0, 1, ..., n, pode-se escrever que Pn(xi) = yi.
Com isso temos:
0 1 0 2 0
2
0 0
0 1 1 2 1
2
1 1
0 1 2
2
a a x a x a x y
a a x a x a x y
a a x a x a x y
n
n
n
n
n n n n
n
n
+ + + + =
+ + + + =
+ + + + =







...
...
................................................
...
Resolvendo o sistema acima, determina-se o polinômio Pn(x). Para provar que tal polinômio é
único, basta que se mostre que o determinante da matriz A, dos coeficientes das incógnitas do sistema, é
diferente de zero. A matriz A é:
A =
1
1
1
0 0
2
0
1 1
2
1
2
x x x
x x x
x x x
n
n
n n n
n
...
...
............................
...














Mas o determinante da matriz A é conhecido como determinante das potências ou de
Vandermonde e, da Álgebra Linear, sabe-se que seu valor é dado por:
det(A) = ( )i j
i j
x x−
>
∏ . Como xi ≠ xj para i ≠ j, vem que det(A) ≠ 0.
Logo, P(x) é único.
Exemplo: Sejam os valores: x0 = 1, x1 = 0, x2 = 3 e x3 = 2. Determinar: ( )i j
i j
x x−
>
∏ .
( )i j
i j
x x−
>
∏ = (x1 − x0) (x2 − x0) (x2 − x1) (x3 − x0) (x3 − x1) (x3 − x2) =
72
= (−1)(2)(3)(1)(2)(−1) = 12
Este valor é igual ao determinante da matriz:
1 1 1 1
1 0 0 0
1 3 9 27
1 2 4 8












6.4.1 Obtenção da Fórmula
Será mostrado, agora, a dedução da fórmula de interpolação de Lagrange.
Sejam x0, x1, x2, ..., xn, (n + 1) pontos distintos e yi = f(xi), i = 0, 1, ..., n.
Seja Pn(x) o polinômio de grau ≤ n que interpola f em x0, ..., xn. Podemos representar Pn(x) na
forma Pn(x) = y0L0(x) + y1L1(x) + ... + ynLn(x), onde os polinômios Lk(x) são de grau n. Para cada i,
queremos que a condição Pn(xi) = yi seja satisfeita, ou seja:
Pn(xi) = y0L0(xi) + y1L1(xi) + ... + ynLn(xi) = yi
A forma mais simples de se satisfazer esta condição é impor:
Lk(xi) =
0
1
se k i
se k i
≠
=



e, para isso, definimos Lk(x) por
Lk =
( )( )...( )( )...( )
( )( )...( )( )...( )
x x x x x x x x x x
x x x x x x x x x x
k k n
k k k k k k k n
− − − − −
− − − − −
− +
− +
0 1 1 1
0 1 1 1
Como o numerador de Lk(x) é um produto de n fatores da forma:
(x − xi), i = 0, 1, ..., n, i ≠ k, então Lk(x) é um polinômio de grau n e, assim, Pn(x) é um polinômio
de grau menor ou igual a n.
Além disso, para x = xi, i = 0, ..., n temos:
Pn(xi) = k k i
k
n
y L x( )
=
∑
0
= yiLi(xi) = yi
Então, a interpolação de Lagrange para o polinômio interpolador é:
Pn(x) = k k
k
n
y L x( )
=
∑
0
onde Lk(x) =
( )
( )
x x
x x
j
k jj
j k
n
−
−=
≠
∏0
73
Pn(x) = k
j
k jj
j k
n
k
n
y
x x
x x
•
−
−









=
≠
=
∏∑
( )
( )00
, é a fórmula da interpolação lagrangeana.
6.4.2 Exemplos:
Exemplo 1: No caso da interpolação linear, visto anteriormente, temos dois pontos distintos: (x0, f(x0)) e
(x1, f(x1)) com n igual a 1.
a) Pontos utilizados:
(0.00; 1.35) e (1.00; 2.94)
b) Cálculo dos coeficientes:
P1(x) = y0L0(x) + y1L1(x), onde
L0(x) =
( )
( )
x x
x x
−
−
1
0 1
L1(x) =
( )
( )
x x
x x
−
−
0
1 0
Assim, P1(x) = y0
( )
( )
x x
x x
−
−
1
0 1
+ y1
( )
( )
x x
x x
−
−
0
1 0
que é exatamente a equação da reta que passa por (x0, f(x0)) e (x1, f(x1)).
c) Polinômio interpolador:
P1(x) = 1.35
( )
( )
x −
−
1
0 1
+ 2.94
( )
( )
x −
−
0
1 0
= −1.35x + 1.35 + 2.94x = 1.59x + 1.35
que é a mesma expressão obtida no exemplo 1 de interpolação linear.
Exercício 1: Determinar o polinômio de interpolação de Lagrange para a função conhecida pelos pontos
tabelados abaixo e o resultado em P(0.5):
i xi yi
0 0 0
1 1 1
2 2 4
Resposta: P2(0.5) = (0.5)2
= 0.25
Exercício 2: Determinar o polinômio interpolador de Lagrange para a função conhecida pelos pontos da
tabela abaixo:
i xi yi
0 −1 4
1 0 1
2 2 1
3 3 16
Resposta: P3(x) = x3
− 4x + 1
74
6.5 Interpolação Parabólica Progressiva
Na interpolação parabólica progressiva precisamos de n + 1 pontos, onde n é o grau do polinômio
desejado. Em seguida, tomamos os pontos mais próximos, do ponto que queremos, na hora de montar a
tabela.
Polinômio de grau 0:
G0 →








CTE
grauPolinômio 0
P0(x) = a0
Polinômio de grau 1:
G1 →








CTE
grauPolinômio 0
+










0
1
xporpassando
grauPolinômio
P1(x) = a0 + a1.(x − x0)
Polinômio de grau 2:
G2 →








CTE
grauPolinômio 0
+










0
1
xporpassando
grauPolinômio
+










10
2
xporexporpassando
grauPolinômio
P2(x) = a0 + a1.(x − x0) + a2.(x − x0).(x − x1)
M
Polinômio de grau n:
Pn(x) = a0 + a1.(x − x0) + a2.(x − x0).(x − x1) + ... + an.(x − x0).(x − x1).(x − x2) ... (x − xn-1)
Impondo que Pn(x) passe por todos os n + 1 pontos da tabela, temos que:
Pn(x0) = f(x0)
Pn(x1) = f(x1)
Pn(x2) = f(x2)
M
Pn(xn) = f(xn)
Validade:
))( ( 00000 xfaxPxx ==∴=
xx
xPxf
a
xx
axf
axfxxaaxPxx
01
101
1
01
01
110110111
)())
))()(
((
( −
−
=∴
−
−
=∴=−+=∴=
75
))((
)()
)))(()()(
1202
212
22120220210222
(
(
xxxx
xPxf
axfxxxxaxxaaxPxx −−
−
=∴=−−+−+=∴=
…
))...((
)()
)))...((...)()(
10
1
10010
(
(
xxxx
xPxf
a
xfxxxxaxxaaxPxx
nnn
nnn
n
nnnnnnnnn
−
−
−
−−
−
=
∴=−−++−+=∴=
Exemplo 1: Dados os pares abaixo, determinar a expressão analítica destes mesmos:
xi −5 −3 1 2
f(xi) −8 −4 4 6
1ª Hipótese:
x x P x= ∴ = −0 0
8( )
2ª Hipótese:
x x a
f x P x
x x
P x x x= ∴ =
−
−
=
− +
− +
= ∴ = − + + = +1 1
1 0 1
1 0
1
4 8
3 5
2 8 2 5 2 2
( ) ( )
( ) ( )
3ª Hipótese:
x x a
f x P x
x x x x
P x x= ∴ =
−
− −
=
−
+ +
= ∴ = +2 2
2 1 2
2 0 2 1
2
4 4
1 5 1 3
0 2 2
( ) ( )
( )( ) ( )( )
( )
4ª Hipótese:
x x a
f x P x
x x x x x x
P x x= ∴ =
−
− − −
=
−
+ + −
= ∴ = +3 3
3 2 3
3 0 3 1 3 2
3
6 6
2 5 2 3 2 1
0 2 2
( ) ( )
( )( )( ) ( )( )( )
( )
Logo, a expressão é : P1(x) = 2x + 2
6.6 Interpolação de Newton com Diferenças Divididas
6.6.1 Diferenças Divididas
Seja f(x) uma função tabelada em n + 1 pontos distintos x0, x1, x2, ... xn. Definimos o operador
diferenças divididas por:
f[x0] = f(x0)
f[x0,x1] =
01
01 ][][
xx
xfxf
−
−
=
)(
)()(
01
01
xx
xfxf
−
−
f[x0,x1,x2] =
02
1021 ],[],[
xx
xxfxxf
−
−
M
f[x0,x1,x2, ... xn] =
0
11021 ]...,[]...,[
xx
xxxfxxxf
n
nn
−
− −
76
Dizemos que f[x0,x1,x2,...xk] é a diferença dividida de ordem k da função f(x) sobre os k + 1 pontos.
Conhecidos os valores que f(x) assume nos pontos distintos x0, x1, x2, ... xn, podemos construir a
tabela:
xi Ordem 0 Ordem 1 Ordem 2 .... Ordem n
x0 f[x0] f[x0,x1] f[x0,x1,x2] f[x0,x1,x2 ... xn]
x1 f[x1] f[x1,x2] f[x1,x2,x3] −
x2 f[x2] f[x2,x3] f[x2,x3,x4] −
... ... ... ... ...
xn-2 f[xn-2] f[xn-2,xn-1] f[xn-2,xn-1,xn] −
xn-1 f[xn-1] f[xn-1,xn] − −
xn f[xn] − − −
6.6.2 Propriedade do Operador Diferenças Divididas
Pode-se provar que as diferenças divididas satisfazem a propriedade de ser simétrico nos
argumentos.
Exemplo:
f[x0,x1] =
01
01 ][][
xx
xfxf
−
−
=
10
10 ][][
xx
xfxf
−
−
= f[x1,x0]
Pode-se provar que cada coeficiente an do polinômio interpolador de Newton corresponde ao
operador de grau n de diferenças divididas:
f[x0] = a0
f[x0,x1] = a1
f[x0,x1,x2] = a2
M
f[x0,x1,x2,...,xn] = an
Pn(x) = a0 + a1.(x − x0) + a2.(x − x0).(x − x1) + ... + an.(x − x0).(x − x1).(x − x2) ... (x − xn-1)
Pn(x) = f[x0] + f[x0,x1] . (x − x0) + f[x0,x1,x2] . (x − x0) . (x − x1) + ...
+ f[x0,x1,x2, ... xn] . (x − x0) . (x − x1) . (x − x2) ... (x − xn-1)
6.6.3 Exemplos
Exemplo 1: Obter f(0.5) usando um polinômio interpolador de Newton do segundo grau (3 pontos).
Considere a seguinte tabela:
xi −1 0 1 2 3
F(xi) 2 1 2 5 10
a) Cálculo dos coeficientes de Pn(x):
X Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4
x0 −1 2 −1 1 0 0
x1 0 1 1 1 0
x2 1 2 3 1
x3 2 5 5
x4 3 10
77
onde:
f[x0] = f(x0) = 2
f[x1] = f(x1) = 1
f[x2] = f(x2) = 2
f[x3] = f(x3) = 5
f[x4] = f(x4) = 10
f[x0,x1] =
01
01 ][][
xx
xfxf
−
−
=
)(
)()(
01
01
xx
xfxf
−
−
=
1 2
0 1
−
+
= −1
f[x1,x2] =
f x f x
x x
[ ] [ ]2 1
2 1
−
−
=
2 1
1 0
−
−
= 1
f[x2,x3] =
xx
xfxf
23
23 ][][
−
−
=
12
25
−
−
= 3
f[x3,x4] =
xx
xfxf
34
34 ][][
−
−
=
23
510
−
−
= 5
f[x0,x1,x2] =
02
1021 ],[],[
xx
xxfxxf
−
−
=
1 1
1 1
+
+
= 1
f[x1,x2,x3] =
f x x f x x
x x
[ , ] [ , ]2 3 1 2
3 1
−
−
=
3 1
2 0
−
−
= 1
f[x2,x3,x4] =
xx
xxfxxf
24
3243 ],[],[
−
−
=
13
35
−
−
= 1
f[x0,x1,x2,x3] =
f x x x f x x x
x x
[ , , ] [ , , ]1 2 3 0 1 2
3 0
−
−
=
1 1
2 1
−
+
= 0
f[x1,x2,x3, x4] =
f x x x f x x x
x x
[ , , ] [ , , ]2 3 4 1 2 3
4 1
−
−
=
1 1
3 0
−
−
= 0
f[x0,x1,x2,x3,x4] =
f x x x x f x x x x
x x
[ , , , ] [ , , , ]1 2 3 4 0 1 2 3
4 0
−
−
=
0 0
3 1
−
+
= 0
b) Polinômio interpolador:
P2(x) = 2 − 1(x + 1) + 1(x + 1)(x − 0)
P2(x) = 2 − (x + 1) + x (x + 1)
P2(x) = 2 − x − 1 + x2
+ x
P2(x) = x2
+ 1
c) Resposta:
P2(0.5) = (0.5)2
+ 1 = 1.25
Exemplo 2: Obter f(40) usando um polinômio interpolador de Newton de grau 3 (4 pontos). Considere a
seguinte tabela:
xi 30 35 45 50 55
F(xi) 0.5 0.574 0.707 0.766 0.819
78
a) Cálculo dos coeficientes de Pn(x):
Pegar os pontos mais próximos do ponto que desejamos:
X Ordem 0 Ordem 1 Ordem 2 Ordem 3
x0 30 0.5 0.0148 −0.0001 0
x1 35 0.574 0.0133 −0.0001
x2 45 0.707 0.0118
x3 50 0.766
Como o polinômio obtido não terá grau 3, devemos escolher um novo conjunto de pontos:
X Ordem 0 Ordem 1 Ordem 2 Ordem 3
x0 30 0.5 0.0148 −0.0001 −0.0000002
x1 35 0.574 0.0133 −0.000105
x2 45 0.707 0.0112
x3 55 0.819
b) Polinômio interpolador:
P3(x) = 0.5 + 0.0148(x − 30) − 0.0001(x − 30)(x − 35) − 0.0000002(x − 30)(x − 35)(x − 45)
c) Resposta:
P3(40) = 0.5 + 0.0148(10) − 0.0001(10)(5) − 0.0000002(10)(5)(−5)
P3(40) = 0.64305
Exercício 1: Obter f(0.47) usando um polinômio interpolador de Newton do segundo grau (3 pontos).
Considere a seguinte tabela:
xi 0.2 0.34 0.4 0.52 0.6 0.72
F(xi) 0.16 0.22 0.27 0.29 0.32 0.37
Polinômio interpolador: P2(x) = 0.27 + 0.16667(x − 0.4) + 1.041665(x − 0.4)(x − 0.52)
P2(0.47) = 0.27802
Exercício 2: Obter f(0.5) usando um polinômio interpolador de Newton do quarto grau (5 pontos).
Considere a seguinte tabela:
xi −1 0 1 2 3
F(xi) 1 1 0 −1 −2
Polinômio interpolador:
P4(x) = 1 + 0.(x + 1) + 




 −
2
1
(x + 1)(x) + 





6
1
(x + 1)(x)(x − 1) + 




 −
24
1
(x + 1)(x)(x − 1)(x − 2)
P4(0.5) = 1 − 0.375 − 0.0625 − 0.02344 = 0.53906
6.7 Interpolação de Gregory-Newton
Muitas vezes são encontrados problemas de interpolação cuja tabela de pontos conhecidos tem
valores que são igualmente espaçados, ou seja:
x1 − x0 = x2 − x1 = x3 − x2 = ... = xn − xn-1 = h
79
Assim xi+1 − xi = h , para todo i, sendo h uma constante.
xi = xi-1 + h → xi = x0 + i * h
6.7.1 Diferenças Ordinárias ou Finitas
∆0
f(x) = f(x)
∆1
f(x) = f(x + h) − f(x)
∆2
f(x) = ∆1
f(x + h) − ∆1
f(x)
...
∆n
f(x) = ∆n-1
f(x + h) − ∆n-1
f(x)
xi Ordem 0 Ordem 1 Ordem 2 ... Ordem n
x0 f(x0) ∆1
f(x0) ∆2
f(x0) ∆n
f(x0)
x1 f(x1) ∆1
f(x1) ∆2
f(x1) −
x2 f(x2) ∆1
f(x2) ∆2
f(x2) −
... ... ... ... ...
xn-2 f(xn-2) ∆1
f(xn-2) ∆2
f(xn-2) −
xn-1 f(xn-1) ∆1
f(xn-1) − −
xn f(xn) − − −
6.7.2 Relação entre diferenças divididas e diferenças ordinárias
Teorema: Se xj = x0 + j.h, para j = 0, 1, 2, ..., n, então f[x0,x1,x2,...,xn] = n
n
hn
xf
!
)( 0∆
.
Prova:
f[x0] = f(x0)
f[x0,x1] =
01
01 ][][
xx
xfxf
−
−
=
)(
)()(
01
01
xx
xfxf
−
−
=
h
xfhxf )()( 00 −+
=
h
xf )( 0∆
f[x0,x1,x2] =
02
1021 ],[],[
xx
xxfxxf
−
−
=
h
h
xf
h
xf
2
)()( 01 ∆
−
∆
= 2
0
2
2
)(
h
xf∆
M
e por indução podemos mostrar que esta regra é valida para valores maiores que 2.
6.7.3 Gregory-Newton usando Diferenças Ordinárias
Partindo da formula original do método de Newton, que é
Pn(x) = f[x0] + f[x0,x1].(x − x0) + f[x0,x1,x2].(x − x0).(x − x1) + ...+ f[x0,x1,x2,...,xn].(x − x0).(x − x1).(x −
x2)...(x − xn-1)
podemos derivar a nova formula que utiliza as diferenças ordinárias:
Pn(x) = f(x0) +
h
xf )( 0∆
.(x − x0) + 2
0
2
2
)(
h
xf∆
.(x − x0).(x − x1) + ... + n
n
hn
xf
!
)( 0∆
.(x − x0).(x − x1).(x −
x2)...(x − xn-1)
6.7.4 Exemplos
Exemplo 1: Obter f(0.5) usando um polinômio interpolador de Gregory-Newton (G-N) do segundo grau
(3 pontos). Considere a seguinte tabela:
80
xi −1 0 1 2 3
f(xi) 2 1 2 5 10
a) Tamanho do intervalo:
h = 1
b) Cálculo dos coeficientes de Pn(x):
X Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4
x0 −1 2 −1 2 0 0
x1 0 1 1 2 0
x2 1 2 3 2
x3 2 5 5
x4 3 10
c) Polinômio interpolador:
P2(x) = 2 + 




 −
1
1
(x + 1) + 





• 2
12
2
(x + 1)(x)
P2(x) = 2 − (x + 1) + x (x + 1)
P2(x) = 2 − x − 1 + x2
+ x
P2(x) = x2
+ 1
d) Resposta:
P2(0.5) = (0.5)2
+ 1 = 1.25
Exercício 1: Obter f(0.04) usando um polinômio interpolador de Gregory-Newton do segundo grau (3
pontos). Considere a seguinte tabela:
xi 0.01 0.03 0.05 0.07
F(xi) 1.01 1.09 1.25 1.49
Polinômio interpolador: P2(x) = 100x2
+ 1
P2(0.04) = 1.16
Exercício 2: Obter f(3.7) usando um polinômio interpolador de Gregory-Newton do terceiro grau (4
pontos), onde f(x) = ln(x). Considere a seguinte tabela:
xi 1 2 3 4
F(xi) 0 0.6931 1.0986 1.3863
Polinômio interpolador: P3(x) = 0.6931.(x − 1) − 0.1438.(x − 1)(x − 2) + 0.0283.(x − 1)(x − 2)(x − 3)
P3(3.7) = 1.30225590
6.8 Interpolação Splines: Linear, Quadrática, Cúbica
Uma função spline intervalar é um polinômio constituído sobre certas condições de continuidade.
81
6.8.1 Spline Linear
Para um conjunto de dados chamados nós :
),,2,1,,( niyx ii L=
, a spline linear é definida por
[ ] 1,,2,1,,,)( 1 −=∈+= + nixxxforbxaxs iiiii L (1.1)
A condição C0
, iii yxs =)(
e 11 )( ++ = iii yxs
produz )2(2 −n equações para os pontos interior ao domínio
de x. Acrescentada a estas condições duas condições nos pontos extremos do domínio de x são
estabelecidas produzindo um total de 22 −n equações concordar com 22 −n incógnitas:
1,,2,1,, −= niba ii L
. Aplicando essas condições obtém-se:
[ ]1
1
1
1
1
1
1
,),()( +
+
+
+
+
+
+
∈−
−
−
+=
−
−
+
−
−
= iii
ii
ii
i
ii
i
i
ii
i
ii xxxxx
xx
yy
y
xx
xx
y
xx
xx
yxs
(1.2)
Está equação resulta em linhas retas juntando pontos vizinhos.
Observa-se que,
)(xsi é o polinômio de interpolação de Lagrange para o conjunto de dados:
),( ii yx
e
),( 11 ++ ii yx
. A eq(1.2) é a solução intervalar aproximada linearmente em uma dimensão.
Exemplo 1.1. Calcular a spline linear do conjunto de dados abaixo:
i 1 2 3 4 5
x 0 5 7 8 10
y 0 2 -1 -2 20
Spline Linear
]5,0[,5.2
05
0
2
50
5
0)(1 ∈=
−
−
+
−
−
= xx
xx
xs
]7,5[,5.95.1
57
5
1
75
7
2)(2 ∈+−=
−
−
−
−
−
= xx
xx
xs
]8,7[,6
78
7
2
87
8
1)(3 ∈+−=
−
−
−
−
−
−= xx
xx
xs
]10,8[,9011
810
8
20
108
10
2)(4 ∈−=
−
−
+
−
−
−= xx
xx
xs
82
0 1 2 3 4 5 6 7 8 9 10
-5
0
5
10
15
20
x
y
Linear Spline Interpolation
interp1: MATLAB function.
Type "help interp1" in MATLAB
window for its usage and options.
data points
linear spline
interp1: linear
Figura 1.1 Spline Linear.
Pseudocódigo: Matlab
(1) Input dados x(i) ,y(i), i = 1,n; Plot usando símbolos usando plot;
(2) For i = 1, n-1, do
A = linspace(x(i),x(i+1),nint) % Divide cada intervalo em “nint” pontos
Call c1=linear_spline % Call a função linear_spline.m
Call c2=interp1 % Call a função do MATLAB (opção default: linear)
Plot c1
Plot c2
Enddo
A função “linear_spline.m” é contruída de acordo com o seguinte algoritmo:
(1) Input x, onde se deseja determinar o valor de y;
Avalie se x está fora do intervalo; se sim pare o programa; se não, prossegue;
(2) Calcule o intervalo onde o valor de x reside;
(3) Calcule y de acordo com a eq(1.2).
function f = linear_spline(x,y,xx)
n=length(x); % No.de dados em ordem crescente
if (xx<x(1)) | (xx>x(n));
error('x esta fora do intervalo!'); % erro
end;
% procura do intervalo onde xx reside
for i = 1:n-1;
if (xx>=x(i)) & (xx<=x(i+1));
m=i;
break;
83
end;
end;
% Calcule y(XX) eq(1.2).
f = y(m)*(xx-x(m+1))/(x(m)-x(m+1)) ...
+y(m+1)*(xx-x(m))/(x(m+1)-x(m));
Examplo 1.2 Calcule as splines intervalar lineares para os dados:
i 1 2 3 4 5 6
x 0 1 2 3 4 5
y 1 1 1 -1 -1 -1
Avalie o resultado segundo o gráfico na Figura 1.2.
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x
y
Linear Spline Interpolation
data points
linear spline
interp1: linear
Figure 1.2 Spline Linear.
É claramente notado em ambos os exemplos as splines são linhas retas. Estes conjuntos de dados
serão usados em todo este material com o objetivo de comparar os diferentes tipos de splines.
84
6.8.2 Spline Quadrática
Uma spline quadrática para cada intervalo é definida como:
[ ] 1,,2,1,,,)( 1
2
−=∈++= + nixxxforcxbxaxs iiiiii L
(2.1)
A qual é posta certas condições para satisfazer as condições de se C0
e C1
.
Para a condição de ser C0
se obtém:
1,...2,1,)(,)( 11 −=== ++ niyxsyxs iiiiii (2.2)
Para a condição de ser C1
se obtém:
2,,2,1),()( 111 −=′=′ +++ nixsxs iiii L
(2.3)
Dos três requerimentos acima, existem 3n-4 condições. Porém as splines quadráticas requer um total de
3n-3 condições, de forma que há necessidade de uma condição a ser adicionada. Usualmente usa-se,
s′1(x1) = 0 como condição. Com isso se obtém a então chamada spline natural quadrática. Certamente
outras condições podem ser usadas, tal como s′1(x1) = s′n-1(xn ).
Para determinar a equação da spline, primeiro denote di = s′i (xi ), então desde que s′(x) é uma spline
linear para o conjunto de dados (xi, di, i = 1,2, …, n), obtém-se
ii
iiiiii
ii
i
i
ii
i
ii
xx
xdxdxdd
xx
xx
d
xx
xx
dxs
−
+−−
=
−
−
+
−
−
=′
+
+++
+
+
+
+
1
111
1
1
1
1
)(
)(
ii
ii
ii
dxx
xx
dd
+−
−
−
=
+
+
)(
1
1
aqual é uma equação linear para a inclinação (slope).
Integrando em x, obtém-se
iiii
ii
ii
i yxxdxx
xx
dd
xs +−+−
−
−
=
+
+
)()(
)(2
)( 2
1
1
(2.4)
Nesta solução é a constante de integração é calculada utilizando a condição de contorno C0
: iii yxs =)(
.
Uma spline quadrática é definida uma vez que os id
’s sejam conhecidos.
Fazendo x = xi+1, obtém-se
iiiiii
ii
ii
i yxxdxx
xx
dd
y +−+−
−
−
= ++
+
+
+ )()(
)(2
1
2
1
1
1
1
O qual conduz a:
1,,2,1,2
1
1
1 −=−
−
−
=
+
+
+ nid
xx
yy
d i
ii
ii
i L
(2.5)
A eq(2.5) descreve um esquema recursivo. Se d1 é conhecido, então di+1 pode ser calculado pela eq(2.5).
Varias condições podem ser aplicadas para obter d1:
• Para a então chamada Spline Natural, 01 =d .
• Se d1 = d2, então d1 pode ser calculado por
12
12
11
12
12
21 2
xx
yy
dd
xx
yy
dd
−
−
=⇒−
−
−
==
(2.6)
85
• Se d1 = dn, então d1 pode ser calculado por




















−
−
−=
⇒−−





−
−
−==
∑
∑
−
= +
++−
−
= +
++−
imparnsolucaosem
parn
xx
yy
d
d
xx
yy
dd
n
i ii
iiin
n
n
i ii
iiin
n
,
,)1(
)1()1(2
1
2 1
11
1
1
1
2 1
11
1
(2.7)
Esta condição não pode ser aplicada quando n é um número impar.
Pseudocódigo do algoritmo em Matlab “quadratic_spline.m” é como segue:
(1) Input os pontos x(i) ,y(i), i = 1,n; Plot estes pares usando símbolos com a função plot;
(2) For i = 1, n-1, do
A = linspace(x(i),x(i+1),nint) % Divide cada intervalo e “nint” pontos
Call c1=quadratic_spline with d1 = 0; % Spline Natural Quadrática
Call c2=quadratic_spline with d1 = d2;
Plot c1
Plot c2
Enddo
A função “quadratic_spline.m” é construída de acordo com o seguinte algoritmo:
(1) Input x onde se deseja calcular o valor interpolado y;
Avaliar se x está fora do intervalo; se sim, pare o programa; se não, prossegue;
(2) Calcule o intervalo onde x pertence;
(3) Calcule d1; Calcule di (Equação (2.5));
(4) Calcule y de acordo com a equação (2.4).
function f = quadratic_spline(x,y,xx,ioption)
n=length(x); % No. de dados em ordem crescente
if (xx<x(1)) | (xx>x(n));
error('x esta fora do intervalo!'); % Erro
end;
% declara o tamanho da matriz para d=ds/dx
d=1:1:n;
% Calcule d(1)
if ioption==1;
d(1)=0.0; % Spline Quadratica Natural
else;
d(1)=(y(2)-y(1))/(x(2)-x(1)); % para d(1)=d(2), eq(2.6)
end;
% Usa algoritmo recursivo eq(2.5) para calcular todosl d(i)
for i = 2:n;
d(i)=2.0*(y(i)-y(i-1))/(x(i)-x(i-1))-d(i-1);
end;
% Calcular qual o intervalo que reside xx
for i = 1:n-1;
if (xx>=x(i)) & (xx<=x(i+1));
m=i;
break;
end;
end;
% Calcule y(xx) para spline quadratica eq(2.4).
f = (xx-x(m))*( 0.5*(d(m+1)-d(m))*(xx-x(m))/(x(m+1)-x(m)) ...
+d(m) ) + y(m);
86
Examplo 2.1. Dado os mesmo dados do examplo 1.1, calcule a spline quadrática.
Usando a spline natural quadrática, onde d1 = 0, então se obtém
8.38.0
57
21
2,8.00
05
02
2 32 −=−
−
−−
==−
−
−
= dd
2.208.1
810
220
2,8.18.3
78
12
2 54 =−
−
+
==+
−
+−
= dd
]5,0[,08.00)0(0)0(
)05(2
08.0
)( 22
1 ∈=+−+−
−
−
= xxxxxs
]7,5[,5.2893.1215.12)5(8.0)5(
)57(2
8.08.3
)( 22
2 ∈−+−=+−+−
−
−−
= xxxxxxs
]8,7[,8.1624.98.21)7(8.3)7(
)78(2
8.38.1
)( 22
3 ∈+−=−−−−
−
+
= xxxxxxs
]10,8[,6.2738.716.42)8(8.1)8(
)810(2
8.12.20
)( 22
4 ∈+−=−−+−
−
−
= xxxxxxs
Os resultados das splines devido à condição d1 = d2, são plotados na figura 2.1. Próximo x = 0, a spline
natural tem uma curva achatada devido à derivada zero em x = 0. A outra spline tem uma inclinação
linear no primeiro intervalo. Para todos os intervalos de dados, estas duas splines são diferentes, embora
as diferenças sejam pequenas.
0 1 2 3 4 5 6 7 8 9 10
-5
0
5
10
15
20
x
y
Quadratic Spline Interpolation
data points
natural quadratic spline
quadratic spline with d1
=d2
Figure 4.2.1. Spline Quadrática.
87
Exemplo 2.2. Utlizando os dados do exemplo 1.2, obter as splines quadráticas.
A única mudança necessária no script “quadratic_spline1.m” é trocar o conjunto de dados x e y pelos da
tabela do exemplo 1.2. As splines são plotadas na figura 2.2. Note que as splines natural e as splines
devido a condição d1 = d2 são exatamente as mesmas. Isso é causado pelo fato que ambas as opções
produzem o mesmo resultado: d1 = 0.
Também, as splines no 4º
e 5º
intervalos têm grandes oscilações. Seria desejável uma transição suave no 3º
intervalo e as splines apresentam esta transição. Contudo devido a depressão no intervalo 4, existem
oscilações no 4º
e 5º
intervalos. Geralmente, quando a ordem do polinômio spline é maior este problema
torna-se mais severo.
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
x
y
Quadratic Spline Interpolation
data points
natural quadratic spline
quadratic spline with d1
=d2
Figura 2.2. Sline Quadrática.
6.8.3 Spline Cúbica Natural
Geralmente, uma função s é chamada de spline do grau k sobre nxxx <<< L21 se
(1)
[ ];,1 nxxs ∈
(2) 1,,2,1,0,)(
−= kjs j
L são todas funções contínuos no
[ ]nxx ,1 onde s(j)
é a j-ésima derivada;
(3) s é um polinômio de grau k≤ em cada intervalo
[ ]1, +ii xx
.
Se 3=k , a spline é chamada de spline cúbica. As curvaturas dadas pelas derivadas segundas podem ser
aproximadas por funções lineares em um intervalo e denotando os valores nos pontos ix
como
nixse iii ,,2,1),( L=′′=
, elas podem ser aproximadas pelo polinômio interpolador de Lagrange no
88
)()( 1 iiii xsxs −
′=′
conjunto de dados
),,2,1,,( niex ii L=
. Contudo
1,,2,1,)(
1
1
1
1 −=
−
−
+
−
−
=′′
+
+
+
+ ni
xx
xx
e
xx
xx
exs
ii
i
i
ii
i
ii L
(3.1)
Integrando em x duas vezes, obtém-se
)()()(
6
)(
6
)( 1
3
1
31
xxdxxcxx
h
e
xx
h
e
xs iii
i
i
i
i
i
i −+−+−+−= ++
+
(3.2)
Onde hi = xi+1 - xi e c e d são constantes de integração.
Aplicando a condição C0
, obtém-se:
6
;
6
11 ii
i
iii
i
i he
h
y
d
he
h
y
c −=−= ++
(3.3)
A qual conduz a
))(
6
())(
6
()(
6
)(
6
)( 1
113
1
31
xx
he
h
y
xx
he
h
y
xx
h
e
xx
h
e
xs i
ii
i
i
i
ii
i
i
i
i
i
i
i
i
i −−+−−+−+−= +
++
+
+
(3.4)
Logo a spline cúbica é definida desde que se determina os ei‘s.
Os valores de ei podem ser determinados da condição C1
de continuidade. Diferenciando a equação
anterior, obtém-se
)
6
()
6
()(
2
)(
2
)( 112
1
21 ii
i
iii
i
i
i
i
i
i
i
i
i
he
h
yhe
h
y
xx
h
e
xx
h
e
xs −−−+−−−=′ ++
+
+
e
i
iiiiii
i
iii
i
i
i
i
i
ii b
hehehe
h
yhe
h
y
h
h
e
xs +−−=−−−+−=′ +++
36
)
6
()
6
(
2
)( 1112
onde
1,,2,1,1
−=
−
= +
ni
h
yy
b
i
ii
i L
(3.5)
Também
1
11111
1
11
1
2
1
1
1
36
)
6
()
6
(
2
)( −
−−−−−
−
−−
−
−
−
− ++=−−−+=′ i
iiiiii
i
iii
i
i
i
i
i
ii b
hehehe
h
yhe
h
y
h
h
e
xs
Fixando para todos os pontos no interior do intervalo, obtém-se
1,,3,2),(6)(2 11111 −=−=+++ −+−−− nibbehehheh iiiiiiiii L
(3.6)
Um sistema linear tridiagonal de equações em termos das incógnitas ie
’s. Existemn incógnitas e 2−n
equações. Duas condições adicionais são necessárias para determinar as splines cúbicas. Quando elas são
89
01 == nee
, as splines resultantes são chamadas de spline cúbica natural. Essas equações podem ser
rearranjadas como:
0
1,,3,2
0
111
1
=
−==++
=
+−−
n
iiiiiii
e
niveheueh
e
L
(3.7)
onde
1,,3,2
)(6
)(2
1
1
−=
−=
+=
−
−
ni
bbv
hhu
iii
iii
L
(3.8)
O algoritmo do código “cubic_splin.m” é muito similar ao “linear_spline.m”, então o algoritmo
para a função “cubic_splin1.,m” será representado aqui.
(1) Input x onde se deseja calcular a interpolação y é desejado; % s = y aqui.
(2) Avaliar se x esta for a do intervalo; se sim, pareo programa; se não, prossegue;
(3) Calcule hi e bi (eq(3.5));
(4) Calcule ui e vi (eq(3.8));
(5) Fixe e1 = 0, então calcule ei (eq(3.7))
(6) Calcule em que intervalo reside x;
(7) Calcule y com a eq(3.4).
Example 3.1. Dado os pontos do exemplo 1.1, obter a spline natural cúbica.
Para calcular a 2ª
derivadas, primeiro determine
h1 = 5, h2 = 2, h3 = 1, h4 = 2
b1 = 0.4, b2 = -1.5, b3 = -1, b4 = 11
Usando os dados acima se pode calcular os ui’s e vi’s como
u2 = 14, u3 = 6.0, u4= 6.0
v2 = -11.4, v3 =3.0, v4 = 72.0
Então da eq(3.7), obtém-se









−
=




















0.72
0.3
4.11
610
162
0214
4
3
2
e
e
e
Os valores de e2, e3, e e4 pode ser obtido usando o algoritmo de Thomas. Estes valores juntamente com
e1= e5 = 0 fornecem:
e2 =-0.67211538461538, e3 =-0.99519230769231, e4 =12.33173076923077
As splines cúbicas natural são plotadas na figure 3.1. As funções Matlab “spline” e “interp1” com as
opções corretas são usadas para produzir as mesmas splines. Duas outras condições são adicionadas
nestas funções Matlab como segue
90
)()(,)()( 1
)3(
11
)3(
22
)3(
22
)3(
1 −−−− == nnnn xsxsandxsxs
0 1 2 3 4 5 6 7 8 9 10
-5
0
5
10
15
20
x
y
Cubic Spline Interpolation
data points
natural cubic spline
interp1:spline
spline
Figura 3.1. Spline Cúbica.
INTERPOLACAO por SPLINE CUBICA
xi -> Valores de x
ci -> Coeficientes Linear
bi -> Coeficientes Linear
ai -> Coeficientes Cubic
fpa -> Primeira Derivada em a
0.0000
fpb -> Primeira Derivada em b
0.0000
--------------------------------------------------------------------
x(i) x(i+1) a(i+1) ai bi ci
--------------------------------------------------------------------
0.00 5.00 -0.0224 0.0000 0.0000 0.9601
5.00 7.00 -0.0829 -0.0560 1.2240 -0.1683
7.00 8.00 2.0553 -0.1659 -0.8341 -4.0553
8.00 10.00 0.0000 1.0276 -5.1106 10.0000
Exemplo 3.2. Dados os pontos do exemplo 1.2, obter as splines cúbicas.
As splines são plotadas na figura 3.2. Todas as splines apresentam resultados melhores que
àquelas gerados pela spline quadráticas. As oscilações são menores. As splines naturais aqui apresentam
melhores resultados que os gerados por “spline” e “interp1: spline” no 1º
e 5º
intervalos.
91
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-1.5
-1
-0.5
0
0.5
1
1.5
x
y
Cubic Spline Interpolation
data points
natural cubic spline
interp1:spline
spline
Figura 3.2. Spline Cúbica.
function f = cubic_spline(x,y,xx)
%--------------------------------------------------------------------------
%echo off; clear; clc; format long;
%--------------------------------------------------------------------------
%
n=length(x); % No. dados em ordem crescente.
if (xx<x(1)) | (xx>x(n));
error('for a do intervalo de x!'); % Erro
end;
%
% Inicialize h, b, u, v.
h=1:1:n-1;
b=1:1:n-1;
u=1:1:n-1;
v=1:1:n-1;
%
for i=1:n-1;
h(i)=x(i+1)-x(i); % Calcule h(i)
b(i)=(y(i+1)-y(i))/h(i); % Calcule b(i) usando eq(3.5)
end;
%
% Calcule u(i), v(i) usando eq(3.8)
u(2)=2.0*(h(1)+h(2));
v(2)=6.0*(b(2)-b(1));
for i=3:n-1;
u(i)=2.0*(h(i)+h(i-1));
v(i)=6.0*(b(i)-b(i-1));
end;
%
% Condicoes para Spline Cubica Natural
e(1)=0.0;
e(n)=0.0;
% Calcule e(i) usando eq(3.7)
sub(1:n-2) = h(1:n-2); % diagonal inferior
dia(1:n-2) = u(2:n-1); % diagonal principal
super(1:n-2) = h(2:n-1); % diagonal superior
rhs(1:n-2) = v(2:n-1); % lado direito
92
%--------------------------------------------------------
[xs]=triDiag(n-2,sub,super,dia,rhs);
e(2:n-1)=xs;
%--------------------------------------------------------
% Calcular intervalo onde xx reside
for i = 1:n-1;
if (xx>=x(i)) & (xx<=x(i+1));
m=i;
break;
end;
end;
%
hm=x(m+1)-x(m);
xt1=xx-x(m);
xt2=x(m+1)-xx;
% Calcule y(XX) cubic spline usando eq(3.4).
f = (e(m+1)*xt1^3+e(m)*xt2^3)/(6.0*hm) ...
+xt1*( y(m+1)/hm-hm*e(m+1)/6.0 ) ...
+xt2*( y(m)/hm-hm*e(m)/6.0 );
function [xs]=triDiag(dim,sub,super,diag,rhs)
for i=1:dim-1 %Elimination
m=sub(i)/diag(i);
diag(i+1)=diag(i+1)-m*super(i);
rhs(i+1)=rhs(i+1)-m*rhs(i);
end
x(dim)=rhs(dim)/diag(dim); %Back Substitution
for i=dim-1:-1:1
x(i)=(rhs(i)-super(i)*x(i+1))/diag(i);
end
xs=x;
%************** CUBIC_SPLINE_1 ******************
%
%-------------------------------------------------
clear all; clc; format long;
%-------------------------------------------------
for iexample=1:2;
if iexample==1;
%x=[-2 -1 0 1 2];
%y=[ 4 -1 2 1 8];
x=[0. 5. 7. 8. 10.0]; % data points for Example 3.1
y=[0. 2. -1. -2. 20.];
else;
x=[0. 1. 2. 3. 4. 5.]; % data points for Example 3.2
y=[1. 1. 1. -1. -1. -1.];
end;
figure;
plot(x,y,'ko'); % Plot original data points
hold;
n=length(x)-1;
nint=11; % Use nint points in plotting for each data interval
for i=1:n; % loop for each data interval
a=linspace(x(i),x(i+1),nint); % Divide each data interval into nint points
for i1=1:nint;
c1(i1)=cubic_spline(x,y,a(i1)); % Call cubic_spline function
c3(i1)=interp1(x,y,a(i1),'spline'); % Call MATLAB function interp1.m with
% option 'spline'
c4(i1)=spline(x,y,a(i1)); % Call MATLAB function spline.m
end;
93
plot(a,c1,'k'); % Plot points due to cubic_spline
plot(a,c3,'k:'); % Plot points due to interp1's spline
plot(a,c4,'k+'); % Plot points due to spline function
end;
legend('data points','natural cubic spline', ...
'interp1:spline','spline',0) % Create legend
xlabel('x'), ylabel('y'),title('Cubic Spline Interpolation'); % Title for plot
grid;
end;
6.8.4 Considerações Gerais sobre Interpolação
Splines de crescente ordem são obtidas aumentando a ordem de continuidade nos pontos através
de todos os intervalos, splines quadrática requer que as primeiras derivadas sejam satisfeitas nos pontos
de extremos dos intervalos, splines cúbica requer as derivadas segundas, etc. Splines de ordem maior que
3 são raramente usadas em aplicações práticas. Porém o aumento da ordem paga o esforço para gerá-la?
Observando os gráficos estes revelam que para ordem maior que 1 há oscilações através dos
dados. A comparação das splines é mostrada nas figuras 4.1 e 4.2. É possível observer que as splines
quadráticas, em geral, oscilam mais que as splines cúbicas quando comparadas com as splines lineares.
Então aumentando a ordem nem sempre aumenta as oscilações. Então qual spline escolher?
A Seleção de uma spline apropriada depende da aplicação. Se procura interpolar os dados por si
só, talvez a spline linear é a melhor escolha. Se os dados forem de natureza cúbica a spline cúbica será a
melhor escolha. Se desejar conhecer derivadas dos dados, uma spline linear gera saltos nos pontos,
portanto algum grau de suavidade seria desejável. Então novamente, a escolha deverá ser feita em função
da aplicação. Em projetos, as splines permitem suavização local através dos dados e a spline cúbica é a
escolha usual.
Como as splines se comparam aos polinômios interpolantes de Hermite que também tratam de
derivadas? É muito importante entender o seguinte conceito: splines concordam através das condições de
derivadas nos pontos extremos dos intervalos, não derivadas dos dados por si só. Em outras palavras,
splines são funções discretas as quais aproximam os dados preenchendo os dados nos intervalos: as
condições de suavidade nos pontos de junção são asseguradas assim como nos pontos gerados no interior
do intervalo. Por outro lado, a interpolação de Hermite requer derivadas de dados, isto é, as derivadas são
partes dos dados, i.é., posição, velocidade, aceleração. A única relação entre spline e interpolação de
Hermite é que ambos são polinômios.
Figura 4.1
Comparação
de Spline.
0 1 2 3 4 5 6 7 8 9 10
-5
0
5
10
15
20
x
y
Spline Comparison
data points
natural cubic spline
natural quadratic spline
linear spline
94
Figura 4.2
Comparação
Spline.
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
x
y
Spline Comparison
data points
natural cubic spline
natural quadratic spline
linear spline
95
7 Ajuste de Curvas
Uma das formas de se trabalhar com uma função definida por uma tabela de valores é a
interpolação polinomial. Contudo, a interpolação não é aconselhável quando:
a) É preciso obter um valor aproximado da função em algum ponto fora do intervalo de
tabelamento, ou seja, quando se quer extrapolar.
b) Os valores tabelados são resultados de algum experimento físico ou de alguma pesquisa,
porque, nestes casos, estes valores poderão conter erros inerentes que, em geral, não são
previsíveis.
Surge então a necessidade de se ajustar a estas funções tabeladas uma função que seja uma "boa
aproximação" para os valores tabelados e que permita extrapolar com certa margem de segurança.
O problema do ajuste de curvas no caso em que temos uma tabela de pontos (x1, f(x1)), (x2, f(x2)),
..., (xm, f(xm)) com x1, x2, ..., xm, pertencentes a um intervalo [a, b], consiste em: escolhidas n funções
g1(x), g2(x), ..., gn(x), contínuas em [a, b], obter n constantes α1, α2, ..., αn tais que a função ϕ(x) = α1g1(x)
+ α2g2(x) + ... + αngn(x) se aproxime ao máximo de f(x).
Genericamente, no caso linear, estaremos supondo que os dados serão aproximados por uma
função do tipo:
f(x) ≅ ϕ(x) = α1g1(x) + α2g2(x) + ... + αngn(x)
onde as funções g1(x), g2(x), ..., gn(x) são preestabelecidas.
Dizemos que este é um modelo matemático linear porque os coeficientes a determinar, α1, α2, ...,
αn, aparecem linearmente, embora as funções g1(x), g2(x), ..., gn(x) possam ser funções não lineares de x,
como por exemplo, g1(x) = ex
, g2(x) = (x2
+ 2), g3(x) = sen(x), etc.
A escolha das funções pode ser feita observando o gráfico dos pontos conhecidos ou baseando-se
em fundamentos teóricos do experimento que nos forneceu a tabela.
Portanto, dada uma tabela de pontos (x1, f(x1)), (x2, f(x2)), ..., (xm, f(xm)), deve-se, em primeiro
lugar, colcoar estes pontos num gráfico cartesiano. O gráfico resultante é chamado diagrama de
dispersão. Através deste diagrama pode-se visualizar a curva que melhor se ajusta aos dados.
Exemplo: Seja a tabela:
i 1 2 3 4 5 6 7 8 9
xi –1.0 –0.75 –0.5 –0.25 0 0.25 0.5 0.75 1.0
f(xi) 2.1 1.3 1.1 0.2 0 0.5 0.6 1.5 2.2
O diagrama de dispersão será conforme mostrado abaixo:
0
0.5
1
1.5
2
2.5
-1.5 -1 -0.5 0 0.5 1 1.5
96
Portanto, é natural escolher apenas uma função g1(x) = x2
e procurar então ϕ(x) = αx2
(equação
geral de uma parábola passando pela origem).
Se considerarmos uma experiência onde foram medidos vários valores de corrente elétrica que
passa por uma resistência submetida a várias tensões, colocando os valores correspondentes de corrente e
tensão em um gráfico, poderemos ter:
i
V
i0
iq
V0
Vq
neste caso, existe uma fundamentação teórica relacionando a corrente com a tensão V = Ri, isto é, V é
uma função linear de i.
Assim, g1(x) = i e ϕ(i) = αg1(i)
O problema é determinar qual parábola com equação αx2
se ajusta melhor ao primeiro gráfico e
qual reta, passando pela origem, melhor se ajusta ao segundo gráfico.
No caso geral, escolhidas as funções g1(x), g2(x), ..., gn(x) temos de estabelecer o conceito de
proximidade entre as funções ϕ(x) e f(x) para obter as constantes α1, α2, ..., αn.
Uma maneira é impor que o desvio (f(xi) – ϕ(xi)) seja mínimo, para i = 1, 2, ..., m. veremos a
seguir o método conhecido como Método dos Quadrados Mínimos.
7.1 Método dos Quadrados Mínimos
O Método dos Quadrados Mínimos é provavelmente a técnica de aproximação mais usada na
análise numérica e em problemas práticos. Isto se deve tanto à sua simplicidade quanto ao fato de que em
geral, buscamos aproximações para dados que são medidas obtidas experimentalmente com um certo grau
de incerteza. Veremos que o método dos quadrados mínimos comtempla a possível existência de erros
nos dados a serem aproximados. O critério de aproximação consiste em minimizar os resíduos.
Chamaremos de f(x) a função que será convenientemente aproximada por outra função ϕ(x). No
caso dos quadrados mínimos lineares, partimos da hipótese de que temos algumas informações sobre o
comportamento de ϕ(x). Poderíamos saber, por exemplo, que ϕ(x) é uma reta, ou seja:
ϕ(x) = α1 + α2x
A questão é encontrar qual é esta reta, ou seja, quais são os valores de α1 e α2 que ajustam os
pontos conhecidos.
Num outro exemplo, vamos procurar valores para α1, α2 e α3 que tornam a função:
ϕ(x) = α1 + α2x + α3x2
uma boa aproximação dos dados.
97
Sejam dados os pontos (x1, f(x1)), (x2, f(x2)), ..., (xm, f(xm)) e as n funções g1(x), g2(x), ..., gn(x)
escolhidas de alguma forma. Considerando que o número de pontos m, tabelados, é sempre maior ou igual
a n o número de funções escolhidas ou o número de coeficientes αi a se determinar.
Nosso objetivo é encontrar os coeficientes α1, α2, ..., αn tais que a função ϕ(x) = α1g1(x) + α2g2(x)
+ ... + αngn(x) se aproxime ao máximo de f(x).
Seja dk = f(xk) – ϕϕϕϕ(xk) o desvio em xk. O conceito de proximidade é que dk seja mínimo para todo k
= 1, 2, ..., m. No método dos quadrados mínimos consiste em escolher os aj's de tal forma que a soma dos
quadrados dos desvios seja mínima.
7.1.1 Ajuste Linear Simples
Dada uma tabela com m valores (xi, f(xi)), i = 1, 2, ..., m, queremos encontrar a reta que melhor
ajusta esta tabela, no sentido dos quadrados mínimos. Como o ajuste será feito por uma reta, tomaremos
g1(x) = 1 e g2(x) = x., isto é:
f(x) ≅ ϕ(x) = α1 + α2x
O resíduo para cada par (α1, α2) e para cada x será r(α1, α2; x) = f(x) – α1 – α2x. Assim, pelo
método dos quadrados mínimos devemos procurar α1 e α2 que minimizam a função:
<r, r> (α1, α2) = < f(x) – α1 – α2x, f(x) – α1 – α2x> = ( )∑=
−−
m
i
ii xxf
1
2
21)( αα .
Do Cálculo Diferencial sabe-se que a condição necessária do ponto crítico é que as derivadas nele
se anulem, esto é:
1α∂
∂
<r, r> =
2α∂
∂
<r, r> = 0
ou ainda, procedidas as respectivas derivações na expressão <r, r> temos:
( )∑=
−−−
m
i
ii xxf
1
21)(2 αα = 0 e ( )∑=
−−−
m
i
iii xxxf
1
21)(2 αα = 0
Após o desenvolvimento, estas duas equações formam um sistema linear com as incógnitas α1 e
α2, que podem ser reescrito na forma:
∑ ∑∑ = ==
=−−
m
i
m
i
i
m
i
i xxf
1 1
21
1
0)( αα
∑ ∑∑ = ==
=−−
m
i
m
i
ii
m
i
ii xxxfx
1 1
2
21
1
0)( αα
ou
mα1 + α2 ∑=
m
i
ix
1
= ∑=
m
i
ixf
1
)(
98
α1 ∑=
m
i
ix
1
+ α2 ∑=
m
i
ix
1
2
= ∑=
m
i
ii xfx
1
)(
A solução deste sistema pode ser obtida pelo método da Eliminação de Gauss. Através das
substituições retroativas obtém-se:
α1 =
m
xxf
m
i
i
m
i
i 2
11
)( α





− ∑∑ ==
e α2 = 2
11
2
1 11
)()(






−
−
∑∑
∑ ∑∑
==
= ==
m
i
i
m
i
i
m
i
m
i
ii
m
i
ii
xxm
xfxxfxm
Assim, a solução do sistema de equações lineares é α1 e α2 dados pelas equações acima, e com
estes valores os resíduos apresentam o seu menor valor.
Como este método consiste em achar o mínimo de uma função quadrática, ele é conhecido como
método dos mínimos quadrados.
Exemplo 1: Ajustar os dados da tabela abaixo a uma reta de modo que o resíduo seja o menor possível.
i 1 2 3 4 5
xi 1.3 3.4 5.1 6.8 8.0
f(xi) 2.0 5.2 3.8 6.1 5.8
Usando os valores da tabela temos:
a) Cálculo dos somatórios:
m = 5
∑=
m
i
ix
1
= (1.3) + (3.4) + (5.1) + (6.8) + (8.0) = 24.6
∑=
m
i
ix
1
2
= (1.3)2
+ (3.4) 2
+ (5.1) 2
+ (6.8) 2
+ (8.0) 2
= 149.5
∑=
m
i
ixf
1
)( = (2.0) + (5.2) + (3.8) + (6.1) + (5.8) = 22.9
∑=
m
i
ii xfx
1
)( = (1.3)(2.0) + (3.4)(5.2) + (5.1)(3.8) + (6.8)(6.1) + (8.0)(5.8) = 127.54
b) Resolução do sistema:
Assim, os valores de α1 e α2 da melhor reta (no sentido dos quadrados mínimos) são obtidos pelo
sistema:



=+
=+
54.1275.1496.24
9.226.245
21
21
αα
αα
Resolvendo o sistema, obtem-se α1 = 2.0098 e α2 = 0.5224.
99
Usando as fórmulas de α1 e α2 temos:
α1 =
m
xxf
m
i
i
m
i
i 2
11
)( α





− ∑∑ ==
=
5
)5224.0)(6.24(9.22 −
=
5
851.129.22 −
= 2,0098
α2 = 2
11
2
1 11
)()(






−
−
∑∑
∑ ∑∑
==
= ==
m
i
i
m
i
i
m
i
m
i
ii
m
i
ii
xxm
xfxxfxm
= 2
)6.24()5.149)(5(
)9.22)(6.24()54.127)(5(
−
−
=
16.6055.747
34.563637.7
−
−
=
34.142
36.74
= 0.5224
Então, a melhor reta que passa pelos pontos, usando a equação, é:
ϕϕϕϕ(x) = 2.0098 + 0.5224x.
c) Cálculo do quadrado dos resíduos:
Os valores de ϕ(xi) e os respectivos resíduos estão na tabela abaixo:
i 1 2 3 4 5
xi 1.3 3.4 5.1 6.8 8.0
f(xi) 2.0 5.2 3.8 6.1 5.8
ϕϕϕϕ(xi) 2.68892 3.78596 4.67404 5.56212 6.189
r(xi) –0.68892 1.41404 –0.87404 0.53788 –0.389
Neste exemplo, a soma dos quadrados dos resíduos é:
∑=
m
i
ixr
1
2
)( = 3.6787
Exercício 1: Considere o ajuste da tabela abaixo por uma reta:
i 1 2 3 4 5
xi 0 0.25 0.5 0.75 1.00
f(xi) 1.0000 1.2840 1.6487 2.1170 2.7183
Resposta: ϕϕϕϕ(x) = 0.89968 + 1,70784x.
∑=
m
i
ixr
1
2
)( = 0.039198
7.1.2 Ajuste Polinomial
O ajuste linear simples é um caso especial do ajuste polinomial. A equação geral do ajuste
polinomial é dada por:
ϕ(x) = α1 + α2x + α3x2
+ ... + αn+1xn
e as equações normais ficam:
100




























=
























































∑
∑
∑
∑
∑∑∑∑
∑∑∑∑
∑∑∑∑
∑∑∑
=
=
=
=
==
+
=
+
=
=
+
===
=
+
===
===
)(
)(
)(
)(
.
1
1
2
1
1
3
2
1
1
2
1
2
1
1
1
1
2
1
4
1
3
1
2
1
1
1
3
1
2
1
11
2
1
i
m
i
n
i
i
m
i
i
i
m
i
i
m
i
i
n
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
i
m
i
i
m
i
i
m
i
n
i
m
i
i
m
i
i
m
i
i
m
i
n
i
m
i
i
m
i
i
xfx
xfx
xfx
xf
xxxx
xxxx
xxxx
xxxm
MM
L
MMMMM
L
L
L
α
α
α
α
Exemplo 1: Ajustar os pontos da tabela abaixo à equação ϕ(x) = α1 + α2
x + α3x2
.
I 1 2 3 4 5 6
xi –2 –1.5 0 1 2.2 3.1
f(xi) –30.5 –20.2 –3.3 8.9 16.8 21.4
O vetor α é a solução do sistema acima, que, neste caso, torna-se:


















=


































∑
∑
∑
∑∑∑
∑∑∑
∑∑
=
=
=
===
===
==
m
i
ii
m
i
ii
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
xfx
xfx
xf
xxx
xxx
xxm
1
2
1
1
3
2
1
1
4
1
3
1
2
1
3
1
2
1
1
2
1
)(
)(
)(
.
α
α
α
a) Cálculo dos somatórios:
m = 6
∑=
m
i
ix
1
= (–2) + (–1.5) + (0) + (1) + (2.2) + (3.1) = 2.8
∑=
m
i
ix
1
2
= (–2)2
+ (–1.5)2
+ (0)2
+ (1)2
+ (2.2)2
+ (3.1)2
= 21.7
∑=
m
i
ix
1
3
= (–2)3
+ (–1.5)3
+ (0)3
+ (1)3
+ (2.2)3
+ (3.1)3
= 30.064
∑=
m
i
ix
1
4
= (–2)4
+ (–1.5)4
+ (0)4
+ (1)4
+ (2.2)4
+ (3.1)4
= 137.8402
∑=
m
i
ixf
1
)( = (–30.5) + (–20.2) + (–3.3) + (8.9) + (16.8) + (21.4) = –6.9
∑=
m
i
ii xfx
1
)( = (–2)(–30.5) + (–1.5)(–20.2) + (0)(–3.3) + (1)(8.9) + (2.2)(16.8) + (3.1)(21.4) = 203.5
101
∑=
m
i
ii xfx
1
2
)( = (–2)2
(–30.5) + (–1.5)2
(–20.2) + (0)2
(–3.3) + (1)2
(8.9) + (2.2)2
(16.8) + (3.1)2
(21.4) =
128.416
b) Resolução do sistema:
O sistema é:









 −
=




















416.128
5.203
9.6
.
8402.137064.307.21
064.307.218.2
7.218.26
3
2
1
α
α
α
A solução deste sistema é:
α1 = –2.018
α2 = 11.33
α3 = –1.222
Portanto, ϕϕϕϕ(x) = –2.018 + 11.33x – 1.222x2
.
c) Cálculo do quadrado dos resíduos:
i 1 2 3 4 5 6
xi –2 –1.5 0 1 2.2 3.1
f(xi) –30.5 –20.2 –3.3 8.9 16.8 21.4
ϕϕϕϕ(xi) –29.566 –21.7625 –2.018 8.09 16.99352 21.36158
r(xi) –0.934 1.5625 –1.282 0.81 –0.19352 0.03842
A soma dos quadrados dos resíduos é:
∑=
m
i
ixr
1
2
)( = 5.652312337
Exemplo 2: Considerando a função tabelada abaixo
i 1 2 3 4 5 6 7 8 9 10 11
xi –1.0 –0.75 –0.6 –0.5 –0.3 0 0.2 0.4 0.5 0.7 1
f(xi) 2.05 1.153 0.45 0.4 0.5 0 0.2 0.6 0.512 1.2 2.05
a partir do diagrama de dispersão, deve ser ajustada por uma parábola passando pela origem, ou seja, f(x)
= ϕ(x) = α3x2
(neste caso temos apenas uma função g(x) = x2
).
Temos então o sistema abaixo:


















=


































∑
∑
∑
∑∑∑
∑∑∑
∑∑
=
=
=
===
===
==
m
i
ii
m
i
ii
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
m
i
i
xfx
xfx
xf
xxx
xxx
xxm
1
2
1
1
31
4
1
3
1
2
1
3
1
2
1
1
2
1
)(
)(
)(
0
0
.
α
102
ou seja,
∑=
m
i
ix
1
2
α3 = ∑=
m
i
ixf
1
)(
∑=
m
i
ix
1
3
α3 = ∑=
m
i
ii xfx
1
)(
∑=
m
i
ix
1
4
α3 = ∑=
m
i
ii xfx
1
2
)(
Tomando a última equação temos:
m = 11
∑=
m
i
ix
1
4
= (1) + (0.3164) + (0.1296) + (0.0625) + (0.0081) + (0) + (0.0016) + (0.0256) + (0.0625) +
(0.2401) + (1) = 2.8464
∑=
m
i
ii xfx
1
2
)( = (2.05) + (0.6486) + (0.162) + (0.1) + (0.145) + (0) + (0.008) + (0.096) + (0.128) + (0.588)
+ (2.05) = 5.8756
Assim, a nossa equação é 2.8464α3 = 5.8756 ⇒ α3 =
8464.2
8756.5
= 2.0642
Portanto, ϕϕϕϕ(x) = 2.0642x2
é a parábola que melhor se aproxima, no sentido dos quadrados
mínimos, da função tabelada.
Exercício 1: Ajustar os pontos da tabela abaixo à equação ϕ(x) = α1 + α2
x + α3x2
.
i 1 2 3 4 5 6 7
xi –0.75 –0.5 –0.25 0 0.25 0.5 0.75
f(xi) 1.3 1.1 0.2 0 0.5 0.6 1.5
Resposta: ϕϕϕϕ(x) = 0.176190476 - 0.024285714x + 2.2666666x2
.
∑=
m
i
ixr
1
2
)( = 0.25095238095238
103
8 Integração Numérica
8.1 Introdução
Do ponto de vista analítico existem diversas regras, que podem ser utilizadas na prática. Contudo,
embora tenhamos resultados básicos e importantes para as técnicas de integração analítica, como o
Teorema Fundamental do Cálculo Integral, nem sempre podemos resolver todos os casos. Não podemos
sequer dizer que para uma função simples a primitiva também será simples, pois f(x) = 1/x, que é uma
função algébrica racional, possui uma primitiva que não o é; a sua primitiva é a função ln(x) que é
transcendente.
Quando não conseguirmos calcular a integral por métodos analíticos, mecânicos ou gráficos, então
podemos recorrer ao método algorítmico. Em algumas situações, só podemos usar o método numérico.
Por exemplo, se não possuirmos a expressão analítica de f, não podemos, em hipótese nenhuma, usar
outro método que não o numérico. A integração numérica pode trazer ótimos resultados quando outros
métodos falham.
A solução numérica de uma integral simples é comumente chamada de quadratura.
Sabemos do Cálculo Diferencial e Integral que se f(x) é uma função contínua em [a, b], então esta
função tem uma primitiva neste intervalo, ou seja, existe F(x) tal que ∫ f(x) dx = F(x) + C, com F’(x) =
f(x); demostra-se que, no intervalo [a, b],
f x dx F b F a
a
b
( ) ( ) ( )= −∫
tais métodos, embora variados, não se aplicam a alguns tipos de integrandos f(x), não sendo conhecidas
suas primitivas F(x); para tais casos, e para aqueles em que a obtenção da primitiva, embora viável, é
muito trabalhosa, podem-se empregar métodos para o cálculo do valor numérico aproximado de
f x dx
a
b
( )∫ .
A aplicação de tais métodos é obviamente necessária no caso em que o valor de f(x) é conhecido
apenas em alguns pontos, num intervalo [a, b], ou através de um gráfico.
Lembrando que f x dx
a
b
( )∫ =
n
i
i
n
lim f x xi
→∞ =
∑ ( )
1
∆ (Riemann), onde xi ∈ [xi-1, xi] partes de [a, b], com
x0 = a, xn = b e ∆xi = | xi – xi-1 |, para n suficientemente grande e ∆xi suficientemente pequeno, f x xi
i
n
i( )
=
∑
1
∆
representa uma boa aproximação para f x dx
a
b
( )∫ .
Convém lembrar, também, que, sendo f(x) não negativa em [a, b], f x dx
a
b
( )∫ representa,
numericamente, a área da figura delimitada por y = 0, x = a, x = b e y = f(x), como mostra a figura abaixo:
104
y
x0 ba
y=f(x)
A
A = f x dx
a
b
( )∫
Quando f(x) não for somente positiva, pode-se considerar f(x) em módulo, para o cálculo da área,
conforme figura abaixo:
y
x0
b
a
y=f(x)
A
A
c
A = f x f x dx
c
b
a
c
( ) | ( )|+ ∫∫ ou A = | ( )|f x dx
a
b
∫
A idéia básica da integração numérica é a substituição da função f(x) por um polinômio que a
aproxime razoavelmente no intervalo [a, b]. Assim o problema fica resolvido pela integração de
polinômios, o que é trivial de se fazer. Com este raciocínio podemos deduzir fórmulas para aproximar
f x dx
a
b
( )∫ .
As fórmulas que deduziremos terão a expressão abaixo:
f x dx
a
b
( )∫ ≈ A0 f(x0) + A1 f(x1) + ... + An f(xn),xi ∈ [a, b], i = 0, 1, ..., n.
8.1.1 Fórmulas de Newton-Cotes
Nas fórmulas de Newton-Cotes a idéia de polinômio que aproxime f(x) razoavelmente é que este
polinômio interpole f(x) em pontos de [a, b] igualmente espaçados. Consideremos a partição do intervalo
[a, b] em subintervalos, de comprimento h, [xi, xi+1], i = 0, 1, ..., n-1. Assim xi+1 − xi = h = (b − a)/n.
As fórmulas fechadas de Newton-Cotes são fórmulas de integração do tipo xo = a, xn = b e
f x dx
a
b
( )∫ = f x dx
x
xn
( )
0
∫ ≅ A0 f(x0) + A1 f(x1) + ... + An f(xn) = A f xi i
i
n
=
∑
0
( ), sendo os coeficientes Ai
determinados de acordo com o grau do polinômio aproximador.
Analisaremos a seguir algumas das fórmulas fechadas de Newton-Cotes como regra dos
retângulos, regra dos trapézios e regra de Simpson.
105
Existem ainda as fórmulas abertas de Newton-Cotes, construídas de maneira análoga às fechadas,
com xo e xn ∈ (a, b).
8.2 Regra dos Retângulos
Seja o intervalo finito [a, b] no eixo x que é particionado em n subintervalos igualmente espaçados
[xi, xi+1], com x0 = a e xn = b e hi = xi+1 − xi. Seja f uma função contínua ou simplesmente Riemann
integrável, cuja integral não é conhecida.
Nosso objetivo é calcular f x dx
a
b
( )∫ pelo método da área dos retângulos. Tais retângulos podem
ser considerados de diversas maneiras, conforme mostra as figuras abaixo:
R1
R2
R3
R1
R2
R3
R1 R3
(a) (b) (c)
R2
No primeiro caso, figura (a), a área de cada retângulo é f(xi) • hi; no segundo caso é f(xi+1)•hi e no
último f((xi + xi+1)/2) • hi. Em qualquer caso a soma das áreas dos retângulos será uma aproximação para
f x dx
a
b
( )∫ .
Subdividindo o intervalo [a, b] em n subintervalos, pela regra dos retângulos, que será indicado
por R(h), é dada pelas fórmulas:
R(hn) = ihxf
n
i
i ).(
1
0
∑
−
=
, ou
R(hn) = ihxf
n
i
i ).(
1
0
1∑
−
=
+ , ou
R(hn) = ih
xx
f
n
i
ii
.
2
1
0
1
∑
−
=
+





 +
conforme for tomado o caso (a) ou (b) ou (c) da figura acima.
Como hi é constante, temos h
b a
n
=
−
. Então :
R(hn) = )(
1
0
∑
−
=
n
i
ixfh
ou
R(hn) = )(
1
0
1∑
−
=
+
n
i
ixfh
ou
106
R(hn) = ∑
−
=
+





 +1
0
1
2
n
i
ii xx
fh
Em geral, quando utilizarmos a regra dos retângulos iremos efetuar os cálculos através do caso (c),
ou seja, R(hn) = ∑
−
=
1
0
)(
n
i
ixfh , sendo xi =
2
1++ ii xx
.
8.2.1 Exemplos
Exemplo 1: Calcular
x
x
dx
1 2
0
1
+∫ . Considere n = 10 e 4 casas decimais com arredondamento.
a) Número de intervalos:
n = 10
b) Tamanho do intervalo
h
b a
n
=
−
= (1 − 0) / 10 = 0.1
c) iterações:
i xi f( xi )
0 (0 + 0.1) = 0.05 0.0499
1 (0.1 + 0.2) = 0.15 0.1467
2 (0.2 + 0.3) = 0.25 0.2353
3 (0.3 + 0.4) = 0.35 0.3118
4 (0.4 + 0.5) = 0.45 0.3742
5 (0.5 + 0.6) = 0.55 0.4223
6 (0.6 + 0.7) = 0.65 0.4569
7 (0.7 + 0.8) = 0.75 0.4800
8 (0.8 + 0.9) = 0.85 0.4935
9 (0.9 + 1) = 0.95 0.4993
Σ − 3.4699
R(0.1) = h f xi( )∑ = (0.1).(3.4699) = 0.34699
d) método analítico:
x
x
dx
1 2
0
1
+∫ =
1
2
1
1
2
2 1 0 346572
0
1
ln( ) (ln( ) ln( )) ,+

 = − =x .
Exemplo 2: Quando não for possível conhecer f(xi) pode-se usar f( xi ) = (f(xi-1) + f(xi))/2, para o cálculo
anterior, ter-se-ia:
a) Número de intervalos:
n = 10
b) Tamanho do intervalo:
h
b a
n
=
−
= (1 − 0) / 10 = 0.1
c) iterações:
107
i f(xi) f( xi )
−1 0 −
0 0.0990 0.0495
1 0.1923 0.1457
2 0.2752 0.2338
3 0.3448 0.3100
4 0.4000 0.3724
5 0.4412 0.4206
6 0.4698 0.4555
7 0.4878 0.4788
8 0.4972 0.4925
9 0.5000 0.4986
Σ − 3.4574
R(0.1) = h f xi( )∑ = (0.1).(3.4574) = 0.34574
Exercício 1: Calcular 3
1
1
x dx
−
∫ , para n = 8.
R(0.25) = h f xi( )∑ = (0.25).(0.0000) = 0.0000
método analítico: 3
1
1
x dx
−
∫ =
4
4
1
4
1
4
0
1
1
x 



= − =
−
.
8.3 Regra dos Trapézios
Seja o intervalo finito [a, b] no eixo x que é particionado em n subintervalos igualmente espaçados
[xi, xi+1], com x0 = a e xn = b e hi = xi+1 − xi. Seja f uma função contínua ou simplesmente Riemann
integrável, cuja integral não é conhecida.
Numericamente: A regra dos trapézios é obtida aproximando-se f por um polinômio interpolador do 1º
grau (ao invés de zero, como na regra dos retângulos). Se usarmos a fórmula de Lagrange para expressar
o polinômio p1(x) que interpola f(x) em x0 e x1 temos:
T
b
a
b
a
Idxxf
h
xx
xf
h
xx
dxxpdxxf
x
x
x
x
=




 −
+
−
−
=≈ ∫∫∫
=
=
1
0
1
0
)(
)(
)(
)(
)()( 1
0
0
1
1
Assim, IT = [ ])()(
2
10 xfxf
h
+ , que é a área do trapézio de altura h = x1 − x0 e bases f(x0) e f(x1).
Geometricamente: Podemos ver, conforme mostra a figura abaixo:
f(xi+1)
f(x)
f(xi)
xi+1xi
P1(x)
Interpretação geométrica da regra dos trapézios
108
A área de cada trapézio é (f(xi) + f(xi+1))/2 • hi. A soma destas áreas será uma aproximação para
f x dx
a
b
( )∫ .
8.3.1 Regra do Trapézio Repetida
Dividindo o intervalo [a, b] em n subintervalos, pela regra dos trapézios, o resultado, que será
indicado por T(h), é dada pela fórmula:
i
n
i
ii
n h
xfxf
hT ).
2
)()(
()(
1
0
1
∑
−
=
++
=
Como hi é constante, temos h
b a
n
=
−
. Então :
)
2
)()(
()(
1
0
1
∑
−
=
++
=
n
i
ii
n
xfxf
hhT
ou
[ ])()(2...)(2)(2)(
2
)( 1210 nnn xfxfxfxfxf
h
hT +++++= −
8.3.2 Exemplos
Exemplo 1: Calcular ∫
6,3
0,3
1
dx
x
pela regra dos trapézios e, depois, analiticamente. Considere n = 6 e 4 casas
decimais com arredondamento.
a) Número de intervalos:
n = 6
b) Tamanho do intervalo:
h
b a
n
=
−
= (3.6 − 3.0) / 6 = 0.1
c) iterações:
i xi f(xi) ci ci. f(xi)
0 3.0 0.3333 1 0.3333
1 3.1 0.3226 2 0.6452
2 3.2 0.3125 2 0.6250
3 3.3 0.3030 2 0.6060
4 3.4 0.2941 2 0.5882
5 3.5 0.2857 2 0.5714
6 3.6 0.2778 1 0.2778
Σ − − − 3.6469
[ ])()(2...)(2)(2)(
2
)( 652106 xfxfxfxfxf
h
hT +++++=
T(0.1) =
2
1.0
(3.6469) = 0,182345
109
d) método analítico:
∫
6,3
0,3
1
dx
x
= ]
6,3
0,3
)ln(x = ln(3.6) − ln(3.0) = 0.18232156
Exercício 1: Calcular ∫ +
1
0
)32( dxx pela regra dos trapézios e, depois, analiticamente. Considere n = 1 e 4
casas decimais com arredondamento.
T(1) =
2
1
(8) = 4
método analítico: ∫ +
1
0
)32( dxx = ]
1
0
2
3xx + = 1 + 3 − (0 + 0) = 4
Como a regra dos trapézios aproxima por uma reta e a função integranda é f(x) = 2x + 3 (uma
reta), o valor da integral obtido é exato.
Exercício 2: Calcular x x dxln( )
1
2
∫ pela regra dos trapézios, considerando diversos valores para n e,
depois, analiticamente.
T(1) =
2
1
(1.3863) = 0.6932
T(0.5) =
2
5.0
(2.6027) = 0.6507
T(0.25) =
2
25.0
(5.1191) = 0,6399
T(0.125) =
2
125.0
(10.1951) = 0,6372
método analítico: x x dxln( )
1
2
∫ =
2 2
1
2 2 2
1
2
2 4
2
4
x x x x x xln( ) ln( )
] ]− =
−
= = 0.63629436
8.4 Regra de Simpson
A regra de Simpson é obtida aproximando-se f por um polinômio interpolador de 2° grau, ou seja,
uma parábola.
Numericamente: Novamente podemos usar a fórmula de Lagrange para estabelecer a fórmula de
integração resultante da aproximação de f(x) por um polinômio de grau 2. Seja p2(x) o polinômio que
interpola f(x) nos pontos x0 = a, x1 = x0 + h e x2 = x0 + 2h = b:
p x
x x x x
h h
f x
x x x x
h h
f x
x x x x
h h
f x2
1 2
0
0 2
1
0 1
2
2 2
( )
( )( )
( )( )
( )
( )( )
( )( )
( )
( )( )
( )( )
( )=
− −
− −
+
− −
−
+
− −
Assim,
110
f x dx f x dx p x dx
a
b
x
x
x
x
( ) ( ) ( )∫ ∫ ∫= ≈ =
0
2
0
2
2
f x
h
x x x x dx
f x
h
x x x x dx
f x
h
x x x x dx
x
x
x
x
x
x
( )
( )( )
( )
( )( )
( )
( )( )
0
2
1 2
1
2
0 2
2
2
0 1
2 20
2
0
2
0
2
− − − − − + − −∫ ∫∫
Resolvendo as integrais obtemos a regra de Simpson:
f x dx
h
f x f x f x Is
x
x
( ) ( ) ( ) ( )[ ]≈ + + =∫ 3
40 1 2
0
2
Geometricamente: Podemos ver, conforme mostra a figura abaixo:
f
x0
=a
p2
(x)
x2
=bx1
h h
Interpretação geométrica da regra de Simpson simples
8.4.1 Regra de Simpson Repetida
Aplicando a regra de Simpson repetidas vezes no intervalo [a, b] = [x0, xn]. Vamos supor que x0,
x1, ..., xn são pontos igualmente espaçados, h = xi+1 − xi, e n é par (isto é condição necessária pois cada
parábola utilizará três pontos consecutivos). Assim teremos:
f x dx
a
b
( )∫ ≅ [ ])()(4...)(2)(4)(2)(4)(
3
)( 143210 nnn xfxfxfxfxfxfxf
h
hS +++++++= −
8.4.2 Exemplos
Exemplo 1: Calcular uma aproximação para x
e dx
0
1
∫ usando a regra de Simpson com n = 10.
a) Número de intervalos:
n = 10
b) Tamanho do intervalo:
h
b a
n
=
−
= (1 − 0) / 10 = 0.1
c) iterações:
i xi f(xi) ci ci. f(xi)
0 0.0 1 1 1
1 0.1 1.1052 4 4.4208
111
2 0.2 1.2214 2 2.4428
3 0.3 1.3499 4 5.3996
4 0.4 1.4918 2 2.9836
5 0.5 1.6487 4 6.5948
6 0.6 1.8221 2 3.6442
7 0.7 2.0138 4 8.0552
8 0.8 2.2255 2 4.4510
9 0.9 2.4596 4 9.8384
10 1.0 2.7183 1 2.7183
Σ − − − 51.5487
S h e e e e e e e( )
,
[ ... ], , , , , , ,
10
0 0 0 1 0 2 0 3 0 8 0 9 1 00 1
3
4 2 4 2 4= + + + + + + + = 1,71829
d) método analítico:
x
e dx
0
1
∫ = x
e e e0
1
1 0
2 7182818 1 1 7182818] , ,= − = − =
Exercício 1: Calcular o valor de π, dado pela expressão 4 ∫ +
1
0
2
1
1
dx
x
, considerando n = 10.
S h f x f x f x f x f x f x f x( )
,
[ ( ) ( ) ( ) ( ) ... ( ) ( ) ( )]10 0 1 2 3 8 9 10
0 1
3
4 2 4 2 4= + + + + + + + = 3,14157
método analítico: 4 ∫ +
1
0
2
1
1
dx
x
= 4( ]
1
0
)(xarctg ) = 4.(arctg(1) − arctg(0)) = 3.14159265
Exercício 2: Calcular x x dxln( )
1
2
∫ pela regra de Simpson, considerando diversos valores para n e, depois,
analiticamente.
S(0.5) =
3
5.0
(3.8191) = 0,6365
S(0.25) =
3
25.0
(7.6355) = 0.63629167
S(0.25) =
3
125.0
(15.2711) = 0,63629583
método analítico: x x dxln( )
1
2
∫ =
2 2
1
2 2 2
1
2
2 4
2
4
x x x x x xln( ) ln( )
] ]− =
−
= = 0.63629436
Exercício 3: Calcular uma aproximação para 2
0
1
1x dx+∫ usando Simpson com n = 2.
]2)25.1(41[
3
5.0
)5.0( ++=S =
4
3
= 1.33333...
112
método analítico: 2
0
1
1x dx+∫ =
3
0
1 3 3
3
1
3
1
0
3
0
4
3
x
x+ = + − + =] ( ) ( ) = 1.33333...
Como a regra de Simpson se aproxima por uma parábola e, sendo f(x) = x2
+ 1 uma parábola, o
valor da integral obtido é exato independente do número de subintervalos utilizado no cálculo.
9 Solução Numérica de Equações Diferenciais Ordinárias
9.1 Introdução
A equação diferencial é definida como uma equação que envolve uma função e algumas de suas
derivadas, da forma:
)](),.......,(''),(',[)( )1()(
xyxyxyxfxy nn −
=
Na engenharia a utilização de equações diferenciais tem como objetivo descrever o comportamento
dinâmico de sistemas físicos. Uma equação diferencial pode descrever o comportamento dinâmico do
circuito mostrado na figura:
S
V(t)=sin(3,5t) i(t)
Ao fechar-se a chave S, pode-se analisar o comportamento dinâmico do circuito a partir da Lei de
Kirchoff para tensões:
∫++= dtti
Cdt
tdi
LtRitV )(
1)(
)()(
Derivando a equação:
)(
1)()()(
2
2
ti
Cdt
tid
L
dt
tdi
R
dt
tdV
++=
Substituindo a expressão da tensão e rearranjando a equação, tem-se:
)5,3cos(
5,3
1
)(
1)()(
2
2
tti
Cdt
tdi
R
dt
tid
L =++
9.2 Tipos de Equações Diferenciais
9.2.1 Equações Diferenciais Ordinárias
São equações diferenciais que possuem apenas uma variável independente.
Exemplos:
1.1.1.1.2 1.1.1.1.1
1.1.1.1.3
113
yx
dx
dy
+=
y é função de x; x é a única variável independente.
22
yx
dt
dy
+=
y e x são função de t; t é a única variável independente.
0)1( 2
2
2
=+−+ y
dt
dy
y
dt
yd
y é função de t; t é a única variável independente.
9.2.2 Equações Diferenciais Parciais
Quando a equação diferencial envolve mais de uma variável independente.
Exemplo:
02
2
2
2
=
∂
∂
+
∂
∂
y
u
x
u
u é função de x e y; x e y são variáveis independentes.
9.3 Solução de Equações Diferenciais
Determinadas equações diferenciais podem ser solucionadas de forma simbólica, cuja solução é uma
expressão literal. Isto nem sempre é possível. Neste caso, a solução é a utilização de integração numérica,
como será visto na sequência.
Exemplo :
y
dx
dy
=
⇒
dx
y
dy
=
⇒
∫ ∫= dx
y
dy
⇒ 21)ln( cxcy +=+
xcx
aeexy == +
)(
Observe que a solução da equação diferencial resulta numa família de curvas que dependem da constante
a, como pode ser visto na figura abaixo. Uma solução particular pode ser obtida a partir das condições
iniciais do problema. A especificação de uma condição inicial define uma solução entre a família de
curvas.
114
Suponha no exemplo dado que o problema tem como solução inicial 1)0( =y . Portanto:
11)( 0
=⇒=⇒= aaeaexy x
A solução
x
exy ⋅=1)( é a solução para a condição inicial dada.
Quando as condições iniciais estão associadas a um único valor da variável independente, define-se como
um problema de valor inicial – (PVI). Quando as condições iniciais estão associadas mais de um valor da
variável independente, define-se como um problema de valor de contorno – (PVC). Normalmente,
problemas tendo como variável independente o tempo, são problemas de valor inicial.
9.4 Ordem de uma Equação Diferencial Ordinária
A ordem da equação é determinada pela derivada de maior ordem. Seja o exemplo de uma equação
diferencial ordinária de ordem n:
)](),.......,(''),(',[)( )1()(
xyxyxyxfxy nn −
=
9.5 Redução de Equações Diferenciais Ordinárias
Uma equação ordinária de ordem superior pode ser reduzido a um sistema de equações diferenciais de
primeira ordem. A redução é feita a partir da definição de variáveis auxiliares.
Seja a equação diferencial de ordem m com também m condições iniciais:
)](),.......,(''),('),(,[)( )1()(
xyxyxyxyxfxy mm −
=
m
m
cxy
cxy
cxy
=
=
=
−
)(
)(
)(
0
)1(
20
'
10
M
Esta equação pode ser transformada em um sistema de equações diferenciais com m equações, como
descreve-se abaixo:
-1 -0.5 0 0.5 1 1.5 2
0
5
10
15
20
25
30
35
40
45
y (x)
x
115
)](),.......,(''),('),(,[)()(
)()()(
)()()(
)()()(
)()()(
)()(
)1()('
)1('
1
4
''''
3
3
"'
2
2
''
1
1
xyxyxyxyxfxyxz
xzxyxz
xzxyxz
xzxyxz
xzxyxz
xyxz
mm
m
m
m
m
−
−
−
==
==
==
==
==
=
M
Tem-se portanto um sistema com m equações diferenciais de primeira ordem:











===
===
===
===
===
−
−
−
−
),...,,,()](),.......,(''),(',[)()(
),...,,,()()()(
),...,,,()()()(
),...,,,()()()(
),...,,,()()()(
21
)1()('
211
)1('
1
2134
''''
3
2123
"'
2
2112
''
1
mm
mm
m
mmm
m
m
m
m
m
zzzxfxyxyxyxfxyxz
zzzxfxzxyxz
zzzxfxzxyxz
zzzxfxzxyxz
zzzxfxzxyxz
M
Com as condições iniciais dadas por:
m
m
m cxyxz
cxyxz
cxyxz
cxyxz
cxyxz
==
==
==
==
==
−
)()(
)()(
)()(
)()(
)()(
0
)1(
0
40
'''
04
30
"
03
20
'
02
1001
M
Este artifício deve sempre ser utilizado quando da solução de equações diferenciais por métodos
numéricos, pois só pode-se integrar numericamente equações de primeira ordem. Observe que o sistema
de equações modela o comportamento dinâmico do problema.
Exemplo 8.2: Reduzir as Equações Diferenciais Ordinárias (EDO’s) a sistemas de EDO’s de primeira
ordem.
a) )(2)(3)( '''
xyxyxy −= , 1)0( −=y e 0)0('
=y
12
'"'
2
2
''
1
1
232)(3)()(
)()()(
)()(
zzyxyxyxz
xzxyxz
xyxz
−=−==
==
=
Resultando no sistema:
116
0)0(1)0(
),,(23)(
),,()()(
21
21212
'
2
2112
'
1
=−=




=−=
==
zz
zzxfzzxz
zzxfxzxz
b) )()1()cos()1( 222''''''
yxsinyxyxyxyxy ++=−−+++
3,3)0(2,2)0(1,1)0( '''
=== yyy
Reescrevendo a equação, tem-se:
)()1()cos()1( 222''''''
yxsinyxyxyxyxy +++−+−+−=
)()1()cos()1()()( 1
2
1
2
1
2
23
''''
3
3
"'
2
2
''
1
1
zxsinzxzxzxzxxyxz
zyz
zyz
yz
+++−+−+−==
==
==
=
Resultando no sistema:
3,3)0(2,2)0(1,1)0(
),,,()()1()cos()1()()(
),,,(
),,,(
321
32131
2
1
2
1
2
23
''''
3
32123
"'
2
32112
''
1
===






=+++−+−+−==
===
===
zzz
zzzxfzxsinzxzxzxzxxyxz
zzzxfzyz
zzzxfzyz
9.6 Solução Numérica de Equações Diferenciais Ordinárias – Problema de Valor
Inicial
Considere a equação diferencial ordinária:
),('
yxfy = com condição inicial 00 )( yxy =
A solução da equação diferencial acima é uma função do tipo )(xy , conforme ilustrada abaixo:
X
x0
X
x1
X
X
X
x2 x3 .... xn
y(x0)
y(x1)
y(x2)
y(x3)
y(xn)
y (x)
x
117
Com a solução numérica de uma equação diferencial, obtém-se uma aproximação para os valores
)(),......,(),(),(),( 3210 nxyxyxyxyxy
, ou seja:
x 1x 2x 3x ......... nx
y 1y 2y 3y ......... ny
Considera-se que a notação
njxy j ,...,2,1),( =
indica a solução exata da EDO nos pontos
nxxxx ,...,,, 321 , e
njy j ,....,2,1, =
indica a solução aproximada obtida por método numérico.
Na solução numérica não se determina a expressão literal da função )(xy , mas aproximações para pontos
da função )(xy . Com os valores aproximados obtidos, pode-se plotar a curva. Em aplicações da
engenharia, normalmente estuda-se o comportamento dinâmico de determinadas variáveis, portanto
necessita-se a evolução das variáveis em função da variável independente. Com a curva plotada, pode-se
estudar esta evolução.
9.6.1 Método de Euler
Seja a solução de uma equação diferencial do tipo:
),( yxf
dx
dy
=
com valor inicial 00 )( yxy =
A solução desta equação resulta numa função )(xy , como mostrado no gráfico:
y(x)
A partir da equação diferencial, pode-se observar que a derivada da função )(xy em um ponto qualquer x
é dada por f(x,y). Conhecendo-se a derivada da função )(xy no ponto 0x
, ou seja [
),( 00 yxf
] , pode-se
estimar o valor da função )(xy no ponto 1x por meio de relações trigonométricas:
)( 1xy
0x 1x
1y
)(xy
x
Reta Tangente no ponto
x
01 xxh −=
0y
118
),(),(),()( 0001
01
00
01
01
00 yxhfyy
h
yy
yxf
xx
yy
yxftg +=⇒
−
=⇒
−
−
==α
Esta relação pode ser generalizada para um ponto i qualquer, resultando na forma de recorrência
para solução de equações diferenciais pelo Método de Euler:
Exemplo: Achar aproximações para a solução o problema de valor inicial, na malha [0,1] e h=0,1, dado
por:
2'
+−= yxy para 2)0( =y
A solução desta equação resulta em uma função )(xy , como mostrada na figura abaixo.
Resolvendo esta equação através do Método de Euler, iremos determinar aproximações para pontos de
)(xy .
20 00 == yx
01 yyy −=∆01 xxh −=
α
),( 111 −−− += iiii yxhfyy
0 0.2 0.4 0.6 0.8 1
0
0.5
1
1.5
2
2.5
3
y (x)
x
119
01,2)221,0(1,02),( 1112 =+−⋅+=+= hyxfyy
01,22,01,01,0 212 ==+=+= yhxx
029,2)201,22,0(1,001,2),( 2223 =+−⋅+=+= hyxfyy
029,23,01,02,0 323 ==+=+= yhxx
0561,2)2029,23,0(1,0029,2),( 3334 =+−⋅+=+= hyxfyy
0561,24,01,03,0 434 ==+=+= yhxx
09049,2)20561,24,0(1,00561,2),( 4445 =+−⋅+=+= hyxfyy
Na figura abaixo está plotada a solução numérica e a solução exata, observe que para efeitos práticos
podemos observar o comportamento dinâmico da variável, que é o quê normalmente interessa em
aplicações da engenharia.
Na tabela abaixo, mostra-se os valores calculados comparados aos valores exatos:
j jx jy )( jxy )( jj xyy −
0 0 2,0000000 2,0000000 0,000000
1 0,1 2,0000000 2,0048370 -0,004837
2 0,2 2,0100000 2,0187310 -0,008731
3 0,3 2,0290000 2,0408180 -0,011818
4 0,4 2,0561000 2,0703200 -0,014220
5 0,5 2,0904900 2,1065310 -0,016041
6 0,6 2,1314410 2,1488120 -0,-17371
7 0,7 2,1782969 2,1965850 -0,018288
8 0,8 2,2304672 2,2493290 -0,018862
9 0,9 2,2874205 2,3065700 -0,019149
10 1,0 2,3486784 2,3678790 -0,019201
0 0.2 0.4 0.6 0.8 1
0
0.5
1
1.5
2
2.5
3
solução numérica
solução exata
120
9.7 Análise do Erro para o Método de Euler na Solução Numérica do Problema de Valor
Inicial
Os erros cometidos são de duas naturezas:
a) Erros de truncamentos causados pelo tipo de técnica empregada para a atualização do
valor de y;
b) Erros de arredondamentos causados pela aritmética de precisão finita utilizadas pelos
computadores digitais e pelo modo de se programar.
Os erros de truncamento podem ser separados em duas partes:
a) Erro de truncamento local: erro cometido num ponto genérico 1+kx
, determinado pela
diferença do valor aproximado 1+ky
e o valor no ponto 1+kx
da solução da equação
diferencial que passa em 1+ky
;
b) Erro de truncamento acumulado: erros cometidos pelas aproximações produzidas nos
passos anteriores. É determinado pela diferença entre o valor aproximado 1+ky
com o
valor exato
)( 1+kxy
.
O erro de truncamento local é determinado pela expressão:
)(
!2
''
2
ξy
h
ET =
jj xx <<− ξ1
O valor de ξ é desconhecido, entretanto, pode-se definir um majorante para o erro de truncamento local.
Se )(xy possui derivada contínua num intervalo fechado
],[ 1+nn xx
, que contém os pontos sobre os quais
está sendo feita a discretização, então existe:
],[)(max 1
)1(
1 +
+
+ ∈= nn
k
k xxxxyM
1y
1x
)( 1xy
0x 2x
2y
Erro
Local
Erro
Acumulado =
Erro Local
3x
)( 2xy
)( 3xy
3y
)( 0xy
Erro
Acum
.
Solução
y(x) do PVI
Sol. da
EDO em
)(xy
Solução da
EDO em
Solução da
EDO em
Erro
Erro
x
121
Assim:
],[)( 12
)2(
+∈∀≤ nn xxMy ξξ
!2
)(
2
2
1
hM
xE kT ≤+
Observe que o erro de truncamento local é proporcional ao passo de integração ao quadrado. O erro
acumulado também pode ser limitado por um majorante:
Suponha que )(xy represente solução única do problema de valor inicial:
α=≤≤= )(),('
aybxayxfy
e nyyy ,.......,, 21 sejam as aproximações geradas pelo Método de Euler. Se f(x,y) for contínua para todo x
no intervalo [a,b] e todo y no intervalo ),( ∞−∞ e ainda existem as constantes L e C, tais que:
L
x
xyxf
≤
∂
∂ ))(,(
e
Cxy ≤)(''
então para cada ni ,......2,1= :
[ ]1
2
)( )(
−≤− −axL
ii
i
e
L
hC
yxy
Pode-se observar que para a determinação dos erros de truncamento local e acumulado, necessita-se do
valor maxímo da segunda derivada de y(x), o que restringe sua utilização na prática. Também é
importante observar-se que o erro tende a zero quando h tende a zero.
Tarefa: Seja o problema do Exemplo:
2'
+−= yxy para 2)0( =y
A solução desta equação diferencial é dada por:
1)( ++= −
xexy x
Determine o limite do erro acumulado nos pontos da malha [0,1], com 1,0=h , quando da solução da
equação diferencial pelo Método de Euler, e compare com o erro real calculado no Exemplo 8.3.
9.8 Método de Euler Modificado
Para melhorar a qualidade da estimativa, a tangente a ser considerada não é a do ponto inicial do
intervalo, mas no ponto médio.
122
y(x)
Utilizando o Método de Euler, calcula-se o valor 2/1+iy
, no meio do intervalo, a partir da tangente
),( ii yxf
:
2
),(2/1
h
yxfyy iiii +=+
Com os valores 2/1+ix
e 2/1+iy
, determina-se a reta tangente no meio do intrvalo:
),( 2/12/1
'
2/1 +++ = iii yxfy
Esse valor é assumido representar uma inclinação média do intervalo inteiro. Assim, determina-se o valor
de y no ponto 1+ix
:
hyyhyxfyy iiiiii ⋅+=⋅+= ++++
'
2/12/12/11 ),(
Observe que a diferença em relação ao Método de Euler normal é a utilização da inclinação no meio do
intervalo.
Exemplo: Repita o exemplo anterior, utilizando o Método de Euler Modificado.
2'
+−= yxy para 2)0( =y
malha [0,1], h=0,1. Os resultados parciais são apresentados a seguir de acordo com a sequência:
2
2/1
h
xx jj +=+
2
),(2/1
h
yxfyy jjjj +=+
hyyhyxfyy jjjjjj ⋅+=⋅+= ++++
'
2/12/12/11 ),(
hxx jj +=+1
)( jj xyyres −=
)( 1+ixy
ix 1+ix
1+iy
)(xy
x
Reta Tangente no ponto
+x
2
2/1
h
xx ii +=+
iy
2/1+ix
2/1+iyReta Tangente no ponto ix
123
j = 1 xmedio = 0.05000000000000 ymedio = 2
yj = 2.00500000000000 xj = 0.10000000000000 erro = 1.629999999996912e-004
j = 2 xmedio = 0.15000000000000 ymedio = 2.00975000000000
yj = 2.01902500000000 xj = 0.20000000000000 erro = 2.940000000002385e-004
j = 3 xmedio = 0.25000000000000 ymedio = 2.02807375000000
yj = 2.04121762500000 xj = 0.30000000000000 erro = 3.996250000004586e-004
j = 4 xmedio = 0.35000000000000 ymedio = 2.05415674375000
yj = 2.07080195062500 xj = 0.40000000000000 erro = 4.819506250002270e-004
j = 5 xmedio = 0.45000000000000 ymedio = 2.08726185309375
yj =2.10707576531563 xj = 0.50000000000000 erro = 5.447653156251953e-004
j = 6 xmedio = 0.55000000000000 ymedio = 2.12672197704984
yj = 2.14940356761064 xj = 0.60000000000000 erro = 5.915676106407197e-004
j = 7 xmedio = 0.65000000000000 ymedio = 2.17193338923011
yj = 2.19721022868763 xj = 0.70000000000000 erro = 6.252286876300417e-004
j = 8 xmedio = 0.75000000000000 ymedio = 2.22234971725325
yj = 2.24997525696230 xj = 0.80000000000000 erro = 6.462569623049141e-004
j = 9 xmedio = 0.85000000000000 ymedio = 2.27747649411419
yj = 2.30722760755089 xj = 0.90000000000000 erro = 6.576075508859525e-004
j = 10 xmedio = 0.95000000000000 ymedio = 2.33686622717334
yj = 2.36854098483355 xj = 1.00000000000000 erro = 6.619848335516210e-004
Na tabela abaixo, mostra-se os valores calculados comparados aos valores exatos:
Exato Euler Erro Euler Mod. Erro
j jx )( jxy jy )( jj xyy − jy )( jj xyy −
0 0 2,0000000 2,0000000 0,000000 2,0000000 0,0000000
1 0,1 2,0048370 2,0000000 -0,004837 2,0050000 0,0001629
2 0,2 2,0187310 2,0100000 -0,008731 2,0190250 0,0002940
3 0,3 2,0408180 2,0290000 -0,011818 2,0412176 0,0003996
4 0,4 2,0703200 2,0561000 -0,014220 2,0708019 0,0004819
5 0,5 2,1065310 2,0904900 -0,016041 2,1070757 0,0005447
6 0,6 2,1488120 2,1314410 -0,-17371 2,1494035 0,0005915
7 0,7 2,1965850 2,1782969 -0,018288 2,1972102 0,0006252
124
8 0,8 2,2493290 2,2304672 -0,018862 2,2499752 0,0006425
9 0,9 2,3065700 2,2874205 -0,019149 2,3072276 0,0006576
10 1,0 2,3678790 2,3486784 -0,019201 2,3685409 0,0006619
9.8.1 Método Heum
No Método de Euler Modificado a inclinação do intervalo é determinada no ponto médio do intervalo. No
Método de Heum, a inclinação do intervalo é determinada pela média aritmética das inclinações no início
e no fim do intervalo.
Para o cálculo da inclinação no fim do intervalo, faz-se uma estimativa do valor da solução ( 1+iy
) pelo
Método de Euler com o valor da inlinação do início do intervalo
)],([ ii yxf
:
hyxfyy iiii ⋅+=+ ),(0
1
Observe que o superescrito 0 em 1+iy
é para indicar que é apenas uma estimativa, que será utilizada para
a determinação da inclinação no ponto 1+ix
, ou seja:
),( 0
111
'
+++ = iii yxfy
Com o valor da inclinação no final do intervalo, pode-se determinar o valor da inclinação média do
intervalo, por meio da média aritmética:
[ ]
2
),(),( 0
11 +++
= iiii yxfyxf
MédiaInclinação
Tangente no Fim do
Intervalo
),( 0
11 ++ ii yxfTangente no Início do
Intervalo
),( ii yxf
y(x)
x
ix 1+ix
iy
0
1+iy Tangente Média do
Intervalo
2/)],(),([ 0
11 iiii yxfyxf +++
125
O valor da função no fim do intervalo é dado por:
[ ] h
yxfyxf
yy iiii
ii ⋅
+
+= ++
+
2
),(),( 0
111
1
Observe que o cálculo do valor da função no fim do intervalo pode ser repetido até que se alcance uma
determinada convergência, ou seja:
[ ] h
yxfyxf
yy iiii
ii ⋅
+
+= ++
+
2
),(),( 1
112
1
[ ] h
yxfyxf
yy iiii
ii ⋅
+
+= ++
+
2
),(),( 3
113
1
M
[ ] h
yxfyxf
yy
k
iiii
i
k
i ⋅
+
+=
−
++
+
2
),(),( 1
11
1
A cada nova correção, pode-se fazer um teste do tipo:
ε≤− −
++
1
11
k
i
k
i yy
Caso esteja dentro de uma tolerância inicial, pode-se parar a correção.
O Método de Heun se enquadra nos chamados métodos previsor x corretor. Faz-se uma estimativa com o
previsor e se melhora a estimativa através do corretor. O corretor pode ser repetido até uma convergência
determinada.
Previsor:
hyxfyy iiii ⋅+=+ ),(0
1
Corretor:
[ ] h
yxfyxf
yy iiii
ii ⋅
+
+= ++
+
2
),(),( 0
111
1
Exemplo: Repita o exemplo 8.3, utilizando o Método de Heun, com uma iteração de correção.
2'
+−= yxy para 2)0( =y
malha [0,1], h=0,1. Os resultados parciais são apresentados a seguir de acordo com a sequência:
hyxfyy iiii ⋅+=+ ),(0
1
hxx ii +=+1
[ ] h
yxfyxf
yy iiii
ii ⋅
+
+= ++
+
2
),(),( 0
111
1
126
j = 1 y0 = 2 x = 0.10000000000000
y1 = 2.00500000000000 erro = 1.629999999996912e-004
j = 2 y0 = 2.01450000000000 x = 0.20000000000000
y1 = 2.01902500000000 erro = 2.940000000002385e-004
j = 3 y0 = 2.03712250000000 x = 0.30000000000000
y1 = 2.04121762500000 erro = 3.996250000004586e-004
j = 4 y0 = 2.06709586250000 x = 0.40000000000000
y1 = 2.07080195062500 erro = 4.819506250002270e-004
j = 5 y0 = 2.10372175556250 x = 0.50000000000000
y1 = 2.10707576531563 erro = 5.447653156251953e-004
j = 6 y0 = 2.14636818878406 x = 0.60000000000000
y1 = 2.14940356761064 erro = 5.915676106407197e-004
j = 7 y0 = 2.19446321084958 x = 0.70000000000000
y1 = 2.19721022868763 erro = 6.252286876300417e-004
j = 8 y0 = 2.24748920581887 x = 0.80000000000000
y1 = 2.24997525696230 erro = 6.462569623049141e-004
j = 9 y0 = 2.30497773126607 x = 0.90000000000000
y1 = 2.30722760755089 erro = 6.576075508859525e-004
j =10 y0 = 2.36650484679580 x = 1.00000000000000
y1 = 2.36854098483355 erro = 6.619848335516210e-004
Exato Euler Erro Heun Erro
j jx )( jxy jy )( jj xyy − jy )( jj xyy −
0 0 2,0000000 2,0000000 0,000000 2,0000000 0,0000000
1 0,1 2,0048370 2,0000000 -0,004837 2,0050000 0,0001629
2 0,2 2,0187310 2,0100000 -0,008731 2,0190250 0,0002940
3 0,3 2,0408180 2,0290000 -0,011818 2,0412176 0,0003996
127
4 0,4 2,0703200 2,0561000 -0,014220 2,0708019 0,0004819
5 0,5 2,1065310 2,0904900 -0,016041 2,1070757 0,0005476
6 0,6 2,1488120 2,1314410 -0,-17371 2,1494033 0,0005915
7 0,7 2,1965850 2,1782969 -0,018288 2,1972102 0,0006252
8 0,8 2,2493290 2,2304672 -0,018862 2,2499752 0,0006462
9 0,9 2,3065700 2,2874205 -0,019149 2,3072276 0,0006576
10 1,0 2,3678790 2,3486784 -0,019201 2,3685409 0,0006619
Exemplo 8.6: Repita o exemplo 8.3, utilizando o Método de Heun, com três iteração de correção.
2'
+−= yxy para 2)0( =y
malha [0,1], h=0,1. Os resultados são apresentados na tabela a seguir:
Exato Heun
( 1 Corr.)
Erro Heun
(3 Corr.)
Erro
j jx )( jxy jy )( jj xyy − jy )( jj xyy −
0 0 2,0000000 2,0000000 0,0000000 2,0000000 0,0000000
1 0,1 2,0048370 2,0050000 0,0001629 2,0047625 -0,0000745
2 0,2 2,0187310 2,0190250 0,0002940 2,0185951 -0,0001358
3 0,3 2,0408180 2,0412176 0,0003996 2,0406342 -0,0001837
4 0,4 2,0703200 2,0708019 0,0004819 2,0700980 -0,0002219
5 0,5 2,1065310 2,1070757 0,0005476 2,1062796 -0,0002513
6 0,6 2,1488120 2,1494033 0,0005915 2,1485390 -0,0002729
7 0,7 2,1965850 2,1972102 0,0006252 2,1962975 -0,0002874
8 0,8 2,2493290 2,2499752 0,0006462 2,2490314 -0,0002975
9 0,9 2,3065700 2,3072276 0,0006576 2,3062667 -0,0003032
10 1,0 2,3678790 2,3685409 0,0006619 2,3675749 -0,0003040
9.8.2 Método Runge-Kutta
O Método de Runge-Kutta é determinado a partir da Série de Taylor e sua expressão de recorrência é
dada por:
hhyxyy iiii ⋅+=+ ),,(1 φ
onde
),,( hyx iiφ é chamada de função incremento e pode ser interpretada coma uma inclinação média
sobre o intervalo.
Genericamente:
nnii kakakahyx +++= ...............),,( 2211φ
),(1 ii yxfk =
),( 11112 hkqyhpxfk ii ++=
),( 22212123 hkqhkqyhpxfk ii +++=
M
)..........,( 1)1)(1(22)1(11)1(1 hkqhkqhkqyhpxfk nnnnninin −−−−−− +++++=
128
9.8.3 Derivação do Método de Runge-Kutta de Segunda Ordem
hkakayy ii ⋅++=+ )( 22111 (1)
),(1 ii yxfk =
(2)
),( 11112 hkqyhpxfk ii ++=
(3)
Deve-se determinar os valores das constantes 1a , 2a , 1q e 11q .
Expande-se 1+iy
em Série de Taylor:
!2
),(),(
2
'
1
h
yxfhyxfyy iiiiii +⋅+=+
(4)
Determina-se
),('
ii yxf pela Regra da Cadeia:
dx
dy
y
f
x
f
yxf ii
∂
∂
+
∂
∂
=),('
(5)
Substituindo na expressão (4):
!2
),(
2
1
h
dx
dy
y
f
x
f
hyxfyy iiii 





∂
∂
+
∂
∂
+⋅+=+
(6)
A estratégia do Método de runge-Kutta é através de manipulações algébricas, tornar as expressões (1) e
(6) equivalentes. Expande-se a expressão (3) em Série de Taylor:
)(),(),( 2
11111111 h
y
f
hkq
x
f
hpyxfhkqyhpxf iiii Ο+
∂
∂
+
∂
∂
+=++
(7)
Substituindo (7) em (1):
)(),(),(),( 32
112
2
12211 h
y
f
yxfhqa
x
f
hpayxhfayxhfayy iiiiiiii Ο+
∂
∂
+
∂
∂
+++=+
(8)
Reagrupando os termos:
)(]),([)],(),([ 32
11212211 hh
y
f
yxfqa
x
f
pahyxfayxfayy iiiiiiii Ο+
∂
∂
+
∂
∂
+++=+
(9)
Comparando os termos das equações (6) e (9):
2
1
2
1
1
112
12
21
=
=
=+
qa
pa
aa
Observe que tem-se três equações e quatro incógnitas, portanto tem-se infinitas soluções. Portanto
existem infinitos formulações para o Método de Runge-Kutta de Segunda Ordem.
É importante realçar que o Método de Heun com uma iteração de correção e o Método de Euler
Modificado podem ser classificados como Métodos de Runge-Kutta de Segunda Ordem.
9.8.4 Método de Heun
129
Assumindo :
1
2
1
111
21
==
==
qp
aa
hkkyy ii ⋅++=+ )
2
1
2
1
( 211
),(1 ii yxfk =
),( 12 hkyhxfk ii ++=
1k - inclinação no início do intervalo
2k - inclinação no fim do intervalo
9.8.5 Método de Euler Modificado
Assumindo :
2
1
1
0
111
2
1
==
=
=
qp
a
a
hkyy ii ⋅+=+ 21
),(1 ii yxfk =
)
2
,
2
( 12 k
h
y
h
xfk ii ++=
O Método de Runge-Kutta mais conhecido é o Método de Ralston. Este método propicia um limite
mínimo para o erro de truncamento dos algoritmos de Runge-Kutta de Segunda Ordem.
9.8.6 Método de Ralston
Assumindo :
4
3
3
2
3
1
111
2
1
==
=
=
qp
a
a
hkkyy ii ⋅++=+ )
3
2
3
1
( 211
),(1 ii yxfk =
)
4
3
,
4
3
( 12 hkyhxfk ii ++=
130
Exemplo: Integre a função 8520122),( 23
+−+−= xxxyxf de 0=x até 4=x , passo de integração
5,0=h com as três versões do Método de Runge-Kutta de Segunda Ordem. Condições Iniciais: Para
0=x , 1=y
Método de Heun
hkkyy ii ⋅++=+ )
2
1
2
1
( 211
),(1 ii yxfk =
),( 12 hkyhxfk ii ++=
hkkyy ⋅++= )
2
1
2
1
( 2101
5,85,802001202),( 23
001 =+⋅−⋅+⋅−== yxfk
25,15,85,0205,0125,02)25,5,5,0(),( 23
1002 =+⋅−⋅+⋅−==++= fhkyhxfk
4375,35,0
2
25,15,8
1)
2
1
2
1
( 2101 =⋅




 +
+=⋅++= hkkyy
Método de Euler Modificado:
hkyy ii ⋅+=+ 21
),(1 ii yxfk =
)
2
,
2
( 12 k
h
y
h
xfk ii ++=
hkyy ⋅+= 201
5,85,802001202),( 23
001 =+⋅−⋅+⋅−== yxfk
21875,45,825,02025,01225,02
)125,3,25,0()5,8
2
5,0
1,
2
5,0
0()
2
,
2
(
23
1002
=+⋅−⋅+⋅−=
==⋅++=++= ffk
h
y
h
xfk
109375,35,021875,41201 =⋅+=⋅+= hkyy
Método de Ralston:
hkkyy ii ⋅++=+ )
3
2
3
1
( 211
),(1 ii yxfk =
)
4
3
,
4
3
( 12 hkyhxfk ii ++=
hkkyy ⋅++= )
3
2
3
1
( 2101
5,85,802001202),( 23
001 =+⋅−⋅+⋅−== yxfk
582031,25,8375,020375,012375,02
)1875,4,375,0()5,85,0
4
3
1,5,0
4
3
0()
4
3
,
4
3
(
23
12
=+⋅−⋅+⋅−=
==⋅⋅+⋅+=++= ffhkyhxfk ii
131
27734375,35,0)582031,2
3
2
5,8
3
1
(1)
3
2
3
1
( 2101 =⋅⋅+⋅+=⋅++= hkkyy
Na tabela a seguir mostra-se o resultado para os passos de integração seguintes:
x y exato Heun Erro (%) Euler Mod. Erro (%) Ralston Erro (%)
0,0 1,00000 1,00000 0,0 1,00000 0 1,00000 0
0,5 3,21875 3,43750 6,8 3,10937 3,4 3,27734 1,8
1,0 3,00000 3,37500 12,5 2,81250 6,3 3,10156 3,4
1,5 2,21875 2,68750 21,1 1,98437 10,6 2,34765 5,8
2,0 2,00000 2,50000 25,0 1,75000 12,5 2,14062 7,0
2,5 2,71875 3,18750 17,2 2,48437 8,6 2,85546 5,0
3,0 3,00000 4,37500 9,4 3,81250 4,7 4,11718 2,9
3,5 4,71875 4,93750 4,6 4,60937 2,3 4,80078 1,7
4,0 3,00000 3,00000 0,0 3,00000 0 3,03125 1,0
9.9 Método de Runge_Kutta Terceira Ordem
De forma semelhante ao que se fez para o Método de Runge_Kutta de Segunda Ordem, pode-se
determinar para ordens mais elevadas.
As formulações não são únicas. Apresenta-se a seguir uma dasformulação mais utilizadas:
hkkkyy ii ⋅+++=+ )]4(
6
1
[ 3211
),(1 ii yxfk =
)
2
1
,
2
1
( 12 hkyhxfk ii ++=
)2,( 213 hkhkyhxfk ii +−+=
9.10 Método de Runge_Kutta Quarta Ordem
hkkkkyy ii ⋅++++=+ )]22(
6
1
[ 43211
),(1 ii yxfk =
)
2
1
,
2
1
( 12 hkyhxfk ii ++=
)
2
1
,
2
1
( 23 hkyhxfk ii ++=
),( 34 hkyhxfk ii ++=
Exemplo: Integre a função 8520122),( 23
+−+−= xxxyxf de 0=x até 5,0=x , passo de integração
5,0=h com o Método de Runge-Kutta de Quarta Ordem. Condições Iniciais: Para 0=x , 1=y
hkkkkyy ⋅++++= )]22(
6
1
[ 432101
5,85,802001202),( 23
001 =+⋅−⋅+⋅−== yxfk
132
21875,45,825,02025,01225,02
)125,3,25,0()5,85,05,01,5,05,00()
2
1
,
2
1
(
23
1002
=+⋅−⋅+⋅−=
==⋅⋅+⋅+=++= ffhkyhxfk
21875,45,825,02025,01225,02
)054,2,25,0()21875,45,05,01,5,05,00()
2
1
,
2
1
(
23
2003
=+⋅−⋅+⋅−
==⋅⋅+⋅+=++= ffhkyhxfk
25,15,85,0205,0125,02
)1093,3,5,0()21875,45,01,5,00(),(
23
3004
=+⋅−⋅+⋅−=
==⋅++=++= ffhkyhxfk
21875,3
5,0)]25,121875,4221875,425,8(
6
1
[1)]22(
6
1
[ 432101
=
=⋅+⋅+⋅++=⋅++++= hkkkkyy
9.11 Métodos de Passos Múltiplos
Nos métodos vistos anteriormente, a cada nova estimativa da função utilizava-se a
informação de um único ponto anterior. Como é o caso do Método de Euler, mostrado na
figura:
y(x)
No caso dos métodos de passos múltiplos, utiliza-se informação de mais do que um
ponto anterior.
0x 1x
1y
)(xy
x
Estimativa a partir de
um único ponto
01 xxh −=
0y
133
y(x)
9.12 Idéia Basica dos Métodos de Passos Múltiplos
Seja a equação diferencial:
),('
yxf
dx
dy
y ==
Deseja-se uma nova estimativa da solução y no ponto 1+nx . Integra-se a equação diferencial de
nx a 1+nx :
∫∫
++
=
11
),()('
n
n
n
n
x
x
x
x
dxyxfdxxy
∫
+
=−+
1
),()()( 1
n
n
x
x
nn dxyxfxyxy
∫
+
+=+
1
),()()( 1
n
n
x
x
nn dxyxfxyxy
Para a nova estimativa, a integral ∫
+1
),(
n
n
x
x
dxyxf é aproximada por alguma forma de quadratura
numérica.
Os Métodos de passos múltiplos são classificados em explícitos e implícitos.
0x 1x
)(xy
x
0y
2x nx....
ny
Estimado a partir de
informações conhecidas de
n pontos anteriores
1y 3y
134
9.12.1 Métodos Explícitos
Os métodos explícitos, quando da nova estimativa da solução no ponto 1+nx , utilizam
informações de m pontos anteriores. Deve-se conhecer: ),( nn yx , ),( 11 −− nn yx , .....,
),( mnmn yx −− . A partir desses dados, aproxima-se a função f(x,y) por um polinômio )(xPm , de
grau m.
∫
+
+≈+
1
)()()( 1
n
n
x
x
mnn dxxPxyxy
9.12.2 Algoritmos de Adans-Bashforth de ordem m
m=1: ),(1 nnnn yxfhyy ⋅+=+
m=2: [ ]),(),(3
2
111 −−+ −⋅+= nnnnnn yxfyxf
h
yy
m=3: [ ]),(5),(16),(23
12
22111 −−−−+ ⋅+⋅−⋅+= nnnnnnnn yxfyxfyxf
h
yy
m=4: [ ]),(9),(37),(59),(55
24
3322111 −−−−−−+ ⋅−⋅+⋅−⋅+= nnnnnnnnnn yxfyxfyxfyxf
h
yy
9.12.3 Métodos Implícitos
Os métodos implícitos, quando da nova estimativa da solução no ponto 1+nx , utilizam
informações de m-1 pontos anteriores e uma estimativa inicial no ponto 1+nx . Deve-se
conhecer: ),( 0
11 ++ nn yx , ),( nn yx , ....., ),( 11 +−+− mnmn yx . A partir desses dados, aproxima-se a
função f(x,y) por um polinômio )(xPm , de grau m.
∫
+
+≈+
1
)()()( 1
n
n
x
x
mnn dxxPxyxy
A idéia dos métodos implícitos é a utilização como um algoritmo corretor. Como visto
no Método de Heun.
Utiliza-se um algoritmo previsor, que pode ser algoritmos da família Adans-
Bashfoth, e se corrige com um método implícito.
9.12.4 Algoritmos de Adans-Moulton de ordem m
m=1: ),( 111 +++ ⋅+= nnnn yxfhyy
135
m=2: [ ]),(),(
2
111 nnnnnn yxfyxf
h
yy ++= +++
m=3: [ ]),(),(8),(5
12
11111 −−+++ −⋅+⋅+= nnnnnnnn yxfyxfyxf
h
yy
m=4: [ ]),(),(5),(19),(9
24
2211111 −−−−+++ +⋅−⋅+⋅+= nnnnnnnnnn yxfyxfyxfyxf
h
yy
É comum a utilização dos métodos implícitos junto com os métodos explícitos. Os
Algoritmos da família Adans-Bashfoth são utilizados como previsores e os algoritmos da família
Adans-Moulton como corretores.
9.12.5 Passos para se obter 1+ny
I – Calcular )0(
1+ny por um método explícito (família Adans-Bashfoth).
II – Inicializar o contador de iterações 0=k .
III – Calcular ),( )(
11
k
nn yxf ++ .
IV – Calcular )1(
1
+
+
k
ny , utilizando um método implícito (família Adans-Moulton).
V – Testar se ε<
−
+
+
+
+
)(
1
)(
1
1)(k
1ny
k
n
k
n
y
y
, se positivo, incrementar o contador 1+= kk e voltar ao passo
III. Em caso contrário calcule o próximo passo de integração.
Observação 1: Para a utilização dos algoritmos da família Adans-Bashforth com 1>m ,
necessita-se de informação de mais pontos além das condições iniciais. Para dar início ao
algoritmo, pode-se utilizar qualquer dos método de integração vistos para estimar os pontos
necessários.
Exemplo: Solucione a equação diferencial abaixo usando o Método de Adans-Bashforth de
ordem 3 como previsor e o Método de Adans-Moulton de ordem 3 como corretor. Execute tres
iterações do corretor para cada estimativa.
),(
2
'
ytf
t
y
t
y
y =





−= 21 ≤≤ t , 1)1( =y e 1,0=h
Compare o resultado com o valor real: 1
))ln(1()( −
+= ttty
Para Utilizar o Método de Adans-Bashforth de ordem três, necessita-se de informações da
função em três pontos. Como temos apenas a condição 1)1( =y , deve-se estimar em mais dois
pontos. Utilizando Runge-Kutta de Quarta Ordem chega-se aos seguintes valores:
136
Para 0043,110,1 11 =→= yt
Para 0150,120,1 22 =→= yt
Com os três pontos pode-se realizar previsão para o passo seguinte, utilizando Adans-
Bashforh:
[ ]),(5),(16),(23
12
0011222
)0(
3 ytfytfytf
h
yy ⋅+⋅−⋅+=
[ ] 0294,1)1,1(5)0043,1,10,1(16)0150,1,20,1(23
12
0150,1)0(
3 =⋅+⋅−⋅+= fff
h
y
Com o valor da previsão calculado, calcula-se três iterações utilizando Adans-Moulton:
[ ]),(),(8),(5
12
1122
)0(
332
)1(
3 ytfytfytf
h
yy −⋅+⋅+=
[ ] 0299,1)0043,1,10,1()0150,1,20,1(8)0294,1,30,1(5
12
0150,1)1(
3 =−⋅+⋅+= fff
h
y
[ ] 0298,1)0043,1,10,1()0150,1,20,1(8)0299,1,30,1(5
12
0150,1)2(
3 =−⋅+⋅+= fff
h
y
[ ] 0298,1)0043,1,10,1()0150,1,20,1(8)0298,1,30,1(5
12
0150,1)3(
3 =−⋅+⋅+= fff
h
y
Seguindo esta ordem, calcula-se os valores para os passos seguintes. Os resultados e a
plotagem dos valores calculados e exatos são apresentados abaixo:
it iy exatoy
1.00 1.0000 1.0000
1.10 1.0043 1.0043
1.20 1.0150 1.0150
1.30 1.0298 1.0298
1.40 1.0476 1.0475
1.50 1.0673 1.0673
1.60 1.0885 1.0884
1.70 1.1107 1.1107
1.80 1.1337 1.1337
1.90 1.1573 1.1572
2.00 1.1813 1.1812
137
Os gráficos com os valores exatos e estimados se confundem.
9.13 Solução de Sistemas de Equações Diferenciais
Seja o sistema de equações diferenciais:
),......,,,(
),......,,,(
),......,,,(
21
212
2
211
1
nn
n
n
n
yyyxf
dx
dy
yyyxf
dx
dy
yyyxf
dx
dy
=
=
=
M
A solução de um sistema desta natureza requer o valor inicial em 0xx = para as n
variáveis y.
Todos os métodos vistos podem ser utilizados na solução. O procedimento para a
solução do sistema envolve a solução do passo de cada equação antes de passar-se ao passo
seguinte.
Exemplo: Solucione o sistema de equações diferenciais usando o Método de Euler, integrando
de 0=x a 2=x , com passo 5,0=h e condições iniciais em 0=x dadas por 41 =y e 62 =y .
1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2
1
1.02
1.04
1.06
1.08
1.1
1.12
1.14
1.16
1.18
1.2
138
),,(1,03,04
),,(5,0
21212
2
2111
1
yyxfyy
dx
dy
yyxfy
dx
dy
=−−=
=−=
A solução deste sistema resulta em duas funções: )(1 xy e )(2 xy . A solução
numérica resulta em aproximações de pontos dessas funções. Adota-se uma notação
semelhante ao caso de uma equação, introduzindo um novo índice para indicação das
variáveis dependentes:
jky , valor estimado para o ponto )( jk xy para 2,1=k .
Para a solução do problema, necessita-se:
j jx jy ,1 jy ,2
0 0 4 6
1 0,5 1,1y 1,2y
2 1,0 2,1y 2,2y
3 1,5 3,1y 3,2y
4 2,0 4,1y 4,2y
Para 1=j e 5,01 =x
35,0)45,0(4),,( 0,20,1010,11,1 =××−+=⋅+= hyyxfyy
9,65,0)41,063,04(6),,( 0,20,1020,21,2 =××−×−+=⋅+= hyyxfyy
Para 2=j e 0,11 =x
25,25,0)35,0(3),,( 1,21,1111,12,1 =××−+=⋅+= hyyxfyy
715,75,0)31,09,63,04(9,6),,( 1,21,1121,22,2 =××−×−+=⋅+= hyyxfyy
Para 3=j e 5,11 =x
6875,15,0)25,25,0(25,2),,( 2,22,1212,13,1 =××−+=⋅+= hyyxfyy
139
44525,85,0)25,21,0715,73,04(715,7),,( 2,22,1222,23,2 =××−×−+=⋅+= hyyxfyy
Para 4=j e 0,21 =x
265625,15,0)6875,15,0(6875,1),,( 3,23,1313,14,1 =××−+=⋅+= hyyxfyy
0940875,95,0)6875,11,044525,83,04(44525,8),,( 3,23,1223,24,2 =××−×−+=⋅+= hyyxfyy
Resultando nos valores tabelados:
J jx jy ,1 jy ,2
0 0 4 6
1 0,5 3,0000000 6,9000000
2 1,0 2,2500000 7,7150000
3 1,5 1,6875000 8,4452500
4 2,0 1,2656250 9,0940875
Exemplo: Solucione o sistema de equações diferenciais do exemplo 8.9 utilizando o Método de
Runge_Kutta de Quarta Ordem.
),,(1,03,04
),,(5,0
21212
2
2111
1
yyxfyy
dx
dy
yyxfy
dx
dy
=−−=
=−=
Para a solução do problema, necessita-se:
j jx jy ,1 jy ,2
0 0 4 6
1 0,5 1,1y 1,2y
2 1,0 2,1y 2,2y
3 1,5 3,1y 3,2y
140
4 2,0 4,1y 4,2y
Para a solução de uma única equação tem-se:
hkkkkyy ii ⋅++++=+ )]22(
6
1
[ 43211
),(1 ii yxfk =
)
2
1
,
2
1
( 12 hkyhxfk ii ++=
)
2
1
,
2
1
( 23 hkyhxfk ii ++=
),( 34 hkyhxfk ii ++=
Para o caso de um sistema, necessita-se de uma nova indexação:
Seja um sistema com m equações. Assume-se que tenham sido determinadas as m
aproximações para o passo j: ],......,,,[ ,,3,2,1 jmjjj yyyy . Para se obter as novas aproximações
],......,,,[ 1,1,31,21,1 ++++ jmjjj yyyy do passo 1+j , necessita-se calcular as constantes na seguinte
sequência:
Para mi ,....,2,1= determina-se:
),( ,,,2,,1,1 jmjjjii yyyxfk =
Calculados todos os ik ,1 , Calcula-se para mi ,....,2,1= :
)
2
1
,.....,
2
1
,
2
1
,
2
1
( ,1,2,1,21,1,1,2 mjmjjji hkyhkyhkyhxfk ++++=
Calculados todos os ik ,2 , Calcula-se para mi ,....,2,1= :
)
2
1
,.....,
2
1
,
2
1
,
2
1
( ,2,2,2,21,2,1,3 mjmjjji hkyhkyhkyhxfk ++++=
Calculados todos os ik ,3 , Calcula-se para mi ,....,2,1= :
),.....,,,( ,3,2,3,21,3,1,4 mjmjjji hkyhkyhkyhxfk ++++=
141
Calculadas todas as constantes, pode-se determinar para mi ,....,2,1= as novas estimativas
paro o passo 1+j .
hkkkkyy iiiijiji ⋅++++=+ )]22(
6
1
[ ,4,3,2,1,1,
Para o exemplo, tem-se 2=m a nova estimativa no passo 1+j é dada por:
hkkkkyy ⋅++++= )]22(
6
1
[ 1,41,31,21,10,11,1
hkkkkyy ⋅++++= )]22(
6
1
[ 2,42,32,22,10,21,2
),,( ,2,111,1 jjj yyxfk =
),,( ,2,122,1 jjj yyxfk =
)
2
1
,
2
1
,
2
1
( 2,1,21,1,111,2 hkyhkyhxfk jjj +++=
)
2
1
,
2
1
,
2
1
( 2,1,21,1,122,2 hkyhkyhxfk jjj +++=
)
2
1
,
2
1
,
2
1
( 2,2,21,2,111,3 hkyhkyhxfk jjj +++=
)
2
1
,
2
1
,
2
1
( 2,2,21,2,122,3 hkyhkyhxfk jjj +++=
),,
2
1
( 2,3,21,3,111,4 hkyhkyhxfk jjj +++=
),,
2
1
( 2,3,21,3,122,4 hkyhkyhxfk jjj +++=
Para o passo 1 do exemplo:
245,0)6,4,0(),,( 10,20,1011,1 −=×−=== fyyxfk
8,141,063,04)6,4,0(),,( 20,20,1022,1 =×−×−=== fyyxfk
75,1)45,6,5,3,25,0()
2
1
,
2
1
,
2
1
( 12,10,21,10,1011,2 −==+++= fhkyhkyhxfk
715,1)45,6,5,3,25,0()
2
1
,
2
1
,
2
1
( 22,10,21,10,1022,2 ==+++= fhkyhkyhxfk
142
7813,1)4285,6,5625,3,25,0()
2
1
,
2
1
,
2
1
( 12,20,21,20,1011,3 −==+++= fhkyhkyhxfk
7151,1)4285,6,5625,3,25,0()
2
1
,
2
1
,
2
1
( 22,20,21,20,1022,3 ==+++= fhkyhkyhxfk
5547,1)8575625,6,109375,3,25,0(),,
2
1
( 12,30,21,30,1011,4 −==+++= fhkyhkyhxfk
6318,1)8575625,6,109375,3,25,0(),,
2
1
( 22,30,21,30,1022,4 ==+++= fhkyhkyhxfk
Resultando nas novas aproximações:
1152,35,0]5547,17813,1275,122[)6/1(4
)]22(
6
1
[ 1,41,31,21,10,11,1
=×−×−×−−×+=
=⋅++++= hkkkkyy
8577,65,0]6318,17151,12715,128,1[)6/1(6
)]22(
6
1
[ 2,42,32,22,10,21,2
=×−×+×+×+
=⋅++++= hkkkkyy
Os Resultados passo à passo são dados abaixo:
J=1
k11 = -2 k12 = 1.8000 k21 = -1.7500 k22 = 1.7150 k31 = -1.7813 k32 = 1.7151
k41 = -1.5547 k42 = 1.6318 y1 = 3.1152 y2 = 6.8577
j=2
k11 = -1.5576 k12 =1.6312 k21 = -1.3629 k22 =1.5478 k31 = -1.3873 k32 =1.5492
k41 = -1.2108 k42 = 1.4682 y1 = 2.4262 y2 = 7.6321
j=3
k11 = -1.2131 k12 = 1.4678 k21 = -1.0614 k22 =1.3880 k31 = -1.0804 k32 = 1.3902
k41 = -0.9430 k42 = 1.3132 y1 = 1.8895 y2 = 8.3269
j=4
k11 = -0.9448 k12 = 1.3130 k21 = -0.8267 k22 =1.2381 k31 = -0.8414 k32 = 1.2408
k41 = -0.7344 k42 = 1.1689 y1 = 1.4716 y2 = 8.9469
Resultando na tabela:
143
j jx jy ,1 jy ,2
0 0 4,0000 6,0000
1 0,5 3,1152 6,8577
2 1,0 2,4262 7,6321
3 1,5 1,8895 8,3269
4 2,0 1,4716 8,9469
Exemplo: Resolva a equação dinâmica do circuito, considerando que antes do fechamento da
chave S não havia nenhuma energia armazenada no circuito, Ω= 2R , HL 2= e FC 5,0= ,
integrando de 0=t a t=5Seg, com passo de integração 0,1 e o Método de Runge-Kutta de
Quarta Ordem.
S
V(t)=sin(3,5t) i(t)
Ao fechar-se a chave S, pode-se analisar o comportamento dinâmico do circuito a partir da Lei
de Kirchoff para tensões:
∫++= dtti
Cdt
tdi
LtRitV )(
1)(
)()(
Derivando a equação:
)(
1)()()(
2
2
ti
Cdt
tid
L
dt
tdi
R
dt
tdV
++=
Substituindo a expressão da tensão e rearranjando a equação, tem-se:
)5,3cos(5,3)(2
)(
2
)(
2
2
2
tti
dt
tdi
dt
tid
⋅=++
1.1.1.1.5 1.1.1.1.4
1.1.1.1.6
144
)5,3cos(5,3)(2)(2)(2 '''
ttititi ⋅=++
Como não havia nenhuma energia armazenada no circuito, as condições para 0=t são nulas,
ou seja: 0)0( =i e 0
)0(
=
dt
di
.
Inicialmente deve-se transformar a equação de segunda ordem num sistema com duas
equações:
)5,3cos(
2
5,3
)()()5,3cos(
2
5,3
)()()()(
)()()(
)()(
12
''''
2
2
''
1
1
ttztzttitititz
tztitz
titz
+−−=+−−==
==
=
Tem-se o seguinte sistema:
))(),(,()5,3cos(
2
5,3
)()()()(
))(),(,()(
21212
'''
2
2112
'
1
tztztfttztztitz
tztztfztz
=+−−==
==
0)0(
0)0(
2
1
=
=
z
z
Os resultados da integração são dados pela tabela:
t )()(1 titz = )()( '
2 titz =
0.00 0.0000 0.0000
0.10 0.0084 0.1628
0.20 0.0313 0.2886
0.30 0.0644 0.3625
0.40 0.1018 0.3758
0.50 0.1374 0.3274
0.60 0.1654 0.2238
0.70 0.1808 0.0783
0.80 0.1803 -0.0908
0.90 0.1626 -0.2621
1.00 0.1285 -0.4139
1.10 0.0811 -0.5270
1.20 0.0249 -0.5866
1.30 -0.0342 -0.5847
1.40 -0.0899 -0.5205
1.50 -0.1364 -0.4008
1.60 -0.1687 -0.2393
1.70 -0.1835 -0.0546
1.80 -0.1796 0.1317
1.90 -0.1578 0.2979
2.00 -0.1213 0.4246
2.10 -0.0747 0.4972
145
2.20 -0.0240 0.5076
2.30 0.0247 0.4552
2.40 0.0652 0.3470
2.50 0.0927 0.1966
2.60 0.1037 0.0227
2.70 0.0971 -0.1530
2.80 0.0738 -0.3090
2.90 0.0367 -0.4259
3.00 -0.0096 -0.4892
3.10 -0.0591 -0.4911
3.20 -0.1057 -0.4311
3.30 -0.1435 -0.3163
3.40 -0.1676 -0.1605
3.50 -0.1749 0.0176
3.60 -0.1641 0.1963
3.70 -0.1363 0.3540
3.80 -0.0946 0.4716
3.90 -0.0438 0.5348
4.00 0.0102 0.5359
4.10 0.0613 0.4746
4.20 0.1033 0.3584
4.30 0.1316 0.2012
4.40 0.1428 0.0219
4.50 0.1359 -0.1579
4.60 0.1120 -0.3165
4.70 0.0740 -0.4348
4.80 0.0268 -0.4986
4.90 -0.0237 -0.5004
5.00 -0.0712 -0.4400
Os valores são plotados na figura:
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
146
10 Utilizando o MATLAB
Familiarização com o ambiente de trabalho e assimilação dos comandos principais.
A ferramenta de suporte computacional utilizada ao longo deste curso será o MATLAB.
1. Sintaxe de comandos
Utilize a função helpwin <comando>
2. Operações aritméticas
adição +
subtração -
multiplicação *
divisão /
potenciação ^
O MATLAB executa as operações aritméticas da esquerda para a direita respeitando a hierarquia
existente na matemática.
Ex.:
» 3^2-5-6/(3*2)
ans =
3
3. Variáveis
Para identificação das variáveis, o MATLAB diferencia maiúsculas e minúsculas. Não é necessária a
alocação de memória para as variáveis, pois o MATLAB o fará automaticamente assim que um valor é
atribuído a uma variável pela primeira vez.
A atribuição é realizada da seguinte forma:
» a=1
a =
1
O acesso é realizado através do nome da variável:
» a
a =
1
Uma variável só pode ser acessada se já foi criada, isto é, se algum valor já foi atribuído à mesma.
No exemplo abaixo a variável é acessada sem ter sido criada:
» b
??? Undefined function or variable 'b'.
O comando who mostra as variáveis que estão sendo utilizadas no momento e o comando clear exclui as
variáveis do ambiente de trabalho do MATLAB.
4. Caracteres especiais usados na janela de comandos
147
= Comando de atribuição
[ ] Delimitar elementos de matrizes e vetores
( ) Alternar a ordem de precedência das expressões aritméticas
. Ponto decimal
, Separa argumentos de funções e elementos matrizes e vetores
; Finalizador de linha com supressão de impressão
% Comentário
: Geração de um vetor com intervalos definidos
5. Funções matemáticas básicas
acos Arco-coseno
asin Arco-seno
atan Arco-tangente
cos Coseno
cosh Coseno hiperbolico
exp Exponencial com base e
log Logaritmo natural
log10 Logaritmo decimal
rand Gera números aleatórios com distribuição uniforme
randn Gera números aleatórios com distribuição normal
rat Aproximação racional
round Arredonda o número para o inteiro mais próximo
sign Retorna 1 se for positivo e 0 se for negativo
sin Seno
sinh Seno hiperbólico
sqrt Raiz quadrada
tan Tangente
tanh Tangente hiperbólica
O MATLAB trabalha com ângulos em radianos.
6. Operações com vetores
Os vetores devem ser declarados em colchetes:
» u = [1 2 3 4]
u =
1 2 3 4
O mesmo resultado seria obtido com:
» u = [1,2,3,4]
u =
1 2 3 4
As operações aritméticas são realizadas elemento a elemento do vetor:
» z = u+3
z =
148
4 5 6 7
A operação com apenas um elemento do vetor pode ser feita, especificando o elemento a ser tratado:
» z(3) = z(3)+1
z =
4 5 7 7
Se quiser saber o número de elementos do vetor , utilize a função length:
» length(z)
ans =
4
A transposta é calculada utilizando o símbolo ’:
» w = z'
w =
4
5
7
7
Operações especiais:
.* Multiplicação de vetores
./ Divisão à direita de vetores
. Divisão à esquerda de vetores
.^ Exponenciação
Ex.:
» mult = u.*z
mult =
4 10 21 28
Para a geração de vetores utilizando intervalos:
» x = 0:2:10
x =
0 2 4 6 8 10
Funções úteis no tratamento de vetores:
max( ) Devolve o maior dos componentes do vetor
min( ) Devolve o menor dos componentes do vetor
mean( ) Devolve o valor médio dos componentes do vetor
Ex.:
149
» mean(x)
ans =
5
7. Operações com matrizes
A matriz pode ser definida de maneira semelhante aos vetores, diferenciando-se apenas na necessidade da
digitação de um “;” para a separação das diferentes colunas:
» a = [1 2 3 ;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
As matrizes podem Ter elementos identificados individualmente:
» a(2,1)
ans =
4
O tamanho da matriz pode ser obtido pela função size:
» size(a)
ans =
3 3
Para extrair uma submatriz de uma matriz:
» b = a(1:2,1:2)
b =
1 2
4 5
Para inserir uma linha na matriz:
» c = [b;1 0]
c =
1 2
4 5
1 0
Nas operações de adição e subtração os elementos de uma matriz são somados ou subtraídos com o seu
correspondente na outra matriz, quando matrizes de mesmo tamanho. A multiplicação e a divisão por
escalares é efetuado elemento a elemento da matriz.
» div = a*3
div =
150
3 6 9
12 15 18
21 24 27
A exponenciação individual dos elementos de uma matriz pode ser feito:
» exp = a.^2
exp =
1 4 9
16 25 36
49 64 81
A multiplicação de matrizes só pode acontecer se o número de colunas de uma matriz for igual ao número
de linhas da outra.
» size(a)
ans =
3 3
» size(div)
ans =
3 3
» mult = a*div
mult =
90 108 126
198 243 288
306 378 450
A fim de mostrar divisão de matrizes, vamos definir duas novas matrizes:
» x = [15 10 8;7 1 0;2 5 1];
» y = [3 -1 2;-5 1 1;0 3 4];
» div = x/y
div =
-2.0213 -4.2128 4.0638
-0.5745 -1.7447 0.7234
-1.8511 -1.5106 1.5532
» divinv = xy
divinv =
-0.7033 0.0239 0
-0.0766 0.8325 1.0000
1.7895 -1.2105 -1.0000
151
A potenciação de matrizes eqüivale a sucessivas multiplicações por ela mesma:
» pot = a^3
pot =
468 576 684
1062 1305 1548
1656 2034 2412
A transposta da matriz é obtida por:
» trans = a'
trans =
1 4 7
2 5 8
3 6 9
Funções para tratar matrizes:
det Determinante de uma matriz
eye Gera uma matriz identidade
inv Calcula a inversa da matriz
ones Gera uma matriz unitária
rand Gera uma matriz randômica
tril Transforma/gera uma matriz triangular inferior
triu Transforma/gera uma matriz triangular superior
zeros Gera uma matriz de zeros (nula)
8. Números Complexos
A parte imaginária do número complexo pode ser simbolizada pelas letras i e j indistintamente.
Ex.:
» z1 = 3+4i
z1 =
3.0000 + 4.0000i
O conjugado do número complexo pode ser obtido utilizando a função conj:
» z2 = conj(z1)
z2 =
3.0000 - 4.0000i
As operações com números complexos utilizam os operadores usuais. A potenciação, como visto com as
matrizes, correspondente à multiplicação sucessiva do número por ele mesmo.
Funções úteis para trabalhar com números complexos:
real Retorna a parte real do número complexo
152
imag Retorna a parte imaginária do número complexo
abs Retorna o módulo do vetor complexo
angle Retorna o ângulo do vetor complexo
9. Polinômios
Seja o polinômio:
X3
– 3x2
+4x-4
No MATLAB ele é definido da seguinte forma:
» poli = [1 -3 4 -4]
poli =
1 -3 4 -4
Para encontrar as raízes deste polinômio, usamos o comando roots:
» r = roots(poli)
r =
2.0000
0.5000 + 1.3229i
0.5000 - 1.3229i
Com as raízes do polinômio, pode-se obter os coeficientes deste usando a função poly:
» p = poly(r)
p =
1.0000 -3.0000 4.0000 -4.0000
A função conv é utilizada para a multiplicação de polinômios:
» p1 = [2 3 1];
» p2 = [5 -2];
» p3 = conv(p1,p2)
p3 =
10 11 -1 -2
Já a função deconv é utilizada para a divisão:
» [Q R] = deconv(p3,p1)
Q =
5 -2
R =
0 0 0 0
10. Encontrando a melhor curva partindo de dados experimentais
153
O MATLAB permite fazer a interpolação polinomial partindo-se de dados experoimentais, utilizando o
comando polyfit.
Os pontos experimentais abaixo representam a posição de um móvel ao longo do tempo:
S(cm) 4,00 6,71 9,43 12,18 14,87 17,7
t(s) 0 1 2 3 4 5
Vamos definir os vetores com dados experimentais:
S = [4 6.4 9.93 12.18 14.87 16.7];
» t = [0 1 2 3 4 5];
Agora vamos traçar os pontos para vermos a evolução dos mesmos:
» plot(t,S,'+')
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
4
6
8
10
12
14
16
18
Agora iremos traçar a reta obtida sobre os dados experimentais:
» poly = polyfit(t,S,1)
poly =
2.6046 4.1686
» hold on;
» t = 0:.1:5;
» S = polyval(poly,t);
» plot(t,S);
154
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
4
6
8
10
12
14
16
18
Gráficos em 2D
Os principais comandos utilizados para a criação de gráficos são:
plot Plota um vetor ou uma função
title Adiciona título ao gráfico
xlabel Adiciona um rótulo ao eixo x
ylabel Adiciona um rótulo ao eixo y
text Insere um texto numa determinada posição da janela gráfica
gtext Insere um texto no gráfico usando o mouse como posicionador
grid Traça linhas de grade
A formatação de cor e estilo da linha podem ser facilmente ajustados através de argumentos do comando
plot.
Cor da Linha Estilo da Linha
Caracter Cor Caracter Estilo
y amarela . ponto
m margenta o círculo
c cyan x marca “x”
r vermelha + mais
g verde * asterisco
b azul - sólido
w branca : pontilhado
k preta -- tracejado
11. Programando com o MATLAB
Os operadores relacionais, aqueles que respondem a uma determina operação com verdadeiro e falso, e
que são simbolizados respectivamente por 1 e 0. A tabela a seguir relaciona operador com a descrição:
Operador Descrição
< Menor que
<= Menor ou igual
> Maior que
155
>= Maior ou igual
== Igual
~= Diferente
No MATLAB temos os seguintes operadores lógicos:
Operador Descrição
& AND
| OR
~ NOT
As rotinas especiais de programação estão descritas abaixo:
Rotinas Descrição
For <cond>
end
Gera um loop enumerável
while <cond>
end
Gera um loop enquanto uma condição (<cond>) for verdadeira
if <cond>
elseif
end
Comando executável condicional
if <cond>
else
end
Comando executável condicional
break Sair fora de um loop for ou while
return Retornar a uma função (arquivo.m)
pause Para num ponto do programa até que se aperte qualquer tecla
Essas rotinas associadas aos inúmeros recursos oferecidos pelo MATLAB, propiciam ao usuário,
desenvolver desde simples programas até os mais sofisticados.
Objetivo 2: Desenvolva um programa par o cálculo do produto interno.
∑
=
=
=
=
n
i
ii
T
T
n
T
n
yxyx
yyyyy
xxxxx
1
321
321
)..,,.........,,(
)..,,.........,,(
Objetivo 3: Desenvolva um programa par o cálculo do produto entre duas matrizes.
pmA ×
, npB ×
BAC ⋅=
∑
=
=
p
k
kjikij bac
1
Objetivo 4: Realize as seguintes operações no MatLab:
),(
;1*72.^*213.^*354.^*355.^*216.^*77.^
012.1:0001.0:988.0
yxplot
xxxxxxxy
x
−+−+−+−=
=
O resultado obtido é o esperado? Se não for o esperado, qual a explicação para obter-se tal resultado.
Realize agora a operação
156
),(
;7).^1(
012.1:0001.0:988.0
yxplot
xy
x
−=
=
Analise e compare os resultados.
Objetivo 5: Representação do número 0,1 em base hexadecimal. Representação no MATLAB:
es
fx 2)1()1( ⋅+−=
1 bit 11 bits 52 bits
Como a representação da mantissa ficaria no MATLAB?
Confirme com os comandos:
T=0.1;
Format hex
t
Objetivo 6: Considere o sistema de equações lineares:
3.33.03
1110
21
21
=+
=+
xx
xx
Uma solução óbvia para o sistema é 11 =x e 12 =x . Utilizando o MatLab com os comandos: A=[10 1;3
0.3]; b=[11;3.3]; x=Ab, solucione o sistema. Analise o resultado e justifique.
Objetivo 7: Arquivos M-file. Embora você possa trabalhar inteiramente nas linhas de comando do
MATLAB, você também pode armazenar em arquivos externos. Esses arquivos são equivalentes a
programas, funções, subrotinas e procedimentos de outras linguagens. Os arquivos M-file são criados a
partir do editor do MATLAB. Abaixo apresenta-se um arquivo para o cálculo da raiz quadrada de um
número real maior ou igual a zero. Coloque este arquivo no formato M-file e execute-o.
function [x,iter]=sqrtn(a,tol)
%sqrtn Raiz quadrada de um número real maior que zero pelo Método de Newton.
% x=sqrtn(z,tol) calcula a raiz do número real a utilizando o Método de Newton
% a é assumido ser maior ou igual a zero
% tol é a tolerância de convergencia (default eps) - eps - epsilon da máquina
% [x,iter]=sqrtn(a,tol) retorna também o número de iterações (iter) para a con-
% vergência.
if nargin<2,tol=eps;end
x=a;
iter=0;
xdiff=inf;
fprintf(' k x_k erro relativon')
while xdiff>tol
iter=iter+1;
xold=x;
x=(x+a/x)/2;
xdiff=abs(x-xold)/abs(x);
fprintf('%2.0f: %20.16e %9.2en',iter,x,xdiff)
if iter>50
error('Não convergiu apos 50 iterações')
end
end
s e f
157
Objetivo 8: Introdução ao Método da Bisseção para o cálculo de raízes de funções.
Algoritmo:
12. Entrada:
12.1 função f(x)
12.2 intervalo de convergência [a,b]
12.3 tolerância ε
12.4 número de iterações L
13. f0 ← f(a); f1 ← f(b)
14. Teste de viabilidade de intervalo:
14.1 Se f0*f1 > 0
14.1.1 “Erro na Entrada”
14.1.2 Entrar com novo intervalo
14.2 Senão
14.2.1 x0 ← a
14.2.2 x1 ← b
14.2.3 i ← 1
15. Enquanto ((|f0| > ε ou |f1| > ε) e i < L)
15.1 X2 ← 0,5*(x0+x1)
15.2 f2 ← f(x2)
15.3 Se (f2*f0 < 0)
15.3.1 x1 ← x2
15.3.2 f1 ← f2
15.4 Senão
15.4.1 x0 ← x2
15.4.2 f0 ← f2
15.5 i ← i+1
16. se (i > L)
16.1 “Não atingiu exatidão em ‘L’ iterações”
17. Senão
17.1 “A exatidão foi atingida em ‘i-1’ iterações, e a raiz é ‘x2’ ”
18. Fim
Objetivo 9: Seja a função xexf x
/)1()( −=
Compute no MatLab a função por meio do algoritmo:
Algoritmo 1:
Se x=0
1)( =xf
Caso contrário
xexf x
/)1()( −=
Fim
Calcule para
i
x 10= com i variando de -5 a -16 com passo 1.
Analise o resultado e verifique o que está acontecendo.
Compute agora com um algoritmo matematicamente equivalente:
Algoritmo 2:
x
ey =
158
Se y=1
1)( =xf
Caso contrário
)ln(/)1()( yyxf −=
Fim
Calcule também para
i
x 10= com i variando de -5 a -16 com passo 1.
Analise o resultado e verifique o que está acontecendo.
Compare os resultados e apresente as conclusões.
159
Referências Bibliográficas
[1] BARROSO, Leônidas C. et. al., Cálculo Numérico (com Aplicações), 2a
edição, Editora Harbra, São
Paulo, 1987.
[2] CLAUDIO, Dalcidio M., MARINS, Jussara M., Cálculo Numérico Computacional, 2a
edição, Atlas,
1994
[3] SANTOS, Vitoriano R. B., Curso de Cálculo Numérico, 4a
edição, LTC, 1982.
[4] RUGGIERO, Márcia A. G., LOPES, Vera Lúcia R., Cálculo Numérico: Aspectos Teóricos e
Computacionais, 2a
edição, Makron Books, São Paulo, 1996.
[5] CAMPOS, R. J. A., Cálculo Numérico Básico. 1ª
edição, Atlas, 1978
[6] CAMARGO, W. C. M., Apostila de Cálculo Numérico. Departamento de Informática. UFPR.

Mais conteúdo relacionado

PDF
Curso de Direito Penal para Carreira Jurídica 2019
PDF
Curso de Direito Penal para Magistratura Federal 2019
PDF
Abnt2002
PDF
Monografia 2017 impacto ambiental da erosão na bacia do rio rovuma - cabo d...
PDF
Monografia 2017 o impacto da liderança no desempenho das organizações
DOC
Apostila Desenho Técnico, CArtografia e Topografia
PDF
Topografia apostila-2010-1
PDF
Curso de Direito Processual Penal para Carreira Jurídica 2019
Curso de Direito Penal para Carreira Jurídica 2019
Curso de Direito Penal para Magistratura Federal 2019
Abnt2002
Monografia 2017 impacto ambiental da erosão na bacia do rio rovuma - cabo d...
Monografia 2017 o impacto da liderança no desempenho das organizações
Apostila Desenho Técnico, CArtografia e Topografia
Topografia apostila-2010-1
Curso de Direito Processual Penal para Carreira Jurídica 2019

Mais procurados (20)

PDF
Curso de Direito Penal para Defensoria Pública Estadual 2019
PDF
Curso de Direito Penal para Promotor de Justiça 2019
PDF
Curso mat financeira
PDF
Curso de Direito Processual Penal para Procurador da República 2019
PDF
Curso de Direito Penal para Concursos de Juiz
PDF
Apostila terraplenagem
PDF
Estudo requalifvalorizbarrinhaesmoriz
PDF
Apostila topografia veiga 20122
DOCX
O papel de recursos humanos na funcao publica - Monografia
PDF
Apostila php
PDF
Exito quantico sandra_anne_taylor
PDF
Arquivo modelo para tcc 2013
PDF
Audit dgtc-rel031-2012-2s
PDF
Bioquímica
PDF
Manual Dokmee
PDF
Cursos abeline-secretariado
PDF
Pesquisa CNT de Rodovias 2012
PDF
Php apostila - vol 01
PDF
Novo manual tcc versão-1 2012
PDF
Apostila logica-unisinos
Curso de Direito Penal para Defensoria Pública Estadual 2019
Curso de Direito Penal para Promotor de Justiça 2019
Curso mat financeira
Curso de Direito Processual Penal para Procurador da República 2019
Curso de Direito Penal para Concursos de Juiz
Apostila terraplenagem
Estudo requalifvalorizbarrinhaesmoriz
Apostila topografia veiga 20122
O papel de recursos humanos na funcao publica - Monografia
Apostila php
Exito quantico sandra_anne_taylor
Arquivo modelo para tcc 2013
Audit dgtc-rel031-2012-2s
Bioquímica
Manual Dokmee
Cursos abeline-secretariado
Pesquisa CNT de Rodovias 2012
Php apostila - vol 01
Novo manual tcc versão-1 2012
Apostila logica-unisinos
Anúncio

Semelhante a Uff metodos numericos (20)

PPTX
CÁLCULO NUMÉRICO UNIASSELVI TUTOR EXTERNO .pptx
PDF
Apostila metodos numericos_formatada_vf
PPT
Zero de função
PDF
Calculo numerico capitulo 2
PDF
Análise Numérica
PPTX
Seção 2.1 - Cálculo Numérico para engenharia
DOCX
Trabalho de Cálculo numérico
DOCX
Trabalho de Cálculo Numérico
PPT
Cálculo numérico
PDF
Metodos numéricos para equações diferenciais
PDF
03 raizes
PDF
Calculo numerico do professor eduardo colli.
PDF
Numerical Methods for Solving Linear Ordinary Differential Equations
PDF
Modelagem matematica aplicada a engenharia quimica
PDF
Livro numerico ime usp
PDF
Livro numerico
PDF
Calculo numerico 2019.2
PPTX
Métodos Iterativos - Gauss-Seidel - @professorenan
CÁLCULO NUMÉRICO UNIASSELVI TUTOR EXTERNO .pptx
Apostila metodos numericos_formatada_vf
Zero de função
Calculo numerico capitulo 2
Análise Numérica
Seção 2.1 - Cálculo Numérico para engenharia
Trabalho de Cálculo numérico
Trabalho de Cálculo Numérico
Cálculo numérico
Metodos numéricos para equações diferenciais
03 raizes
Calculo numerico do professor eduardo colli.
Numerical Methods for Solving Linear Ordinary Differential Equations
Modelagem matematica aplicada a engenharia quimica
Livro numerico ime usp
Livro numerico
Calculo numerico 2019.2
Métodos Iterativos - Gauss-Seidel - @professorenan
Anúncio

Último (20)

PDF
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
PPTX
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
PDF
Ebook - Matemática_Ensino_Médio_Saeb_V1.pdf
PPTX
Fronteiras e soberania..........................pptx
PPTX
4. A cultura do cinema e as vanguardas.pptx
PPTX
Programa Nacional de Saúde do Adulto.pptx
PPT
1ª Telefonia Fixa Padrao Novo Jailton 2012_22.ppt
PPSX
A epistemologia de Wilheim G Leibniz.ppsx
PPTX
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
PDF
O retorno a origem (islã Islamismo)
PDF
Historia da Gastronomia Mundial por Daianna Marques dos Santos
PPTX
"BPF, PPHO e APPCC na Indústria de Alimentos"
PPTX
5. A cultura do mundo virtual - globalidade.pptx
PDF
HORÁRIO GERAL SIGAA 2025_PRÉVIA_SIGAA-1.pdf
PPTX
2. A Cultura do Salão - o fim das trevas.pptx
PPT
Elementos constituintes do esquema argumentativo (tese, argumento, tema, pont...
PPSX
4. A Cultura da Catedral - HistóriaCArtes .ppsx
PDF
Extintores e Acessórios por Francisco Borges.pdf
PDF
Fiqh da adoração (islamismo)
PDF
metabolismo energtico das clulas-131017092002-phpapp02.pdf
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
Ebook - Matemática_Ensino_Médio_Saeb_V1.pdf
Fronteiras e soberania..........................pptx
4. A cultura do cinema e as vanguardas.pptx
Programa Nacional de Saúde do Adulto.pptx
1ª Telefonia Fixa Padrao Novo Jailton 2012_22.ppt
A epistemologia de Wilheim G Leibniz.ppsx
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
O retorno a origem (islã Islamismo)
Historia da Gastronomia Mundial por Daianna Marques dos Santos
"BPF, PPHO e APPCC na Indústria de Alimentos"
5. A cultura do mundo virtual - globalidade.pptx
HORÁRIO GERAL SIGAA 2025_PRÉVIA_SIGAA-1.pdf
2. A Cultura do Salão - o fim das trevas.pptx
Elementos constituintes do esquema argumentativo (tese, argumento, tema, pont...
4. A Cultura da Catedral - HistóriaCArtes .ppsx
Extintores e Acessórios por Francisco Borges.pdf
Fiqh da adoração (islamismo)
metabolismo energtico das clulas-131017092002-phpapp02.pdf

Uff metodos numericos

  • 1. 0 Universidade Federal Fluminense UFF – Volta Redonda, RJ INTRODUÇÃO AOS MÉTODOS NUMÉRICOS Prof. Diomar Cesar Lobão Trabalho original preparado por: Prof. Ionildo José Sanches e Prof. Diógenes Lago Furlan Universidade Federal do Paraná. Departamento de Informática CI-202 URL: http://www.professores.uff.br/diomar_cesar_lobao
  • 2. 1 SUMÁRIO 1 INTRODUÇÃO.....................................................................................................................................4 2 CONCEITO DE ERRO........................................................................................................................5 2.1 INTRODUÇÃO.....................................................................................................................................5 2.2 ERROS NA FASE DE MODELAGEM......................................................................................................5 2.3 ERROS NA FASE DE RESOLUÇÃO........................................................................................................5 2.4 ERROS ABSOLUTOS E RELATIVOS......................................................................................................5 2.5 ERRO DE ARREDONDAMENTO............................................................................................................6 2.6 ERRO DE TRUNCAMENTO...................................................................................................................7 3 REPRESENTAÇÃO DOS NÚMEROS REAIS.................................................................................9 3.1 INTRODUÇÃO.....................................................................................................................................9 3.2 SISTEMA DE NUMERAÇÃO ...............................................................................................................10 3.2.1 Sistema de Numeração Decimal...........................................................................................................10 3.2.2 Sistema de Numeração Binário ............................................................................................................10 3.2.3 Conversão do Sistema Decimal para Binário ......................................................................................10 3.3 ARITMÉTICA DE PONTO FLUTUANTE ...............................................................................................13 3.4 PROPAGAÇÃO DE ERROS..................................................................................................................15 4 ZEROS DE EQUAÇÕES TRANSCENDENTES E POLINOMIAIS............................................17 4.1 INTRODUÇÃO...................................................................................................................................17 4.1.1 Derivada de uma função num ponto.....................................................................................................17 4.1.2 Tipos de Métodos..................................................................................................................................17 4.1.3 Isolamento de Raízes ............................................................................................................................18 4.1.4 Classificação dos métodos....................................................................................................................19 4.2 MÉTODO DA BISSEÇÃO....................................................................................................................20 4.2.1 Estimativa do Número de Iterações......................................................................................................20 4.2.2 Considerações Finais ...........................................................................................................................21 4.2.3 Exemplos...............................................................................................................................................21 4.3 MÉTODO DA FALSA POSIÇÃO ..........................................................................................................22 4.3.1 Casos especiais.....................................................................................................................................23 4.3.2 Considerações finais.............................................................................................................................24 4.3.3 Exemplos...............................................................................................................................................24 4.4 MÉTODO DA ITERAÇÃO LINEAR ......................................................................................................25 4.4.1 Casos de convergência .........................................................................................................................26 4.4.2 Considerações finais.............................................................................................................................27 4.4.3 Exemplos...............................................................................................................................................27 4.5 MÉTODO DE NEWTON-RAPHSON OU MÉTODO DAS TANGENTES .....................................................28 4.5.1 Considerações finais.............................................................................................................................29 4.5.2 Exemplos...............................................................................................................................................29 4.5.3 Condições de Newton-Raphson-Fourier...............................................................................................30 4.6 MÉTODO DA SECANTE.....................................................................................................................32 4.6.1 Exemplos...............................................................................................................................................33 4.7 MÉTODO MISTO ..............................................................................................................................34 4.7.1 Exemplos...............................................................................................................................................34 4.8 MÉTODO PARA EQUAÇÕES POLINÔMIAIS.........................................................................................35 4.8.1 Introdução.............................................................................................................................................35 4.8.2 Localização de Raízes...........................................................................................................................35 4.8.3 Determinação das Raízes Reais............................................................................................................37
  • 3. 2 4.8.4 Método de Newton para Zeros de Polinômios......................................................................................38 5 SISTEMAS LINEARES.....................................................................................................................41 5.1 INTRODUÇÃO...................................................................................................................................41 5.1.1 Classificação Quanto ao Número de Soluções.....................................................................................41 5.2 MÉTODOS DIRETOS (ALGORITMOS DIRETOS)..................................................................................42 5.2.1 Regra de Cramer ..................................................................................................................................42 5.2.2 Método da Eliminação de Gauss..........................................................................................................43 5.2.3 Método de Jordan.................................................................................................................................45 5.2.4 Exemplos...............................................................................................................................................45 5.3 FATORAÇÃO LU-CROUT-CHOLESKY-DOOLITLE .............................................................................46 5.3.1 Cálculo dos Fatores L e U....................................................................................................................47 5.4 MÉTODOS ITERATIVOS (ALGORITMOS ITERATIVOS)........................................................................50 5.4.1 Método de Gauss-Jacobi ( Algébrico ).................................................................................................50 5.4.2 Método de Gauss-Jacobi ( Matricial )..................................................................................................52 5.4.3 Método de Gauss-Seidel ( Algébrico )..................................................................................................54 5.4.4 Método de Gauss-Seidel ( Matricial )...................................................................................................56 5.4.5 Segunda Abordagem da Fórmula Matricial do Método Gauss-Seidel.................................................58 5.4.6 Método da Sobrerelaxação Sucessiva .................................................................................................63 5.4.7 Condições Necessária e Suficiente para Convergência do Método de Gauss-Jacobi e Gauss-Seidel64 6 INTERPOLAÇÃO ..............................................................................................................................66 6.1 INTRODUÇÃO...................................................................................................................................66 6.1.1 Conceito de Interpolação......................................................................................................................66 6.2 INTERPOLAÇÃO LINEAR...................................................................................................................67 6.2.1 Obtenção da Fórmula...........................................................................................................................67 6.2.2 Exemplos...............................................................................................................................................68 6.3 INTERPOLAÇÃO QUADRÁTICA .........................................................................................................69 6.3.1 Obtenção da Fórmula...........................................................................................................................69 6.3.2 Exemplos...............................................................................................................................................69 6.4 INTERPOLAÇÃO DE LAGRANGE........................................................................................................71 6.4.1 Obtenção da Fórmula...........................................................................................................................72 6.4.2 Exemplos: .............................................................................................................................................73 6.5 INTERPOLAÇÃO PARABÓLICA PROGRESSIVA ...................................................................................74 6.6 INTERPOLAÇÃO DE NEWTON COM DIFERENÇAS DIVIDIDAS.............................................................75 6.6.1 Diferenças Divididas ............................................................................................................................75 6.6.2 Propriedade do Operador Diferenças Divididas .................................................................................76 6.6.3 Exemplos...............................................................................................................................................76 6.7 INTERPOLAÇÃO DE GREGORY-NEWTON ..........................................................................................78 6.7.1 Diferenças Ordinárias ou Finitas.........................................................................................................79 6.7.2 Relação entre diferenças divididas e diferenças ordinárias.................................................................79 6.7.3 Gregory-Newton usando Diferenças Ordinárias..................................................................................79 6.7.4 Exemplos...............................................................................................................................................79 6.8 INTERPOLAÇÃO SPLINES: LINEAR, QUADRÁTICA, CÚBICA ..............................................................80 6.8.1 Spline Linear.........................................................................................................................................81 6.8.2 Spline Quadrática.................................................................................................................................84 6.8.3 Spline Cúbica Natural ..........................................................................................................................87 6.8.4 Considerações Gerais sobre Interpolação ...........................................................................................93 7 AJUSTE DE CURVAS .......................................................................................................................95 7.1 MÉTODO DOS QUADRADOS MÍNIMOS..............................................................................................96 7.1.1 Ajuste Linear Simples ...........................................................................................................................97 7.1.2 Ajuste Polinomial..................................................................................................................................99 8 INTEGRAÇÃO NUMÉRICA..........................................................................................................103 8.1 INTRODUÇÃO.................................................................................................................................103 8.1.1 Fórmulas de Newton-Cotes ................................................................................................................104 8.2 REGRA DOS RETÂNGULOS .............................................................................................................105
  • 4. 3 8.2.1 Exemplos.............................................................................................................................................106 8.3 REGRA DOS TRAPÉZIOS .................................................................................................................107 8.3.1 Regra do Trapézio Repetida ...............................................................................................................108 8.3.2 Exemplos.............................................................................................................................................108 8.4 REGRA DE SIMPSON.......................................................................................................................109 8.4.1 Regra de Simpson Repetida................................................................................................................110 8.4.2 Exemplos.............................................................................................................................................110 9 SOLUÇÃO NUMÉRICA DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS...........................112 9.1 INTRODUÇÃO.................................................................................................................................112 9.2 TIPOS DE EQUAÇÕES DIFERENCIAIS...............................................................................................112 9.2.1 Equações Diferenciais Ordinárias .....................................................................................................112 9.2.2 Equações Diferenciais Parciais..........................................................................................................113 9.3 SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ........................................................................................113 9.4 ORDEM DE UMA EQUAÇÃO DIFERENCIAL ORDINÁRIA...................................................................114 9.5 REDUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS ...................................................................114 9.6 SOLUÇÃO NUMÉRICA DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS – PROBLEMA DE VALOR INICIAL 116 9.6.1 Método de Euler..................................................................................................................................117 9.7 ANÁLISE DO ERRO PARA O MÉTODO DE EULER NA SOLUÇÃO NUMÉRICA DO PROBLEMA DE VALOR INICIAL ....................................................................................................................................................120 9.8 MÉTODO DE EULER MODIFICADO..................................................................................................121 9.8.1 Método Heum......................................................................................................................................124 9.8.2 Método Runge-Kutta...........................................................................................................................127 9.8.3 Derivação do Método de Runge-Kutta de Segunda Ordem................................................................128 9.8.4 Método de Heun..................................................................................................................................128 9.8.5 Método de Euler Modificado ..............................................................................................................129 9.8.6 Método de Ralston ..............................................................................................................................129 9.9 MÉTODO DE RUNGE_KUTTA TERCEIRA ORDEM............................................................................131 9.10 MÉTODO DE RUNGE_KUTTA QUARTA ORDEM ..........................................................................131 9.11 MÉTODOS DE PASSOS MÚLTIPLOS..............................................................................................132 9.12 IDÉIA BASICA DOS MÉTODOS DE PASSOS MÚLTIPLOS................................................................133 9.12.1 Métodos Explícitos..............................................................................................................................134 9.12.2 Algoritmos de Adans-Bashforth de ordem m......................................................................................134 9.12.3 Métodos Implícitos..............................................................................................................................134 9.12.4 Algoritmos de Adans-Moulton de ordem m ........................................................................................134 9.12.5 Passos para se obter 1+ny ..................................................................................................................135 9.13 SOLUÇÃO DE SISTEMAS DE EQUAÇÕES DIFERENCIAIS................................................................137 10 UTILIZANDO O MATLAB.........................................................................................................146
  • 5. 4 1 Introdução Cálculo Numérico é a obtenção da solução de um problema pela aplicação de método numérico; a solução do problema será caracterizada, então, por um conjunto de números, exatos ou aproximados. Método Numérico é um algoritmo composto por um número finito de operações envolvendo apenas números (operações aritméticas elementares, cálculo de funções, consulta a uma tabela de valores, consulta a um gráfico, arbitramento de um valor, etc.). Problema Físico Modelo Matemático Solução Modelagem Resolução Modelagem é a fase de obtenção do modelo matemático que descreve o comportamento do sistema físico. Resolução é a fase de obtenção da solução através da aplicação de métodos numéricos (este é o objetivo de estudo do Cálculo Numérico).
  • 6. 5 2 Conceito de Erro 2.1 Introdução A noção de erro está presente em todos os campos do Cálculo Numérico. De um lado, os dados, em si, nem sempre são exatos e, de outro lado, as operações sobre valores não exatos propagam esses erros a seus resultados. Finalmente, os próprios métodos numéricos, freqüentemente métodos aproximados, buscam a minimização dos erros, procurando resultados o mais próximo possível do que seriam valores exatos. Erro é a diferença entre o valor exato e o valor apresentado. No próximo capítulo, sobre representação de números reais, iremos analisar várias situações em que ocorrem erros, quando utilizamos o computador para realizar os cálculos. A seguir, analisaremos os erros que ocorrem durante as fases de modelagem e resolução e também sobre erros de arredondamento e erros de truncamento. 2.2 Erros na Fase de Modelagem Ao se tentar representar um fenômeno do mundo físico por meio de um método matemático, raramente se tem uma descrição correta deste fenômeno. Normalmente, são necessárias várias simplificações do mundo físico para que se tenha um modelo. Exemplo: Estudo do movimento de um corpo sujeito a uma aceleração constante. Tem-se a seguinte equação: d = do + vo * t + 1/2 * α * t2 onde: d : distância percorrida do : distância inicial vo : velocidade inicial t : tempo α : aceleração Determinar a altura de um edifício com uma bolinha de metal e um cronômetro: 3s d = 0 + 0 * 3 + 1/2 * 9.8 * 32 = 44.1m Este resultado é confiável? 1. Fatores não considerados: • resistência do ar • velocidade do vento, etc. 2. Precisão dos dados de entrada: • Se o tempo fosse 3,5s → d = 60.025m • Variação de 16,7% no cronômetro → 36% na altura. 2.3 Erros na Fase de Resolução Para a resolução de modelos matemáticos muitas vezes torna-se necessária a utilização de instrumentos de cálculo que necessitam, para o seu funcionamento, que sejam feitas certas aproximações. Tais aproximações podem gerar erros, tais como: conversão de bases, erros de arredondamento e erros de truncamento. 2.4 Erros Absolutos e Relativos Erro absoluto (EA) é a diferença entre o valor exato de um número N e o seu valor aproximado N’:
  • 7. 6 N = N’ + EAN (N > N’ → EAN > 0 N < N’ → EAN < 0) EAN = N − N’ Erro absoluto Por exemplo, sabendo-se que π ∈ (3.14, 3.15) tomaremos para π um valor dentro deste intervalo e teremos, então, |EAπ| = |π - π‘| < 0.01. Erro Relativo é definido como o erro absoluto dividido pelo valor aproximado: ' ' ' N NN N EA ER N N − == Erro Relativo É claro que EAN só poderá ser determinado se N for exatamente conhecido; como isso é raro, em cálculos numéricos costuma-se trabalhar com uma limitação máxima para o erro, ao invés do próprio (indicando-se, então, | E | < ε, onde ε é o limite). Por exemplo, se α = 3876.373 e só desejamos a parte inteira α’, o erro absoluto será: ∆α = | α − α' | = 0.373 Se fizermos o mesmo com o número β = 1.373, teremos: ∆β = | β − β' | = 0.373 Obviamente, o efeito de aproximação de β é muito maior do que em α, mas o erro absoluto é o mesmo nos dois casos. O erro relativo, entretanto, pode traduzir perfeitamente este fato, pois: δα = 0 373 3876 , ≅ 0,000096 < 10-4 δβ = 0 373 1 , ≅ 0,373 < 5*100 2.5 Erro de Arredondamento Ao se aplicar um método numérico, os erros devidos aos valores iniciais, intermediários e finais conduzem a um erro global (diferença entre o exato e o obtido) também chamado de arredondamento. Erros iniciais são os cometidos no arredondamento dos dados iniciais. Os erros intermediários são decorrentes dos erros cometidos durante a aplicação do método numérico e os erros finais decorrentes da apresentação final do resultado. Os tipos de arredondamentos mais conhecidos são: • Arredondamento para baixo ou por falta; • Arredondamento para cima ou por excesso; • Arredondamento para o numero de maquina mais próximo. Critério de Arredondamento: no cálculo manual, ao registrar um valor aproximado, costuma-se usar a seguinte regra: 1. somar meia unidade após a última casa decimal a conservar; 2. desprezar as demais casas. Assim, com 2 números significativos tem-se: 2 = 1.414 ... ≅ 1.41 (1.414 ... + 0.005 = 1.419 ... → 1.41) 23 = 1.259 ... ≅ 1.26 (1.259 ... + 0.005 = 1.264 ... → 1.26)
  • 8. 7 O uso deste critério limita o erro a meia unidade da última casa conservada: E = 2 − 1.41 = 1.41421 ... − 1.41 = 0.00421 < 0.005 Os valores aproximados obtidos podem ser inferiores (valor aproximado por falta) ou superiores (valor aproximado por excesso) aos exatos; 1.41 é o valor aproximado, por falta, de 2 ; 1.26 é o valor de 23 , aproximado por excesso. Para concluir este item de erro de arredondamento, deve-se ressaltar a importância de se saber o número de dígitos significativos do sistema de representação da máquina que está sendo utilizada para que se tenha a noção da precisão do resultado obtido. Além da precisão decimal, o cálculo do chamado Épsilon da máquina nos dá uma idéia da exatidão da máquina. O ε da máquina é o menor número de ponto flutuante, tal que: 1 + ε > 1. Alguns métodos para cálculo de ε não dão seu valor exato, mas isto nem sempre é necessário, pois o que importa é a sua ordem de grandeza. O programa abaixo, escrito na linguagem Matlab, calcula uma aproximação do ε da máquina: Eps=1.0; while (Eps + 1 > 1) Eps = Eps / 2.0; sprintf('A maquina acha que %1.25f%s',Eps,' vale zero!') end; O programa acima, executado num Pentium, obteve a seguinte resposta: A maquina acha que 0.0000000000000001110223025 vale zero! Logo, o número de dígitos significativos é 19. 2.6 Erro de Truncamento São erros provenientes da utilização de processos que deveriam ser infinitos ou muito grandes para a determinação de um valor e que, por razões práticas, são truncados. Estes processos infinitos são muito utilizados na avaliação de funções matemáticas, tais como, exponenciação, logaritmos, funções trigonométricas e várias outras que uma máquina pode ter. Exemplo: Uma máquina poderia calcular a função seno(x) e exponencial(x) utilizando as seguintes técnicas: seno(x) = x x x x − + − + 3 5 7 3 5 7! ! ! ... ex = 1 2 3 2 3 + + + +x x x ! ! ... Fazendo truncamento: seno(x) ≅ x x x x x n n n − + − + + − 3 5 7 3 5 7 1 ! ! ! ... ( ) !
  • 9. 8 ex ≅ 1 2 3 2 3 + + + + +x x x x n n ! ! ... ! A solução é a de interromper os cálculos quando uma determinada precisão é atingida. De uma maneira geral, pode-se dizer que o erro de truncamento pode ser diminuído até chegar a ficar da ordem do erro de arredondamento; a partir desse ponto, não faz sentido diminuir-se mais, pois o erro de arredondamento será dominante.
  • 10. 9 3 Representação dos Números Reais 3.1 Introdução {Números Complexos (2+3√-1 ) Reais {Irracionais (π; √2 ) Racionais {Inteiros (-1004; 2) Fracionários {Ordinários (32/7; 1/3) Decimais (-3.15; 0.33...) Algumas das propriedades básicas da aritmética real não valem mais quando executadas no computador, pois, enquanto na matemática alguns números são representados por infinitos dígitos, no computador isso não é possível, pois uma palavra de memória é finita e a própria memória também. Exemplos: 2 , 3 , π e 3 1 . Se desejássemos calcular a área de uma circunferência de raio 100m, obteríamos os seguintes resultados: a) A = 31400m2 b) A = 31416 m2 c) A = 31415.92654 m2 Como justificar as diferenças entre os resultados? É possível obter o valor exato desta área? Os erros ocorridos dependem da representação dos números na máquina utilizada. A representação de um número depende da base escolhida ou disponível na máquina em uso e do número máximo de dígitos usados na sua representação. O número π, por exemplo, não pode ser representado através de um número finito de dígitos decimais. No exemplo mostrado acima, o número π foi escrito como 3.14, 3.1416 e 3.141592654 respectivamente nos casos (a), (b) e (c). Em cada um deles foi obtido um resultado diferente, e o erro neste caso depende exclusivamente da aproximação escolhida para π, Qualquer que seja a circunferência, a sua área nunca será obtida exatamente, uma vez que π é um número irracional. Como neste exemplo, qualquer cálculo que envolva números que não podem ser representados através de um número finito de dígitos não fornecerá como resultado um valor exato. Quanto maior o número de dígitos utilizados, maior será a precisão obtida. Por isso, a melhor aproximação para o valor da área da circunferência é aquela obtida no caso (c). Além disso, um número pode ter representação finita em uma base e não-finita em outras bases. A base decimal é a que mais empregamos atualmente. Um computador opera normalmente no sistema binário. Observe o que acontece na interação entre o usuário (ou dados do programa) e o computador: os dados de entrada são enviados ao computador pelo usuário no sistema decimal; toda esta informação é convertida para o sistema binário, e as operações todas serão efetuadas neste sistema. Os resultados finais
  • 11. 10 serão convertidos para o sistema decimal e, finalmente, serão transmitidos ao usuário. Todo este processo de conversão é uma fonte de erros que afetam o resultado final dos cálculos. Na próxima seção, iremos estudar os processos de conversão de números do sistema decimal para o sistema binário e vice-versa. Estudaremos também a forma de armazenamento feita pelos computadores digitais. 3.2 Sistema de Numeração Existem vários sistemas numéricos, dentre os quais destacam-se o sistema decimal (base 10), o octal (base 8) e o hexadecimal (base 16). Em um sistema numérico com base β, existem β dígitos e o maior é β – 1. De um modo geral, um número na base β, (ajaj-1...a2a1a0)β, 0 ≤ ak ≤ (β – 1), k = 1, 2, ..., j, pode ser escrito na forma polinomial: ajββββj + aj-1ββββj-1 +...+ a2ββββ2 + a1ββββ1 + a0ββββ0 Com esta representação, podemos facilmente converter um número representado em qualquer sistema para o sistema decimal. 3.2.1 Sistema de Numeração Decimal No sistema de numeração usual, o sistema decimal, usamos dez dígitos 0, 1, ..., 9. Um número maior que 9 é representado usando uma convenção que atribui significado à posição ou lugar ocupado por um dígito. Por exemplo, em virtude das posições ocupadas pelos dígitos individuais no número 2015, este número tem significado numérico calculado como: 2015 = 2*103 + 0*102 + 1*101 + 5*100 = 2000 + 0 + 10 + 5 = 2015 Notamos que um número é expresso como uma soma de potências de 10 multiplicadas por coeficientes apropriados. No sistema decimal, 10 é a base do sistema. Existem 10 dígitos, o maior sendo 9. Em um sistema numérico com base β, existem β dígitos e o maior é β -1. 3.2.2 Sistema de Numeração Binário No sistema binário existem apenas 2 dígitos: 0 e 1. Como os circuitos eletrônicos usados no computador apresentam 2 estados possíveis, convencionou-se chamar o estado desligado de 0 e o estado ligado de 1. Cada dígito de um número representado no sistema binário é denominado bit (contração de BInary digiT), o conjunto de 4 bits é denominado nibble e o de 8 bits de byte, termo bastante utilizado na área de informática. 3.2.2.1 Conversão do Sistema Binário para Decimal Quando um número é escrito no sistema binário, os dígitos individuais representam os coeficientes de potências de 2. Por exemplo, o número decimal 19 é escrito em representação binária como 10011, pois este arranjo de dígitos binários significa: 10011 = 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 16 + 0 + 0 + 2 + 1 = 19 3.2.3 Conversão do Sistema Decimal para Binário A conversão de um número decimal para binário é feita da seguinte forma:
  • 12. 11 19 2 91 2 41 2 20 2 10 2 01 LSB MSB 19(10) = 10011(2) O bit menos significativo de um número binário recebe a notação de LSB (Least Significant Bit) e o bit mais significativo de MSB (Most Significant Bit). 3.2.3.1 Conversão de Números Binários Fracionários em Decimais Consideremos agora a conversão de um número fracionário binário (base 2) para um número decimal (base 10). 0.12510 = 0*100 + 1*10-1 + 2*10-2 + 5*10-3 = 0.1 + 0.02 + 0.005 = 0.12510 0.0012 = 0*20 + 0*2-1 + 0*2-2 + 1*2-3 = 0 + 0 + 0 + 0.125 = 0.12510 0.1012 = 0*20 + 1*2-1 + 0*2-2 + 1*2-3 = 0 + 0.5 + 0 + 0.125 = 0.62510 3.2.3.2 Conversão de Números Decimais Fracionários em Binários Consideremos agora a conversão de um número fracionário da base 10 para a base 2. Um número real entre 0 e 1 pode ter representação finita no sistema decimal, mas representação infinita no sistema binário. No caso geral, seja r um número entre 0 e 1 no sistema decimal e (0.d1d2...dj...)2 sua representação no sistema binário. Os dígitos binários d1, d2, ..., dj, ... são obtidos através do seguinte algoritmo: Passo 0: r1 = r; k = 1 Passo 1: Calcule 2rk. Se 2rk = 1, faça: dk = 1, caso contrário, faça: dk = 0 Passo 2: Faça rk+1 = 2rk− dk Se rk+1 = 0, pare. Caso contrário: Passo 3: k = k + 1. Volte ao passo 1. Observar que o algoritmo pode ou não terminar após um número finito de passos. Para r = (0.125)10 teremos: r1 = 0.125. k = 1 2r1 = 0.25 ⇒ d1 = 0 r2 = 0.25 − d1 = 0.25 k = 2 2r2 = 0.5 ⇒ d2 = 0
  • 13. 12 r3 = 0.5 k = 3 2r3 = 1.0 ⇒ d3 = 1 r4 = 0 Temos então 0.12510 = 0.0012, sendo portanto a representação binária finita. Já para r = 0.110, teremos: r1 = 0.1 k = 1 2r1 = 0.2 ⇒ d1 = 0 r2 = 0.2 k = 2 2r2 = 0.4 ⇒ d2 = 0 r3 = 0.4 k = 3 2r3 = 0.8 ⇒ d3 = 0 r4 = 0.8 k = 4 2r4 = 1.6 ⇒ d4 = 1 r5 = 0.6 k = 5 2r5 = 1.2 ⇒ d5 = 1 r6 = 0.2 = r2 Como r6 = r2, teremos que os resultados para k de 2 e 5 se repetirão e então: r10 = r6 = r2 = 0.2 e assim indefinidamente. Concluímos que: (0.1)10 = (0.00011001100110011...)2 e, portanto, o número (0.1)10 não tem representação binária finita. O fato de um número não ter representação finita no sistema binário pode acarretar a ocorrência de erros aparentemente inexplicáveis em cálculos efetuados em sistemas computacionais binários. Um computador que opera no sistema binário irá armazenar uma aproximação para (0.1)10, uma vez que possui uma quantidade fixa de posições para guardar os dígitos de mantissa de um número, e esta aproximação será usada para realizar os cálculos. Não se pode, portanto, esperar um resultado exato. Podemos agora entender melhor por que o resultado da operação: S = 01 1 1000 . n= ∑ não é obtido corretamente num computador. Supondo uma máquina digital que trabalhe com apenas 9 dígitos na mantissa, o número (0.1)10 seria armazenado como (0.000110011)2 e este número representa exatamente (0.099609375)10. Portanto, todas as operações que envolvem (0.1)10 seriam realizadas com esta aproximação. Veremos na próxima seção a representação de números em aritmética de ponto flutuante com o objetivo de se entender melhor a causa de resultados imprecisos em operações numéricas. O programa em Matlab a seguir permite calcular 01 1 1000 . i= ∑ , sendo 100 o valor exato dessa somatória. x=0; for i=1:1000 x = x + 0.1; sprintf('x = %0.20f', x) end
  • 14. 13 Quando essa somatória é efetuada utilizando o computador o valor é: 99.99999999999859300000. Se escrever um programa em linguagem C usando double (maior precisão) o resultado será 99.99999999999859310000. 3.3 Aritmética de Ponto Flutuante Usa-se, rotineiramente, duas formas para fazer o armazenamento dos números em máquinas: ponto fixo (para valores inteiros) e ponto flutuante (para valores reais). Uma máquina de calcular, ou um computador digital, representa um número real no sistema denominado aritmética de ponto flutuante. Neste sistema, o número x é representado na forma: x = ± β ββββ e t tdddd ....321 321       ++++ onde: β: é a base em que a máquina opera; di: são números inteiros contidos no intervalo 0 ≤ di ≤ (β - 1); i = 1, 2, ..., t; d1 ≠ 0; e: representa o expoente de β e assume valores entre I ≤ e ≤ S; I, S: limite inferior e limite superior, respectivamente, para a variação do expoente. d d d dt t 1 2 3 1 2 3 β β β β + + + +      ... é chamada de mantissa e é a parte do número que representa os seus dígitos significativos e t é o número de dígitos significativos do sistema de representação, comumente chamado de precisão da máquina. Exemplo 1: No sistema de base β = 10 (decimal), tem-se: 0.12510 = 1 10 2 10 5 10 101 2 3 0 + +      . 3.141510 = 0.31415 • 101 = 3 10 1 10 4 10 1 10 5 10 101 2 3 4 5 1 + + + +      . Os números assim representados estão normalizados, isto é, a mantissa é um valor entre 0 e 1. A forma normalizada é utilizada nas operações envolvendo ponto flutuante em computadores digitais. No sistema de base β = 2 (binário), tem-se: 1010 = 10102 = 0.101 • 24 = 1 2 0 2 1 2 21 2 3 4 + +      . 410 = 1002 = 0.1 * 23 = 1 2 * 23 Exemplo 2: Numa máquina de calcular cujo sistema de representação utilizado tenha β=2, t = 10, I = −15 e S = 15, o número 2510 e 3.510 é assim representado: 2510 = 110012 = 0.11001 * 25 = 0.11001 * 2101 sendo 210 )101()5( = 1 2 1 2 0 2 0 2 1 2 0 2 0 2 0 2 0 2 0 2 1 2 3 4 5 6 7 8 9 10 + + + + + + + + +       * 2101
  • 15. 14 ou, de uma forma mais compacta: 1100100000 0101 Mantissa expoente Cada dígito é chamado de bit, portanto, nesta máquina são utilizados 10 bits para a mantissa, 4 para o expoente e mais um bit para o sinal da mantissa (se bit=0 positivo, se bit=1 negativo) e um bit para o sinal do expoente, resultando, no total, 16 bits, que são assim representados: 2510 = 3.510 = 0.111 * 210 O maior valor representado por esta máquina descrita no exemplo 2 seria: que, na base decimal, tem o seguinte valor: 0.1111111111 * 21111 = 3273610 E o menor valor seria: −0.1111111111 * 21111 = − 3273610 Logo, os números que podem ser representados nesta máquina estariam contidos no intervalo [−32736; 32736]. Nesta máquina, ainda, o valor zero seria representado por: O próximo número positivo representado seria: 0.1 * 2-15 = 0.000015259 O subsequente seria: 0.1000000001 * 2-15 = 0.000015289 Através desses exemplos pode-se concluir que o conjunto dos números representáveis neste sistema é um subconjunto dos números reais, dentro do intervalo mostrado anteriormente. Considere, por exemplo, uma máquina que opera no sistema: β = 10; t = 3; e ∈ [-5,5]. Os números serão representados da seguinte forma nesse sistema: 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 Valor da Mantissa Expoente Sinal da Mantissa Sinal Exp. 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 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 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1
  • 16. 15 0.d1d2d3 * 10e , 0 ≤ dj ≤ 9, d1 ≠ 0, e ∈ [−5, 5] O menor número (m), em valor absoluto, representado nesta máquina é: m = 0.100 * 10-5 = 10-6 e o maior número (M), em valor absoluto, é: M = 0.999 * 105 = 99900 Considere o conjunto dos números reais R e o seguinte conjunto: G = {x ∈ R | m ≤ | x | ≤ M} Dado um número real x, várias situações poderão ocorrer: 1. x ∈ G: por exemplo, x = 235.89 = 0.23589 * 103 . Observe que este número possui 5 dígitos na mantissa. Estão representados exatamente nesta máquina os números: 0.235*103 e 0.236*103 . Se for usado o truncamento, x será representado por 0.235*103 e, se for usado o arredondamento, x será representado por 0.236*103 . Na próxima seção, sobre erros, estudaremos o truncamento e o arredondamento; 2. | x | < m: por exemplo, x = 0.345*10-7 . Este número não pode ser representado nesta máquina porque o expoente e é menor que −5. Esta é uma situação em que a máquina acusa a ocorrência de underflow; 3. | x | > M: por exemplo, x = 0.875*109 . Neste caso o expoente e é maior que 5 e a máquina acusa a ocorrência de overflow. Algumas linguagens de programação permitem que as variáveis sejam declaradas em precisão dupla. Neste caso, esta variável será representada no sistema de aritmética de ponto flutuante da máquina, mas com aproximadamente o dobro de dígitos disponíveis na mantissa. É importante observar que, neste caso, o tempo de execução e requerimento de memória aumenta de forma significativa. O C fornece três tipos para números de ponto flutuante. Cada tipo tem um intervalo e uma precisão especificada: IntervaloTipo Nº de bits Inicio Fim float 32 3.4E−38 3.4E+38 double 64 1.7E−308 1.7E+308 long double 80 3.4E−4932 3.4E+4932 O tipo long double é o tipo de ponto flutuante com maior precisão. É importante observar que os intervalos de ponto flutuante, na tabela acima, estão indicados em faixa de expoente, mas os números podem assumir valores tanto positivos quanto negativos. 3.4 Propagação de Erros Durante as operações aritméticas de um método, os erros dos operandos produzem um erro no resultado da operação; sendo A, a, B, b os valores exatos e aproximados, respectivos, e Ea e Eb, os erros dos operandos. A + B = (a + Ea) + (b + Eb) = a + b + Ea + Eb ∴ EAA+B = Ea + Eb A − B = (a + Ea) − (b + Eb) = a − b + Ea − Eb ∴ EAA-B = Ea − Eb
  • 17. 16 A * B = (a + Ea) (b + Eb) = ab + aEb + bEa + Eb*Ea ∴ EAA*B = aEb + bEa + Eb*Ea Vejamos através de um exemplo, como os erros descritos anteriormente podem influenciar o desenvolvimento de um cálculo. Exemplo: Suponha-se que as operações abaixo sejam processadas em uma máquina com 4 dígitos significativos e fazendo-se: x1 = 0.3491*104 e x2 = 0.2345*100 tem-se: (x2 + x1) − x1 = (0.2345*100 + 0.3491*104 ) − 0.3491*104 = 0.3491*104 − 0.3491*104 = 0.0000 x2 + (x1 − x1) = 0.2345*100 + (0.3491*104 − 0.3491*104 ) = 0.2345 + 0.0000 = 0.2345 Os dois resultados são diferentes, quando não deveriam ser, pois a adição é uma operação distributiva. A causa desta diferença foi um arredondamento feito na adição (x2 + x1), cujo resultado tem 8 dígitos. Como a máquina só armazena 4 dígitos, os menos significativos foram desprezados. Ao se utilizar máquinas de calcular deve-se estar atento a essas particularidades causadas pelo erro de arredondamento, não só na adição, mas também nas outras operações.
  • 18. 17 4 Zeros de Equações Transcendentes e Polinomiais 4.1 Introdução Seja F(x) uma função real definida num intervalo [a, b]. Chama-se raiz(es) desta função em [a, b] a todo ξ (csi) ∈ (a, b) tal que F(ξ) = 0, como mostra a figura abaixo. 0 f(x)y x ξ b a 4.1.1 Derivada de uma função num ponto A função ƒ : A → R diz-se derivável no ponto de acumulação a ∈ A quando existe e é finito o limite: ∆ ∆ ∆ ∆ ∆ ∆x x a x y x f x f a x a f a x f a x→ → → = − − = + − 0 0 lim lim ( ) ( ) lim ( ) ( ) Quando f é derivável em a, o limite é chamado derivada de f no ponto a. 4.1.2 Tipos de Métodos Pode-se dizer que são dois os métodos para se achar a(s) raiz(es) de uma equação: Método direto: quando fornece solução em apenas um único passo. Esta raiz é exata, a menos de erros de arredondamento. Exemplo: Seja F(x) = x2 − 3x + 2. A solução direta pode ser obtida através da fórmula de Baskara com a expressão: X b b ac a = − ± −2 4 2 , que terá como conjunto solução {1, 2}. a = 1; b = -3; c = 2; %f(x) = x^2 - 3*x + 2 delta = b*b - 4*a*c; if (delta >= 0) x1 = (-b + sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta)) / (2*a); sprintf('x1 = %15.8fn',x1) sprintf('x2 = %15.8fn',x2) else sprintf('Nao possui raizes reaisn'); end Método iterativo ou indireto: é um processo de cálculo infinito, recursivo, em que o valor obtido a cada passo depende de valores obtidos em passos anteriores. Este tipo de método, na maioria das vezes, não obtém solução exata para as raízes, mas sim uma solução aproximada dentro de uma faixa de erro considerada aceitável. É importante salientar, que normalmente, os métodos iterativos são mais precisos quando executados em um computador que permite agilizar os cálculos matemáticos, obtendo assim uma melhor precisão.
  • 19. 18 Exercício: Calcular 4 e de 2 usando o Método de Newton definido por: 2 1 1       + = − − n n n x x x x , para n = 1, 2, 3, ... onde: x: o número a ser calculado a raiz x0: uma atribuição inicial qualquer diferente de zero (por exemplo, x0 = 1). Como vimos anteriormente, o cálculo das duas raízes de uma equação do segundo grau, colocada sob a forma ax2 + bx + c = 0, são facilmente obtidas pela fórmula de Baskara. Entretanto, se colocarmos uma expressão em que apareça uma equação transcendente, a solução já não é tão simples, como demonstram os exemplos abaixo: ex + x = 0 cos(x) – x = 0 ln(x) + x – 2 = 0 Mesmo um polinômio de grau maior que três já não tem uma solução algébrica simples como a da equação do segundo grau, a não ser em casos particulares. Vamos analisar como enfrentar esse problema, tão comum em diversas áreas da engenharia, da economia, das ciências, da física, entre tantas outras. Essas equações, com enorme freqüência, nos levam a raízes reais não racionais que, ao serem representadas no computador, necessariamente, o serão de forma aproximada, pelas razões já expostas no capítulo anterior, tendo em vista que necessitariam de infinitos dígitos, em suas mantissas, para serem representadas. Além disso, em geral, estamos interessados em obter esses valores, essas raízes, com uma determinada precisão, com um erro tolerável, com algumas casas decimais, sem a pretensão de obter valores exatos. Isso é mais do que suficiente, para a maioria dos problemas práticos encontrados. Os métodos numéricos a serem apresentados, partindo de valores inicialmente propostos, buscam aprimorar esses valores, diminuindo os erros, aproximando-se, assim, dos valores das raízes procuradas, até que os erros sejam aceitáveis, podendo-se garantir que sejam erros inferiores a valores pré-definidos. Para se calcular uma raiz duas etapas devem ser seguidas: • Isolar a raiz, ou seja, achar um intervalo [a, b], o menor possível, que contenha uma e somente uma raiz da equação f(x) = 0; • Melhorar o valor da raiz aproximada, isto é, refiná-la até o grau de exatidão requerido. Com a abordagem iterativa precisamos determinar um intervalo inicial para construirmos a seqüência {xi} e teremos que a raiz x' será dada por: i i xx ∞→ = lim' Além disto, temos que estipular critérios de parada, pois na pratica não calcularemos infinitos termos, mas apenas o suficiente para atingirmos a exatidão desejada. 4.1.3 Isolamento de Raízes Nesta fase é feita uma análise teórica e gráfica da função f(x). Para tal fim, usa-se freqüentemente um importante teorema da álgebra. Teorema: Se uma função f(x) contínua num intervalo [a, b] assume valores de sinais opostos nos
  • 20. 19 pontos extremos deste intervalo, isto é, f(a). f(b) < 0, então o intervalo conterá, no mínimo, uma raiz da equação f(x) = 0; em outras palavras haverá, no mínimo, um número ξ ∈ (a, b) tal que f(ξ) = 0. 4.1.3.1 Número de Raízes Reais Na seção anterior vimos como delimitar as raízes reais de F(x) = 0. Agora iremos verificar quantas raízes existem no intervalo delimitado. Os métodos a seguir dão uma boa indicação sobre o número de raízes do intervalo. Teorema de Bolzano: Seja F(x) = 0 uma equação algébrica com coeficientes reais e x ∈ (a, b): • Se F(a).F(b) < 0, então existe um número impar de raízes reais (contando suas multiplicidades) no intervalo (a, b). • Se F(a).F(b) > 0, então existe um número par de raízes reais (contando suas multiplicidades) ou não existe raízes reais no intervalo (a, b). A determinação do número de raízes de equações transcendentes geralmente é quase impossível, pois algumas equações podem ter um número infinito de raízes. Não faremos maiores considerações sobre este importante tópico, por não ser o objeto de estudo neste momento, e por merecer um trabalho a parte, devido a extensão de seu conteúdo. Entretanto, podemos salientar que o problema de isolar raízes constitui-se da enumeração, localização e separação das mesmas. 4.1.3.2 Refinamento Depois de isolar a raiz no intervalo [a, b], passa-se a calculá-la através de métodos numéricos. Como veremos adiante, estes métodos devem fornecer uma seqüência {xi} de aproximação, cujo limite é a raiz exata ξ. Em cada aproximação xn, da raiz exata ξ, usa-se um destes critérios e compara-se o resultado com a tolerância ε pré-fixada. A verificação, de que xn está "suficientemente" próxima da raiz, pode ser feita de dois modos diferentes (que podem levar a resultados diferentes): | f(xn) | ≤ ε ( abordagem pelo eixo y) | xn − xn-1 | ≤ ε (abordagem pelo eixo x) Observa-se que dependendo dos números envolvidos é aconselhável usar os testes de erro relativo: || || 1 1 − −− n nn x xx ≤ ε 4.1.4 Classificação dos métodos Métodos de quebra: Os métodos de quebra são os mais intuitivos geometricamente; contudo, são os que convergem mais lentamente. Estes métodos são assim chamados porque a partir de um intervalo que contenha uma raiz da função, vai-se particionando este intervalo em outros menores, que ainda contenham a raiz. Dependendo da escolha do ponto de quebra do intervalo, poderemos ter diferentes métodos, tais como. • Método da Bisseção; • Método da Falsa Posição. Métodos de ponto fixo: Nos métodos de ponto fixo começamos de uma aproximação inicial x0 e construímos a seqüência {xi} na qual cada termo é dado por xi+1 = ζ(xi), onde ζ é uma função de iteração. Conforme for ζ, (dzeta) teremos diferentes métodos de ponto fixo, tais como.
  • 21. 20 • Método de Newton-Raphson; • Método da Iteração Linear. Métodos de múltiplos pontos: Os métodos de múltiplos pontos constituem uma generalização do método anterior, onde para determinar um ponto xi+1 utilizamos vários pontos anteriores: xi, xi-1, ..., xi-p. Exemplo: • Método da Secante. 4.2 Método da Bisseção Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo que ξ ∈ (a, b), tal que f(ξ) = 0. y x0 b a x1 x2 f(x) f(a) f(b) ξ x3 x4 Interpretação geométrica do método da bisseção Dividindo o intervalo [a, b] ao meio, obtém-se x1, havendo, pois, dois subintervalos, [a, x1] e [x1, b], a ser considerados. Se f(x1) = 0, então ξ = x1; caso contrário, a raiz estará no subintervalo onde a função tem sinais opostos nos pontos extremos, ou seja, se f(a). f(x1) < 0 então ξ ∈ [a, x1], senão f(a). f(x1) > 0 e ξ ∈ [x1, b]. O processo se repete até que se obtenha uma aproximação para a raiz exata ξ, ou seja, que o critério de parada seja satisfeito. Então, por indução, temos: Algoritmo: 2 ba xn + = , para n = 1, 2, 3, ... Se f(a). f(xn) < 0, então teremos b = xn, senão a = xn. Critério de Parada: errof xn ≤)( ou | b − a | ≤ erro Restrição: É necessário conhecer um intervalo que contenha o valor desejado ξ. 4.2.1 Estimativa do Número de Iterações Considerando uma precisão ε e um intervalo inicial [a, b] é possível saber, a priori, quantas iterações serão efetuadas pelo método da bisseção até que se obtenha | b − a | ≤ ε, usando o algoritmo deste método. Vimos que: k kk kk abab ab 22 0011 − = − =− −−
  • 22. 21 Deve-se obter o valor de k tal que bk − ak < ε, ou seja, ε< − k ab 2 00 ⇒ kab 200 < − ε log(b0 − a0) − log(ε) < k * log(2) k ab < −− )2log( )log()log( 00 ε Portanto, se k satisfaz a relação acima, ao final da iteração k teremos o intervalo [a, b] que contem a raiz ξ. 4.2.2 Considerações Finais • As iterações não envolvem cálculos laboriosos; • Apesar de teoricamente seguro, o método pode ter falhas. Se ocorrer um erro de arredondamento, mesmo que pequeno, no momento em que a máquina avalia o sinal do ponto médio, poderemos ter um intervalo que efetivamente não contém uma raiz; • Pode ser difícil encontrar um intervalo [a, b], tal que f(a). f(b) < 0, em equações com raízes de multiplicidade par ou muito próximas; • A convergência é muito lenta, pois se o intervalo inicial é tal que b0 − a0 >> ε e se ε for muito pequeno, o numero de iterações (k) tende a ser muito grande; • Deve ser utilizado apenas para diminuir o intervalo que contém a raiz. 4.2.3 Exemplos Exemplo 1: Encontrar a raiz da função f(x) = x.ln(x) − 3.2 contida no intervalo [2, 3], com erro ≤ 10-2 . a) Algoritmo: 2 ba xn + = b) Escolha do intervalo: f(2) = −1.81371 f(3) = 0.09584 ξ ∈ [2, 3] c) Valor do erro: erro ≤ 10-2 d) Iterações: a Xn b f(a) f(xn) | xn − a | ε = | f(xn) | 2 2.5 3 −1.81371 −0.90927 0.5 0.90927 2.5 2.75 3 −0.90927 −0.41810 0.25 0.41810 2.75 2.875 3 −0.41810 −0.16385 0.125 0.16385 2.875 2.9375 3 −0.16385 −0.03467 0.0625 0.03467 2.9375 2.96875 3 −0.03467 0.03042 0.03125 0.03042 2.9375 2.953125 2.96875 −0.03467 −0.00217 0,015625 0.00217 e) Resposta: A raiz desejada é ξ = 2,953125 Exercício 1: Encontrar a raiz de f(x) = x2 − 3, contida no intervalo [1; 2], com erro ≤ 10-2 . Resposta: A raiz desejada é ξ = 1.734375
  • 23. 22 Exercício 2: Encontrar a raiz da função f(x) = x2 + ln(x) contida no intervalo [0.5, 1], com erro ≤ 10-2 . Resposta: A raiz desejada é ξ = 0.65625 Exercício 3: Encontrar a primeira raiz positiva da função f(x) = e-x − sen(x), com erro ≤ 10-2 . Resposta: A raiz desejada é ξ = 0.59375 4.3 Método da Falsa Posição Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo que ξ ∈ (a, b), tal que f(ξ) = 0. No caso do Método da Bisseção, xn é obtido através da média aritmética entre os extremos a e b: 2 ba xn + = Na maioria das vezes a raiz está mais próxima de um dos extremos do intervalo. Se partirmos do princípio de que a raiz deve estar mais próxima do ponto que apresenta o menor valor da função, então, em vez de tomar a média aritmética entre a e b, o método da falsa posição toma a média aritmética ponderada entre a e b com pesos | f(b) | e | f(a) |, respectivamente: )()( )()( afbf afbbfa xn + + = , visto que f(a) e f(b) têm sinais opostos, temos então: )()( )().( )()( )()()()( )()( )()( afbf afab a afbf aafaafabfbaf afbf abfbaf xn − − −= − +−− = − − = , para n = 1, 2, 3, ... Graficamente, este método procura particionar o intervalo [a, b], na interseção da reta que une os pontos (a, f(a)) e (b, f(b)) com o eixo x. Este ponto é representado como xn. Escolhe-se então um novo subintervalo conforme for a variação do sinal da curva f. O método da falsa posição aplicado na figura abaixo mostra que f(x1).f(a) < 0, com isso, o novo intervalo que contém pelo menos uma raiz real é dado por (a, x1). Continuando o processo, determinamos o ponto x2 e verifica-se, agora, que f(x2).f(x1) < 0, daí o processo segue tendo o intervalo (x1, x2). Após encontrar o ponto x1, devemos verificar, como no caso da bisseção, se a raiz está entre o intervalo (a, x1) ou (x1, b). Se f(a).f(x1) < 0, então teremos b = x1, caso contrário teremos a = x1. A partir daí o processo se repete até que o critério de parada seja satisfeito. y x0 b a x1 f(x) f(b) f(a) ξ f(b') x2 Representação geométrica do método da falsa posição
  • 24. 23 O algoritmo deste método também pode ser encontrado através da análise dos triângulos formados pela reta (a, f(a)) e (b, f(b)) com o eixo x. Seja o triângulo f(a)x1a e o triângulo f(a)f(b)f(b’), então, pela propriedade da semelhança de triângulos temos: ∴ − −− =−∴ − − = − − ∴ − − = − − )()( ))()(( )()()()( )()( 1 1 1 afbf afab ax af ax afbf ab af afbf ax ab )()( ))()(( 1 afbf afab ax − − −= Se f(a).f(x1) < 0, então teremos b = x1, senão a = x1. A partir daí o processo se repete até que o critério de parada seja satisfeito. Então, por indução temos: Algoritmo: )()( )().( afbf afab axn − − −= Para n = 1, 2, 3, ... Se f(a).f(xn) < 0, então teremos b = xn, senão a = xn. Critério de Parada: | xn − xn-1 | ≤ erro (x0 = a ou x0 = b) Pode ser usado também o critério: errof xn ≤)( Restrição: É necessário conhecer um intervalo que contenha o valor desejado ξ. 4.3.1 Casos especiais Se f(x) é contínua no intervalo [a, b] com f(a).f(b) < 0 então o método da falsa posição gera uma seqüência convergente. Se uma função é côncava ou convexa em [a, b], ou seja, a segunda derivada existe em [a, b] e f”(x) não muda de sinal nesse intervalo, então no método da falsa posição teremos sempre uma das extremidades fixa. Este caso especial também é chamado de Método das Cordas. A figura abaixo mostra graficamente os quatro casos que podem ocorrer: f x f a e f b "( ) ( ) ( ) > < > ⇒ 0 0 0 b é ponto fixo f x f a e f b "( ) ( ) ( ) > > < ⇒ 0 0 0 a é ponto fixo
  • 25. 24 y x0 b a x1 x2 f(x) f(b) f(a) ξ y x0 b a x1x2 f(x) f(a) f(b) ξ f x f a e f b "( ) ( ) ( ) < < > ⇒ 0 0 0 a é ponto fixo y x0 b a x1 x2 f(x) f(a) f(b) ξ f x f a e f b "( ) ( ) ( ) < > < ⇒ 0 0 0 b é ponto fixo y x0 b a x1 x2 f(x) f(b) f(a) ξ Método da falsa posição com uma das extremidades fixa 4.3.2 Considerações finais • Se o ponto fixo existir e for razoavelmente próximo da raiz, o método tem boa convergência; caso contrário, pode ser mais lento que a bisseção. 4.3.3 Exemplos Exemplo 1: Determinar pelo método da falsa posição a menor raiz positiva da função de quarto grau f(x) = x4 − 26x2 + 24x + 21 até que o erro absoluto seja igual ou inferior a 0.01. Os cálculos devem ser efetuados com 2 casas decimais e com arredondamento. a) Algoritmo: )()( )().( afbf afab axn − − −= f(x) = x4 − 26x2 + 24x + 21 f’(x) = 4x3 − 52x + 24 f”(x) = 12x2 − 52 b) Escolha do intervalo: Em primeiro lugar, deve-se procurar o intervalo onde possivelmente esteja a primeira raiz positiva. Através da análise do valor da função nos primeiros pontos do eixo dos x temos que: f(0) = 21, f(1) = 20, f(2) = −19, logo, entre (1, 2) existe uma raiz positiva. c) Valor inicial: a = 1 b = 2 f”(1) = −40 f”(2) = −4 → f”(1).f”(2) > 0 ∴ a concavidade não muda.
  • 26. 25 temos f”(x) < 0, f(a) > 0 e f(b) < 0, portanto, b é ponto fixo. d) Valor do erro: erro ≤ 10-2 e) Iterações: x f f f 1 1 2 1 1 2 1 1 1 20 19 20 1 20 39 1 51= − − − = − − − = − − = ( )( ( )) ( ( ) ( )) ( )( ) ( ) , | x1 − a | = | 1,51 − 1 | = 0,51 > erro f(a).f(x1) = (20).(3,16) = 63,2 > 0, portanto a raiz está no intervalo (x1, b), então a = x1 x f f f 2 1 51 2 1 51 1 51 2 1 51 1 51 0 49 316 19 316 151 155 22 16 1 58= − − − = − − − = − − =, ( , )( ( , )) ( ( ) ( , )) , ( , )( , ) ( , ) . ( , ) , , | x2 − x1 | = | 1,58 − 1,51 | = 0,07 > erro f(a).f(x2) = (1,51).(1,58) = 2,3858 > 0, ∴ a = x2 x f f f 3 1 58 2 1 58 1 58 2 1 58 158 0 42 0 24 19 0 24 158 010 19 24 1 59= − − − = − − − = − − =, ( , )( ( , )) ( ( ) ( , )) , ( , )( , ) ( , ) , , , , | x3 − x2 | = | 1,59 − 1,58 | = 0,01 < erro f) Resposta: ξ = 1,59 é a primeira raiz positiva do polinômio. Exercício 1: Calcular a raiz aproximada para a equação f(x) = cos(x) + x, com ε ≤ 0.001. Resposta: ξ = −0.7391 é a raiz procurada da equação. Exercício 2: Calcular a raiz negativa para a função f(x) = ex + x, com o erro ≤ 0.01. Sabe-se que a raiz está contida no intervalo [−1, 0]. Resposta: ξ = −0.5677 é a raiz procurada da equação. 4.4 Método da Iteração Linear Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo ξ ∈ (a, b), tal que f(ξ) = 0. Por um artifício algébrico, pode-se transformar f(x) = 0 em duas funções que lhe sejam equivalentes. f(x) = 0 →    = = )(xgy xy onde g(x) é chamada de função de iteração.
  • 27. 26 y x 0 f(x) ξ y=x y=g(x) Interpretação geométrica do método da iteração linear Sendo x0 a primeira aproximação da raiz ξ, calcula-se g(x0). Faz-se então, x1 = g(x0), x2 = g(x1), x3 = g(x2) e assim sucessivamente. Então, por indução, temos: Algoritmo: )( 1−= nn xgx para n = 1, 2, 3, ... Critério de Parada: | xn − xn-1 | ≤ erro Melhor extremo: Empiricamente, sabe-se que o método tem sucesso quando | g'(x) | < 1 em todo intervalo. O extremo mais rápido para iniciar o método é aquele para o qual o módulo da primeira derivada é menor. Se | g'(a) | < | g'(b) | então x0 = a, senão x0 = b. 4.4.1 Casos de convergência Seja f(x) = x3 − 5x + 3. Possíveis g(x): g(x) = 5 33 +x g(x) = ( ) 3 1 35 −x g(x) = 2 35 x x − g(x) = 5 3 2 − − x Como podemos ter várias funções g(x), vamos estabelecer algumas condições para que os resultados sejam satisfatórios. Vamos observar graficamente o problema e verificar que há funções g(x) que não são indicadas para a escolha. Convergência monotônica 0 < g’(x) < 1 Convergência oscilante −1 < g’(x) < 0
  • 28. 27 y x 0 x1 x2 x0 y=x y=g(x) ξ y x 0 x1 x2 x0 y=x y=g(x) x3 x4 ξ Divergência monotônica g’(x) > 1 y x 0 x1 x2 x0 y=xy=g(x) ξ Divergência oscilante g’(x) < −1 y x 0 x1 x2 x0 y=x y=g(x) ξ x3 x4 Convergência no método da iteração linear 4.4.2 Considerações finais • A maior dificuldade neste método é encontrar uma função de iteração que satisfaça à condição de convergência; • Teste de | g'(x) | < 1 pode levar a um engano se x0 não estiver suficientemente próximo da raiz. A velocidade de convergência dependerá de | g'(ξ) |: quanto menor este valor maior será a convergência; • Devemos observar que o teste de erro ( | xn − xn-1 | ≤ erro ) não implica necessariamente que | xn − ξ | ≤ erro, conforme vemos na figura abaixo: y x 0 ξ y=x y=g(x) xn xn-1 4.4.3 Exemplos Exemplo 1: Dada a função f(x) = x2 + 3x − 40, obter sua raiz contida no intervalo [4.5, 5.5], pelo MIL, com um erro ≤ 10-4 . a) Algoritmo: )( 1−= nn xgx b) Escolha da função de iteração: y = x
  • 29. 28 y = 3 402 − −x y' = 3 2x− → divergência oscilante y = 3 40 +x y' = 2 )3( 40 + − x → convergência oscilante y = x340 − y' = x3402 3 − − → convergência oscilante c) Melhor extremo (valor inicial): y = x340 − → y' = x340*2 3 − − y'(4.5) = −0.2914 y'(5.5) = −0.3094 ∴ x0 = 4.5 d) Valor do erro: erro ≤ 10-4 e) Iterações: x1 = 5.14782 x2 = 4.95546 x3 = 5.01335 x4 = 4.99599 x5 = 5.00120 x6 = 4.99964 x7 = 5.00011 x8 = 4.99997 x9 = 5.00000 | x9 – x8 | = 0.00003 < erro f) Resposta: A raiz desejada é ξ = 5.00000 Exercício 1: Dada a função f(x) = x2 + 3x − cos(x) − 2.45, obter sua raiz contida no intervalo [0.5, 1], pelo MIL, com um erro ≤ 10-2 . Resposta: A raiz desejada é ξ = 0.8161 4.5 Método de Newton-Raphson ou Método das Tangentes Seja f(x) uma função contínua no intervalo [a, b] e seja ξ uma raiz desta função, sendo ξ ∈ (a, b), tal que f(ξ) = 0 e f’(x) ≠ 0. y x0 a f(a) b=x0 f(x) x1x2 αβ x'1 ξ f(x0) f(x1)
  • 30. 29 Interpretação geométrica do método de Newton Tomemos x0 = b. Então temos: )(' )()( )(')(' 0 0 01 10 0 00 xf xf xx xx xf xfxftg −=∴ − =∴=α Se erroxx ≤− 01 , então x1 é a raiz desejada, senão deve-se calcular x2, que é obtido com base no mesmo raciocínio anterior: )(' )( 1 1 12 xf xf xx −= . Se erroxx ≤− 12 , então x2 é a raiz desejada, senão deve-se calcular x3, ..., xn, até que erroxx nn ≤− −1 . Então, por indução, temos: Algoritmo: )(' )( 1 1 1 − − − −= n n nn xf xf xx , para n = 1, 2, 3, ... Critério de Parada: erroxx nn ≤− −1 Restrição: É necessário conhecer um intervalo que contenha o valor desejado ξ. Melhor extremo: Para decidir qual o melhor extremo do intervalo (a, b) a iniciar o método, basta verificar qual dos extremos possui função e segunda derivada com mesmo sinal: f(xi). f''(xi) > 0 Para i = {extremos do intervalo} 4.5.1 Considerações finais • Requer o conhecimento da forma analítica de f '(x), mas sua convergência é extraordinária. 4.5.2 Exemplos Exemplo 1: Calcular a raiz positiva da equação f(x) = 2x − sen(x) − 4 = 0, com erro ≤ 10-3 , usando o método de NR. a) Algoritmo: )(' )( 1 1 1 − − − −= n n nn xf xf xx f(x) = 2x − sen(x) − 4 f´(x) = 2 − cos(x) f''(x) = sen(x) b) Escolha do intervalo: f(2) = −0.9093 f(3) = 1.8589 f(2). f(3) < 0 → ξ ∈ [2, 3] c) Melhor extremo (valor inicial): f(2) = −0.9093 f(3) = 1.8589 f''(2) = 0.9093 f''(3) = 0.1411 ∴ x0 = 3 d) Valor do erro:
  • 31. 30 erro ≤ 10-3 e) Iterações: 3783.2 9900.2 8589.1 3 )3(' )3( 31 =−=−= f f x | x1 − x0 | = | 2.3783 − 3 | = 0.6217 > erro 3543.2 7226.2 0653.0 3783.2 )3783.2(' )3783.2( 3783.22 =−=−= f f x | x2 − x1 | = | 2.3543 − 2.3783 | = 0.0240 > erro 3542.2 7058.2 0002.0 3543.2 )3543.2(' )3543.2( 3543.23 =−=−= f f x | x3 − x2 | = | 2.3542 − 2.3543 | = 0.0001 < erro f) Resposta: A raiz desejada é ξ = 2.3542 Exercício 1: Obter a raiz cúbica de 5, usando o método NR sendo o erro ≤ 10-3 . f(x) = x3 − 5 f'(x) = 3x2 f''(x) = 6x Resposta: A raiz desejada é ξ = 1.7100 Exercício 2: Calcular a raiz negativa de f(x) = x3 − 5x2 + x + 3, com erro ≤ 10-4 . f(x) = x3 − 5x2 + x + 3 f´(x) = 3x2 − 10x + 1 f''(x) = 6x − 10 Resposta: A raiz desejada é ξ = −0.64575 Exercício 3: Seja a função f(x) = sen(x) − tg(x). Deseja-se saber uma das raízes desta função, sabendo-se que está contida no intervalo (3, 4). Todos os cálculos devem ser realizados com 4 casas decimais com arredondamento e erro não superior a 0.001. f(x) = sen(x) − tg(x) f'(x) = cos(x) − sec2 (x) f''(x) = −sen(x) − 2sec2 (x) tg(x) Resposta: A raiz desejada é ξ = 3.1416 4.5.3 Condições de Newton-Raphson-Fourier Segundo Newton, para haver a convergência à uma raiz em seu método, bastaria que o intervalo (a, b) em análise fosse suficientemente pequeno. Contudo, Raphson e Fourier concluíram que um intervalo pequeno é aquele que contém uma e somente uma raiz. Com isso, algumas condições foram estabelecidas para que tal exigência fosse válida:
  • 32. 31 1ª) Se f(a). f(b) > 0, então existe um número par de raízes reais (contando suas multiplicidades) ou não existe raízes reais no intervalo (a, b) (Teorema de Bolzano); 2ª) Se f(a).f(b) < 0, então existe um número ímpar de raízes reais (contando suas multiplicidades) no intervalo (a, b) (Teorema de Bolzano); 3ª) Se f'(a). f'(b) > 0, então o comportamento da função neste intervalo poderá ser apenas crescente ou apenas decrescente, e nunca os dois se alternando; 4ª) Se f'(a). f'(b) < 0, então a função terá o comportamento de ora crescer ora decrescer; 5ª) Se f"(a). f"(b) > 0, então a concavidade não muda no intervalo em análise; 6ª) Se f"(a). f"(b) < 0, então a concavidade muda no intervalo em análise. Portanto, haverá convergência à uma raiz no intervalo (a, b) se e somente se: f(a). f(b) < 0, f'(a). f'(b) > 0 e f"(a). f"(b) > 0. Exemplo 2: Seja a função f(x) = x2 − 9.5x + 8.5, obter a raiz contida no intervalo [8, 9]. Os cálculos devem ser realizados com 4 decimais com arredondamento e erro não superior a 0,001. a) Algoritmo : )(' )( 1 1 1 − − − −= n n nn xf xf xx f(x) = x2 − 9.5x + 8.5 f’(x) = 2x − 9.5 f”(x) = 2 b) Escolha do intervalo: f(8) = −3.5; f(9) = 4 f(8). f(9) < 0 → ξ ∈ [8, 9] c) Melhor extremo (valor inicial): f(8) = −3,5 f(9) = 4 f(8). f(9) < 0 f'(8) = 6.5 f'(9) = 8.5 f′(8). f′(9) > 0 f"(8) = 2 f"(9) = 2 f″(8). f″(9) > 0 ∴ x0 = 9 d) Valor do erro: erro ≤ 10-3 e) Iterações: 5294.8 5.8 4 9 )9(' )9( 91 =−=−= f f x | x1 − x0 | = | 8.5294 − 9 | = 0.4706 > erro 5001.8 5588.7 2214.0 5294.8 )5294.8(' )5294.8( 5294.82 =−=−= f f x | x2 − x1 | = | 8.5001 − 8.5294 | = 0.0293 > erro 5000.8 5002.7 0008.0 5001.8 )5001.8(' )5001.8( 5001.83 =−=−= f f x | x3 − x2 | = | 8.5000 − 8.5001 | = 0.0001 < erro f) Resposta: A raiz desejada é ξ = 8.5000
  • 33. 32 Exercício 4: Calcular a raiz da equação f(x) = x3 − x + 1 = 0, contida no intervalo [−2, −1], com um erro ≤ 10-3 . f(x) = x3 − x + 1 f’(x) = 3x2 − 1 f”(x) = 6x Resposta: A raiz desejada é ξ = −1.3247 4.6 Método da Secante Uma grande desvantagem do método de Newton é a necessidade de se obter a derivada f’(x) e calcular o seu valor numérico a cada iteração. Para contornar este problema podemos substituir o cálculo da primeira derivada f’(xn) pelo quociente das diferenças, usando assim, um modelo linear baseado nos dois valores calculados mais recentemente: 1 1 )()( )(' − − − − ≈ nn nn n xx xfxf xf onde xn e xn-1 são duas aproximações para a raiz. Substituindo o valor aproximado da derivada acima, a função de iteração fica: x x n n x f x f x f x x x x x x f x f x f x n n n n n n n n n n n n + + = − − − = − − − − − − − 1 1 1 1 1 1 ( ) ( ) ( ) ( ). ( ) ( ) ( ) , para n = 1, 2, 3, ... Para iniciar o método necessitamos de duas aproximações (x0 e x1) para a raiz. y x0 x1 xo x2 f(x) f(x0) f(x1) ξ x3 x4 Interpretação geométrica do método da secante Neste método partimos das duas aproximações iniciais x0 e x1 e determinamos a reta que passa pelos pontos (x0, f (x0)) e (x1, f (x1)). A intersecção desta reta com o eixo x fornece o ponto x2. Em seguida é calculado uma nova aproximação para a raiz a partir dos pontos (x1, f(x1)) e (x2, f (x2)). O processo se repete até que seja satisfeito o critério de parada. Observe que neste método não necessitamos da característica que é fundamental no método da
  • 34. 33 falsa posição que exige que f(xn). f(xn-1) < 0. É importante salientar também que a raiz não necessita estar entre as duas aproximações iniciais (x0 e x1). A convergência deste método é mais rápido que o método da bisseção e o da falsa posição, contudo, pode ser mais lento que o método de Newton-Raphson. Algoritmo: )()( )().( 1 1 1 − − + − − −= nn nnn nn xfxf xfxx xx , para n = 1, 2, 3, ... Critério de parada: | xn+1 − xn | ≤ erro 4.6.1 Exemplos Exemplo 1: Calcular a raiz da função f(x) = x2 + x − 6, sendo x0 = 1.5, x1 = 1.7 e o erro ≤ 10-2 . a) Algoritmo : )()( )().( 1 1 1 − − + − − −= nn nnn nn xfxf xfxx xx b) Valor inicial: x0 = 1.5 x1 = 1.7 c) Valor do erro: erro ≤ 10-2 d) Iterações: 0357.2 84.0 )282.0( 7.1 )25.2(41.1 )41.1)(2.0( 7.1 )5.1()7.1( )7.1().5.17.1( 7.12 = − −= −−− − −= − − −= ff f x | x2 − x1 | = | 2.0357 − 1.7 | = 0.3357 > erro 9977.1 )41.1(1798.0 )1798.0)(3357.0( 0357.2 )7.1()0357.2( )0357.2().7.10357.2( 0357.23 = −− −= − − −= ff f x | x3 − x2 | = | 1.9977 − 2.0357 | = 0.038 > erro 0000.2 )1798.0(0115.0 )0115.0)(038.0( 9977.1 )0357.2()9977.1( )9977.1().0357.29977.1( 9977.14 = −− −− −= − − −= ff f x | x4 − x3 | = | 2.0000 − 1.9977 | = 0.0023 < erro e) Resposta: ξ = 2.0000 é a raiz procurada. Exercício 1: Calcular a raiz da função f(x) = 3x − cos(x), sendo x0 = 0, x1 = 0.5 e o erro ≤ 10-4 . Efetue os cálculos com 5 casas decimais com arredondamento. Resposta: ξ = 0.31675 é a raiz procurada. Exercício 2: Calcular a raiz da função f(x) = x3 − 4, sendo x0 = 1, x1 = 2 e o erro ≤ 0,05. Resposta: ξ = 1,5914 é a raiz procurada.
  • 35. 34 4.7 Método Misto O método misto, consiste na aplicação seqüencial dos métodos NR e Falsa Posição, nesta ordem. O método NR é aplicado no primeiro passo, sempre a partir do melhor extremo. Então, com o novo resultado obtido N x1 , determina-se qual valor dos extremos do intervalo será substituído ( f(a). f( N x1 ) < 0 → b = N x1 , senão a = N x1 ) e então aplica-se o método da Falsa Posição. O resultado obtido em F mx será utilizado na próxima iteração pelo método NR, mas antes é feito o teste do erro para verificar o critério de parada. Assim, por indução, seguem-se as iterações seguintes. Quando o critério de parada for satisfeito, tira-se a média aritmética simples do resultado da última iteração de ambos os métodos e obtém-se a resposta desejada. Algoritmo: 2 F m N m m xx x + = , para m = 1, 2, 3, ... Critério de parada: | F mx – N mx | ≤ erro 4.7.1 Exemplos Exemplo 1: Determinar pelo método misto, a raiz da função f(x) = 10sen(x) + cos(x) − 10x contida no intervalo [0.5, 1], com tolerância de 2*10-4 e cálculos com 4 casas decimais com arredondamento. a) Algoritmo: 2 F m N m m xx x + = f(x) = 10sen(x) + cos(x) − 10x f´(x) = 10cos(x) – sen(x) – 10 f"(x) = (−10)sen(x) – cos(x) b) Valor do erro: erro ≤ 0.0002 c) Escolha do intervalo: f(0.5) = 0.6718 f(1) = −1.0450 d) Iterações: Melhor extremo: f(0.5) = 0.6718 f(1) = −1.0450 f"(0.5) = −5.6718 f"(1) = −8.9550 ∴ N x0 = 1 8078.0 )4384.5( )0450.1( 1 )1´( )1( 11 = − − −=−= f f xN extremo à trocar: f(a). f( N x1 ) = f(0.5). f(0.8078) = (0.6718)(−0.1594) < 0 ∴ a = 0.5 b = 0.8078 7488.0 )6718.0()1594.0( )6718.0(*)3078.0( 5.0 )5.0()8078.0( )5.0(*)5.08078.0( 5.01 = −− −= − − −= ff f xF
  • 36. 35 | F x1 – N x1 | = | 0.7488 − 0.8078 | = 0.0590 > erro extremo à trocar: f(0.5). f(0.7488) = (0.6718)(0.0521) > 0 ∴ a = 0.7488 b = 0.8078 7643.0 )3557.3( )0521.0( 7488.0 )7488.0´( )7488.0( 7488.02 = − −=−= f f xN extremo à trocar: f(0.7488). f(0.7643) = (0.0521)(−0.0008) < 0 ∴ a = 0.7488 b = 0.7643 7641.0 )0521.0()0008.0( )0521.0(*)0155.0( 7488.0 )7488.0()7643.0( )7488.0(*)7488.07643.0( 7488.02 = −− −= − − −= ff f xF | F x2 – N x2 | = | 0.7641 − 0.7643 | = 0.0002 ≤ erro e) Resposta: 7642.0 2 7643.07641.0 = + =ξ Exercício 1: Dada a função f(x) = x2 + 3x − cos(x) − 2.45, obter sua raiz contida no intervalo [0.5, 1] pelo método misto, com erro ≤ 10-3 e cálculos com 4 decimais com arredondamento. f(x) = x2 + 3x − cos(x) − 2.45 f'(x) = 2x + 3+ sen(x) f"(x) = 2 + cos(x) Resposta: 8200.0 2 82.082.0 = + =ξ 4.8 Método para Equações Polinômiais 4.8.1 Introdução Embora qualquer um dos métodos estudados anteriormente possam ser usados para encontrar zeros de um polinômio de qualquer grau, o fato de os polinômios aparecerem com tanta freqüência em aplicações faz com que seja dedicada uma atenção especial. Normalmente, um polinômio de grau n é escrito na forma: Pn = n n xaxaxaa ++++ K2 210 para an≠0 Sabemos da álgebra elementar como obter os zeros de um polinômio do segundo grau P2(x), ou seja, n = 2. Existem fórmulas fechadas, semelhantes à fórmula para polinômios de grau 2, mas bem mais complicadas, para zeros de polinômios de grau 3 e 4. Agora, para n ≥ 5, em geral, não existem fórmulas explícitas e somos forçados a usar métodos iterativos para encontrar os zeros dos polinômios. Muitos dos teoremas da álgebra são úteis na localização e classificação dos tipos de zeros de um polinômio. O estudo será dividido em localização de raízes e determinação das raízes reais. 4.8.2 Localização de Raízes Vejamos alguns teoremas que serão úteis para efetuar a localização de raízes.
  • 37. 36 Teorema Fundamental da Álgebra: Se Pn(x) é um polinômio de grau n ≥ 1, ou seja, Pn(x) = n n xaxaxaa ++++ K2 210 , para naaaa ,,,, 210 K reais ou complexos, com an≠0, então Pn(x) tem pelo menos um zero, ou seja, existe um número complexo ξ tal que Pn(ξ) = 0. Para determinarmos o número de zeos reais de um polinômio com coeficientes reais, podemos fazer uso da regra de sinal de Descartes: Dado um polinômio com coeficientes reais, o número de zeros reais positivos, p, desse polinômio não excede o número v de variações de sinal dos coeficientes. Temos ainda que v – p é um número inteiro, par e não negativo. Exemplos: Dados os polinômios a seguir, determinar o número de raízes reais positivas: a) P5(x) = + 3x5 – 2x4 – x3 + 2x + 1 + −−−− −−−− + + 1 1 ⇒ v = 2 ⇒ p:    ==− ==− ou ppvse ppvse 0,2 2,0 b) P5(x) = + 3x5 – 2x3 + 4x2 – x – 1 + −−−− + −−−− −−−− 1 11 ⇒ v = 3 ⇒ p:    ==− ==− ou ppvse ppvse 1,2 3,0 c) P7(x) = + x7 + 1 + + 0 ⇒ v = 0 e p: {v – p ≤ 0 ⇒ p = 0}. Para determinar o número de raízes reais negativas, neg, tomamos Pn(–x) e usamos a mesma regra para raízes positivas: a) P5(x) = + 3x5 – 2x4 – x3 + 2x + 1 P5(–x) = – 3x5 – 2x4 + x3 – 2x + 1 −−−− −−−− + −−−− + 111 ⇒ v = 3 ⇒ neg:    ==− ==− ou negnegvse negnegvse 1,2 3,0 b) P5(x) = + 3x5 – 2x3 + 4x2 – x – 1
  • 38. 37 P5(–x) = – 3x5 + 2x3 + 4x2 + x – 1 −−−− + + + −−−− 11 ⇒ v = 2 ⇒ neg:    ==− ==− ou negnegvse negnegvse 0,2 2,0 c) P7(x) = + x7 + 1 P7(x) = – x7 + 1 −−−− + 1 Neste caso, vimos que não existe zero positivo. Temos ainda P7(0) = 1 ≠ 0. Temos então que, v = 1 e neg: {v – neg = 0 ⇒ neg = 1}, ou seja, Pn(x) = 0, não tem raiz real positiva, o zero não é raiz e tem apenas uma raiz real negativa donde tem três raízes complexas conjugadas. 4.8.3 Determinação das Raízes Reais Estudaremos um processo para se calcular o valor numérico de um polinômio, isto porque em qualquer dos métodos este cálculo deve ser feito uma ou mais vezes por iteração. Por exemplo, o Método de Newton, que veremos a seguir, a cada iteração deve-se fazer uma avaliação do polinômio e uma de sua derivada. 4.8.3.1 Método para Calcular o Valor Numérico de um Polinômio Para exemplificar o método, estudaremos o processo analisando um polinômio de grau 4: P4(x) = 01 2 2 3 3 4 4 axaxaxaxa ++++ Este polinômio pode ser escrito na forma: P4(x) = (((a4x + a3)x + a2)x + a1)x + a0 conhecida como forma dos parênteses encaixados. Temos então, no caso de n = 4, que P4 (x) = (((a4 x + a3 )x + a2 )x + a1 )x + a0 b4 b3 b2 : : Para se calcular o valor numérico de P4(x) em x = c, basta fazer sucessivamente: b4 = a4 b3 = a3 + b4c
  • 39. 38 b2 = a2 + b3c b1 = a1 + b2c b0 = a0 + b1c ⇒ P(c) = b0. Portanto, para Pn(x) de grau n qualquer, calculamos Pn(c) calculando as constantes bj, j = n, n – 1, ..., 1, 0 sucessivamente, sendo: bn = an bj = aj + bj+1c j = n – 1, n – 2, ..., 1, 0 e b0 será o valor de Pn(x) para x = c. Podemos calcular o valor de P’n(x) em x = c usando os coeficientes bj obtidos anteriormente. Tomando como exemplo o polinômio de grau 4, temos: P4(x) = 01 2 2 3 3 4 4 axaxaxaxa ++++ ⇒ P’4(x) = 12 2 3 3 4 234 axaxaxa +++ . Usando os valores de aj do cálculo anterior e dado que já conhemos b0, b1, b2, b3 e b4: P’4(x) = 12 2 3 3 4 234 axaxaxa +++ = )()(2)(34 2132 2 43 3 4 cbbccbbccbbcb −+−+−+ = cbbcbcbcbcbcb 212 2 3 2 3 3 4 3 4 22334 −++−+− Assim, P’4(x) = 12 2 3 3 4 bcbcbcb +++ Aplicando o mesmo esquema anterior, teremos: c4 = b4 c3 = b3 + c4c c2 = b2 + c3c c1 = b1 + c2c Calculamos, pois, os coeficientes cj, j = n, n – 1, ..., 1 da seguinte forma: cn = bn cj = bj + cj+1c j = n – 1, n – 2, ..., 1 Teremos então ⇒ P’(c) = c1. 4.8.4 Método de Newton para Zeros de Polinômios Seja Pn(x) = 01 2 2 1 1 axaxaxaxa n n n n +++++ − − L uma aproximação inicial para a raiz procurada. Conforme vimos, o Método de Newton consiste em desenvolver aproximações sucessivas para ξ a partir da iteração: xk+1 = xk – )(' )( k k xP xP para k = 0, 1, 2, ... Exemplo 1: Dada a equação polinomial x5 – 3.7x4 + 7.4x3 – 10.8x2 + 10.8x – 6.8 = 0, temos que:
  • 40. 39 P5(1) = –2.1 P5(2) = 3.6 Então, existe uma raiz no intervalo (1, 2). Partindo de x0 = 1.5 e considerando ε ≤ 0.02, o Método de Newton para polinômios fornece: P’(x) = 5x4 – 14.8x3 + 22.2x2 – 21.6x + 10.8 ((((x – 3.7)x + 7.4)x – 10.8)x + 10.8)x – 6.8 a5 = 1 a4 = –3.7 a3 = 7.4 a2 = –10.8 a1 = 10.8 a0 = –6.8 b5 = 1 b4 = –3.7 + 1(1.5) = –2.2 b3 = 7.4 – 2.2(1.5) = 4.1 b2 = -10.8 + 4.1(1.5) = –4.65 b1 = 10.8 – 4.65(1.5) = 3.825 b0 = -6.8 + 3.825(1.5) = –1.0625 c5 = 1 c4 = -2.2 + 1(1.5) = –0.7 c3 = 4.1 – 0.7(1.5) = 3.05 c2 = -4.65 + 3.05(1.5) = –0.075 c1 = 3.825 – 0.075(1.5) = 3.7125 P(1.5) = –1.0625 e P'(1.5) = 3.7125 x1 = x0 – )5.1(' )5.1( P P = 1.5 – (3.7125) (-1,0625) = 1.5 – (–0.2862) = 1.7862 | x1 – x0 | = | 1.7862 – 1.5 | = 0.2862 > ε b5 = 1 b4 = –3.7 + 1(1.7862) = –1.9138 b3 = 7.4 – 1.9138(1.7862) = 3.98158 b2 = –10.8 + 3.98158(1.7862) = –3.68812 b1 = 10.8 – 3.68812(1.7862) = 4.21228 b0 = –6.8 + 4.21228(1.7862) = 0.72398 c5 = 1 c4 = –1.9138 + 1(1.7862) = –0.1276 c3 = 3.98158 – 0.1276(1.7862) = 3.75366 c2 = –3.68812 + 3.75366(1.7862) = 3.01667 c1 = 4.21228 + 3.01667(1.7862) = 9.60065 P(1.7862) = 0.72398 e P'(1.7862) = 9.60065 x2 = x1 – (1.7862) (1.7862) P' P = 1.7862 – (9.60065) (0.72398) = 1.7862 – (0.07541) = 1.71079 | x2 – x1 | = | 1.71079 – 1.7862 | = 0.07541 > ε b5 = 1 b4 = –3.7 + 1(1.71079) = –1.98921 b3 = 7.4 – 1.98921(1.71079) = 3.99688 b2 = –10.8 + 3.99688(1.71079) = –3.96218 b1 = 10.8 – 3.96218(1.71079) = 4.02154 b0 = –6.8 + 4.02154(1.71079) = 0.08001 c5 = 1 c4 = –1.98921 + 1(1.71079) = –0.27842 c3 = 3.99688 – 0.27842(1.71079) = 3.52056 c2 = –3.96218 + 3.52056(1.71079) = 2.06077 c1 = 4.02154 + 2.06077(1.71079) = 7.54707
  • 41. 40 P(1.71079) = 0.08001 e P'(1.71079) = 7.54707 x3 = x2 – (1.71079) (1.71079) P' P = 1.71079 – (7.54707) (0.08001) = 1.71079 – (0.01060) = 1.70019 | x3 – x2 | = | 1.70019 – 1.71079 | = 0.0106 < ε A raiz procurada é: 1.70019 Exercício 1: Calcular a raiz positiva do polinômio P(x) = 2x3 – 2x2 + 3x – 1, com erro <= 10-4 , pelo método de Newton para polinômios. P'(x) = 6x2 – 4x + 3 A raiz procurada é: 0.39661
  • 42. 41 5 Sistemas Lineares 5.1 Introdução Sistemas Lineares são sistemas de equações com m equações e n incógnitas formados por equações lineares. Um sistema linear com m equações e n incógnitas é escrito usualmente na forma: 11 1 12 2 1 1 21 1 22 2 2 2 1 1 2 2 a x a x a x b a x a x a x b a x a x a x b n n n n m m mn n m + + + = + + + = + + + =        L L L ................................................ onde aij : coeficientes 1 ≤ i ≤ m, 1 ≤ j ≤ n xj : incógnitas j = 1, 2, ..., n bi : constantes i = 1, 2, ..., m A resolução de um sistema linear consiste em calcular os valores de xj, j = 1, 2, ..., n, caso eles existam, que satisfaçam as m equações simultaneamente. Usando notação matricial, o sistema linear pode ser representado por AX = B, onde M = 11 12 1 1 21 22 2 2 1 2 a a a b a a a b a a a b n n m m mn n L L L .................................             é chamada matriz completa ou matriz aumentada do sistema. A = 11 12 1 21 22 2 1 2 a a a a a a a a a n n m m mn L L L ............................             é a matriz dos coeficientes X = 1 2 x x xn M             é o vetor das incógnitas, e B = 1 2 b b bm M             é o vetor constante (termos independentes). 5.1.1 Classificação Quanto ao Número de Soluções Um sistema linear pode ser classificado quanto ao número de soluções em:
  • 43. 42 • Compatível → determinado (o sistema linear tem solução única) indeterminado (o sistema linear admite infinitas soluções)    • Incompatível → (o sistema linear não admite solução). Quando todos os termos independentes forem nulos, isto é, se bi = 0, i = 0, 1, ..., m, o sistema é dito homogêneo. Todo sistema homogêneo é compatível, pois admitirá pelo menos a solução trivial (xj = 0, j = 0, 1, 2, ..., n). 5.2 Métodos Diretos (Algoritmos Diretos) Um método é dito direto quando a solução exata r x do sistema linear é obtida realizando-se um número finito de operações aritméticas. São exemplos conhecidos a Regra de Cramer, o Método da Eliminação de Gauss (ou triangulação) e o Método de Jordan. 5.2.1 Regra de Cramer Seja um sistema linear com número de equações igual ao número de incógnitas (um sistema n x n), sendo D o determinante da matriz A, e Dx1, Dx2, Dx3, ..., Dxn os determinantes das matrizes obtidas trocando em M, respectivamente, a coluna dos coeficientes de x1, x2, x3, ..., xn pela coluna dos termos independentes, temos que: O sistema S será compatível e terá solução única se, e somente se, D ≠≠≠≠ 0. Neste caso a única solução de S é dada por: x1 = xD D 1 , x2 = xD D 2 , x3 = xD D 3 , ... , xn = xnD D A aplicação da Regra de Cramer exige o cálculo de n + 1 determinantes ( det A e det Ai, 1 ≤ i ≤ n); para n = 20 o número total de operações efetuadas será 21 * 20! * 19 multiplicações mais um número semelhante de adições. Assim, um computador que efetue cerca de 100 milhões de multiplicações por segundo levaria 3 x 105 anos para efetuar as operações necessárias. Com isso, a regra de Cramer é inviável em função do tempo de computação para sistemas muito grandes. 5.2.1.1 Exemplos Exemplo 1: Resolva o sistema abaixo pela Regra de Cramer: 1 2 3 1 2 3 1 2 3 1 2 0 2 0 x x x x x x x x x + + = − + = + − =      Calculando os determinantes D, Dx1, Dx2 e Dx3 temos: D = 7 121 112 111 = − − Dx1 = 1 120 110 111 −= − − Dx2 = 3 101 102 111 = − Dx3 = 5 021 012 111 =− Então, x1 = xD D 1 = −1 7 , x2 = xD D 2 = 3 7 , e x3 = xD D 3 = 5 7 e a solução do sistema é x : −       1 7 3 7 5 7 , , T
  • 44. 43 Exercício 1: Resolva o sistema abaixo pela Regra de Cramer: 2 0 2 3 3 2 1 2 3 1 2 3 1 2 3 x x x x x x x x x + − = + + = − − = −      A solução deste sistema é x : ( 0, 1, 1)T 5.2.2 Método da Eliminação de Gauss O método da eliminação de Gauss consiste em transformar o sistema linear original num outro sistema linear equivalente com matriz dos coeficientes triangular superior, pois estes são de resolução imediata. Dizemos que dois sistemas lineares são equivalentes quando possuem a mesma solução. O determinante de sistemas lineares equivalentes são iguais. Com (n − 1) passos o sistema linear AX = B é transformado num sistema triangular equivalente: UX = C, o qual se resolve facilmente por substituições. Vamos calcular a solução de AX = B em três etapas: 1ª etapa: Matriz Completa Consiste em escrever a matriz completa ou aumentada do sistema linear original. 2ª etapa: Triangulação Consiste em transformar a matriz A numa matriz triangular superior, mediante uma seqüência de operações elementares nas linhas da matriz. 3ª etapa: Retro-substituição Consiste no cálculo dos componentes x1, x2, ..., xn, solução de AX = B, a partir da solução do último componente (xn), e então substituirmos regressivamente nas equações anteriores. Teorema: Seja AX = B um sistema linear. Aplicando sobre as equações deste sistema uma seqüência de operações elementares escolhidas entre: i) Trocar a ordem de duas equações do sistema; ii) Multiplicar uma equação do sistema por uma constante não nula; iii) Adicionar um múltiplo de uma equação a uma outra equação; obtemos um novo sistema UX = C e os sistemas AX = B e UX = C são equivalentes. 5.2.2.1 Resolução de Sistemas Triangulares Seja o sistema linear AX = B, onde A: matriz n x n, triangular superior, com elementos da diagonal diferentes de zero. Escrevendo as equações deste sistema, temos: 11 1 12 2 13 3 1 1 22 2 23 3 2 2 33 3 3 3 a x a x a x a x b a x a x a x b a x a x b a x b n n n n n n nn n n + + + + = + + + = + + = =          L L L O M Da última equação deste sistema temos:
  • 45. 44 xn = n nn b a xn-1 pode então ser obtido da penúltima equação: xn-1 = n n n n n n b a x a − − − − −1 1 1 1 , , e assim sucessivamente obtém-se xn-2, ..., x2, e finalmente x1: x1 = 1 12 2 13 3 1 11 b a x a x a x a n n− − − −L 5.2.2.2 Estratégias de Pivoteamento O algoritmo para o método de eliminação de Gauss requer o cálculo dos multiplicadores: mik = - ik kk a a i = k + 1, ..., n e k = 1, 2, 3, ..., n-1 a cada etapa k do processo. Sendo o coeficiente akk chamado de pivô. O que acontece se o pivô for nulo? E se o pivô estiver próximo de zero? Estes dois casos merecem atenção especial pois é impossível trabalhar com um pivô nulo. E trabalhar com um pivô próximo de zero pode resultar em resultados totalmente imprecisos. Isto porque em qualquer calculadora ou computador os cálculos são efetuados com precisão finita, e pivôs próximos de zero são origem a multiplicadores bem maiores que a unidade que, por sua vez, origina uma ampliação dos erros de arredondamento. Para se contornar estes problemas deve-se adotar uma estratégia de pivoteamento, ou seja, adotar um processo de escolha da linha e/ou coluna pivotal. Esta estratégia consiste em: i) no inicio da etapa k da fase de escalonamento, escolher para pivô o elemento de maior módulo entre os coeficientes: aik, i = k, k + 1, ..., n; ii) trocar as linhas k e i se for necessário. 5.2.2.3 Classificação do Sistema Triangular Seja U um sistema triangular superior escalonado de m equações e n incógnitas, teremos as seguintes possibilidades: i) m = n → sistema compatível e determinado; ii) m < n → sistema compatível e indeterminado. Se durante o escalonamento surgir equações do tipo: 0x1 + 0x2 + ... + 0xn = bm, então: i) Se bm = 0, então eliminaremos a equação e continuamos o escalonamento; ii) Se bm ≠ 0, então conclui-se que o sistema é incompatível. 5.2.2.4 Exemplos Exemplo 1: Resolver o sistema abaixo pelo método de Gauss.      −=−− =−+ =++ 23 02 32 321 321 321 xxx xxx xxx
  • 46. 45 1ª etapa: Matriz completa: M =           −−− − 2113 0112 3121 2ª etapa: Triangulação: Iremos se referir as equações como: E1 (primeira equação), E2 (segunda equação) e assim por diante. O componentes x indica o pivô. EEE EEE 122 133 2 3 −← −← →           −−− −−− 11470 6330 3121 → E3 = E3 − 7 3 E2 →           −−− 3300 6330 3121 3ª etapa: Retro-substituição: Da terceira linha temos: 3x3 = 3 ⇒ x3 = 1 Substituindo x3 na segunda linha temos: −3x2 − 3(1) = −6 ⇒ x2 = 1 Substituindo x3 e x2 na primeira linha temos: 1x1 + 2(1) + 1(1) = 3 ⇒ x1 = 0 A solução deste sistema é x : ( 0, 1, 1)T Exercício 1: Resolver o sistema abaixo pelo método de Gauss: 0 25 0 5 0 25 0 09 0 3 0 49 0 01 0 1 0 81 1 2 3 1 2 3 1 2 3 , , , , , , , , , x x x x x x x x x + + = + + = + + =      A solução deste sistema é x : ( 1, -2, 1)T Exercício 2: Resolver o sistema abaixo pelo método de Gauss:      −=−+− =−− =−+ 2141 2131 0210 321 321 321 xxx xxx xxx 5.2.3 Método de Jordan Consiste em aplicar operações elementares sobre as equações do sistema linear dado até que se obtenha um sistema diagonal equivalente. 5.2.4 Exemplos Exemplo 1: Resolver o sistema linear pelo método de Jordan:
  • 47. 46 x x x x x x x x x 1 2 3 1 2 3 1 2 3 2 4 0 1 2 + + = − − = − − = −      1ª etapa: Matriz completa: M = 1 1 2 4 2 1 1 0 1 1 1 1 − − − − −           2ª etapa: Diagonalização: 2 2 1 3 3 1 2E E E E E E ← − ← − → 1 1 2 4 0 3 5 8 0 2 3 5 − − − − − −           → E3 = E3 − 2 3 E2 → 1 1 2 4 0 3 5 8 0 0 1 3 1 3 − − −           → 1 1 2 2 2 3 1 3 15 E E E E E E ← + ← + → 1 0 1 3 4 3 0 3 0 3 0 0 1 3 1 3 − −           → 1 1 3 2 2 31 3 1 3 3 E E E E E E E ← − ← − ← → 1 0 0 1 0 1 0 1 0 0 1 1           3ª etapa: Cálculo da solução do sistema: Da primeira linha temos: x1 = 1 Na segunda linha temos: x2 = 1 Na terceira linha temos: x3 = 1 A solução deste sistema é x : ( 1, 1, 1)T 5.3 Fatoração LU-Crout-Cholesky-Doolitle A base do método chamado Fatoração ou Decomposição LU, está apoiada na simplicidade de resolução de sistemas triangulares. Seja o sistema linear Ax = b O processo de fatoração para resolução deste sistema consiste em decompor a matriz A dos coeficientes em um produto de dois ou mais fatores e, em seguida, resolver uma sequência de sistemas lineares que nos conduzirá a solução do sistema linear original. Tal processo geral de eliminação é conhecida como método de Crout (ou Cholesky para o caso particular de matrizes simétricas positivas definidas). A matriz A pode ser decomposta no produto A=LU, onde L é uma matriz triangular inferior e U é uma matriz triangular superior, quando a matriz for não singular (Det (A) ≠ 0). Além disso, se atribuirmos valores fixos aos elementos da diagonal, seja de L (lii = 1 no Método de Doolitle) ou em U (uii = 1 no Método de Crout), esta decomposição será única. Suponhamos que seja possível fatorar a matriz A dos coeficientes num produto de uma matriz triangular inferior com diagonal unitária L e uma matriz triangular superior U, isto é:
  • 48. 47 A = LU Nestas condições, o sistema Ax = b pode ser reescrito na forma LUx = b, o que permite o desmembramento em dois sistemas triangulares Ly = b e Ux = y Resolvendo o primeiro sistema, calculamos y que, usado no segundo sistema, fornecerá o vetor procurado x. Dessa maneira, conhecidas L e U, o sistema será resolvido com 2n2 operações (dois sistemas triangulares), o que representa um ganho substancial comparado com as 3 2 3 n operações do método da eliminação de Gauss. 5.3.1 Cálculo dos Fatores L e U Os fatores L e U podem ser obtidos através de fórmulas para os elementos lij e uij, ou então, podem ser construídos usando a idéia básica do método da Eliminação de Gauss. Veremos a seguir como obter L e U através do processo de Gauss. Dada uma matriz quadrada A de ordem n, seja Ak a matriz constituída das primeiras k linhas e colunas de A. Suponha que det(Ak) ≠ 0 para k = 1, 2, ..., (n – 1). Então, existe uma única matriz triangular inferior L = (mij), com mii = 1, 1 ≤ i ≤ n, e uma única matriz truangular superior U = (uij) tais que LU = A. Ainda mais, det(A) = u11u22...unn. Para a solução de Ax = b, pode-se decompor A segundo o Método de Crout, da seguinte maneira:                     =           100 10 1 0 00 23 1312 333231 2221 11 3 2 1 333231 232221 131211 u uu lll ll l b b b aaa aaa aaa M M M tal que A = L.U. Então, o sistema torna-se L.U.x = b. Fazendo U.x = y, resolve-se primeiro L.y = b e depois U.x =y. Para um sistema 3x3 podemos escrever:                     =           3 2 1 23 1312 333231 2221 11 3 2 1 333231 232221 131211 100 10 1 0 00 y y y u uu lll ll l b b b aaa aaa aaa M M M M M M Esta multiplicação de matrizes pode ser usada para definir os valores de lij, uij e iy em termos dos valores aij . l a11 11= l a21 21= u a l12 12 11= / l a31 31= u a l13 13 11= / 1111 /lby = l a l u22 22 21 12= − 12313232 ulal −=
  • 49. 48 2212122 /)( lclby −= l a l u l u33 33 31 13 32 23= − − 3323213133 /)( lclclby −−= Note que o cálculo de “y” pode ser feito da mesma forma que o cálculo de u. A sequência de operações é : 1). Calcular a primeira coluna de L, calcular a primeira linha de U e y1; 2). Calcular a segunda coluna de L, calcular a segunda linha de U e y2; e assim sucessivamente. Os valores de x são obtidos por substituição sucessiva a partir de y (U.x = y) 33 yx = 32322 xuyx −= 21231311 xuxuyx −−= Note que, o vetor c também pode ser obtido do sistema parcial L.y = b por substituições sucessivas. Sugere-se usar o processo "tipo escada" para armazenar L e U na mesma área de memória, o que torna o processo mais eficiente,           =           3 2 1 333231 232221 131211 3 2 1 333231 232221 131211 y y y lll ull uul b b b aaa aaa aaa M M M M M M De uma forma geral, para sistemas de ordem n: - Operações com o primeiro pivô: k = 1 li1 = ai1 i = 1,2,3,...,n u a / l1j 1j 11= j = 2,3,...,n+1 - Operações com pivô genérico: k = 2,3,...,n i k (i = k,k+1,...,n) j > k (j = k+1,...,n+1) Exemplo 1: Resolver o sistema linear a seguir usando a fatoração LU:      =+− =−+ =−+ 02 3232 22 321 321 321 xxx xxx xxx Seja A =           − − − 121 232 121 Calculando os mij e uij, usando o processo de Gauss sem estratégia de pivoteamento parcial. Para
  • 50. 49 triangular A, temos: Etapa 1: Pivô = )0( 11a = 1 Multiplicadores: m21 = )0( 11 )0( 21 a a = 1 2 = 2 m31 = )0( 11 )0( 31 a a = 1 1 = 1 Então: 133 122 11 2 EEE EEE EE −← −← ← → A(1) =           − − − 240 010 121 Uma vez que os elementos )1( 21a e )1( 31a são nulos, podemos guardar os multiplicadores nestas posições, então: A(1) =           − − − 241 012 121 Etapa 2: Pivô = )1( 22a = –1 Multiplicadores: m32 = )1( 22 )1( 32 a a = 1 4 − − = 4 Então: 233 22 11 4EEE EE EE −← ← ← → A(2) =           − − 200 010 121 A(2) =           − − 241 012 121 Os fatores L e U são: L =           141 012 001 e U =           − − 200 010 121 Para resolvermos o sistema Ax = (2, 3, 0)T , resolvemos Ly = b
  • 51. 50           141 012 001 .           3 2 1 y y y =           0 3 2 ou      =++ =+ = 04 32 2 321 21 1 yy yy y y ⇒ y1 = 2; y2 = –1; y3 = 2 y = (2, –1, 2)T e, com estes valores, calculamos x através de Ux = y           − − 200 010 121 .           3 2 1 x x x =           − 2 1 2 ou      = −=− =−+ 22 1 22 3 2 321 x x xxx ⇒ x3 = 1; x2 = 1; x1 = 1 A solução do sistema é x = (1, 1, 1)T Exercício 1: Resolver o sistema linear a seguir usando a fatoração LU:      =++ =++ =++ 323 22 142 321 321 321 4 3 xxx xxx xxx A solução do sistema é x = (–3, 5, 0)T Exercício 2: Resolver o sistema linear a seguir usando a fatoração LU: x x x x x x x x x 1 2 3 1 2 3 1 2 3 2 4 0 1 2 + + = − − = − − = −      A solução do sistema é x = (1, 1, 1)T 5.4 Métodos Iterativos (Algoritmos Iterativos) 5.4.1 Método de Gauss-Jacobi ( Algébrico ) Seja o sistema abaixo: 11 1 12 2 1 1 21 1 22 2 2 2 1 1 2 2 a x a x a x b a x a x a x b a x a x a x b n n n n n n nn n n + + + = + + + = + + + = ... ... ... ... Pode-se afirmar que o mesmo é convergente, se o sistema estiver na forma diagonalmente dominante, isto é:
  • 52. 51 11 21 31 1 22 12 32 2 1 2 1 a a a a a a a a a a a a n n nn n n n n ≥ + + + ≥ + + + ≥ + + + − ... ... ... ... ou aaaa aaaa aaaa nnnnnn n n 121 2232122 1131211 ... ... ... ... − +++≥ +++≥ +++≥ Então, isola-se em cada uma das equações ordenadamente, uma das incógnitas. 1 1 11 1 12 2 0 13 3 0 1 0 2 1 22 2 21 1 0 23 3 0 2 0 1 1 1 0 2 2 0 1 1 0 1 1 1 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ... ) ( ... ) ... ( ... ) x a b a x a x a x x a b a x a x a x x a b a x a x a x n n n n n nn n n n nn n = − − − − = − − − − = − − − − − − onde, 1 0 2 0 0( ) ( ) ( ) , ,...,x x xn são as atribuições inicial do método. Condições de Parada: Se para todo erroxx j n j n ≤− − )1()( , então x j n )( são as soluções do sistema. 5.4.1.1 Exemplos Exemplo 1: Resolver por Gauss-Jacobi, com 4 decimais com arredondamento e erro menor ou igual a 0,01 o sistema abaixo: x + 8y – z = 16 6x – y + z = 7 x + y+ 5z = 18 a) Verificação da convergência: 6x – y + z = 7 x + 8y – z = 16 x + y + 5z = 18 b) Isolamento das incógnitas: x = 6 1 ( 7 + y – z ) y = 8 1 ( 16 – x + z ) z = 5 1 ( 18 – x – y ) c) Atribuição inicial: x(0) = 0 y(0) =0 z(0) =0 d) Iterações: x(1) = 6 1 ( 7 + y(0) – z(0) ) = 6 1 ( 7 + 0 – 0 ) = 1,1667 y(1) = 8 1 ( 16 – x(0) + z(0) ) = 8 1 ( 16 - 0 + 0 ) = 2
  • 53. 52 z(1) = 5 1 ( 18 – x(0) – y(0) ) = 5 1 ( 18 – 0 – 0 ) = 3,6 x(2) = 6 1 ( 7 + 2 – 3,6 ) = 0,9 y(2) = 8 1 ( 16 – 1,1667 + 3,6 ) = 2,3042 z(2) = 5 1 ( 18 – 1,1667 – 2 ) = 2,9667 x(3) = 6 1 ( 7 + 2,3042 – 2,9667 ) = 1,0562 y(3) = 8 1 ( 16 – 0,9 + 2,9667 ) = 2,2583 z(3) = 5 1 ( 18 – 0,9 – 2,3042 ) = 2,9592 x(4) = 6 1 ( 7 + 2,2583 – 2,9592 ) = 1,0498 y(4) = 8 1 ( 16 – 1,0562 + 2,9592 ) = 2,2379 z(4) = 5 1 ( 18 – 1,0562 – 2,2583 ) = 2,9371 x(5) = 6 1 ( 7 + 2,2379 – 2,9371 ) = 1,0501 | x(5) - x(4) | = 0,0003 < erro y(5) = 8 1 ( 16 - 1,0498 + 2,9371 ) = 2,2359 | y(5) - y(4) | = 0,002 < erro z(5) = 5 1 ( 18 – 1,0498 – 2,2379 ) = 2,9425 | z(5) - z(4) | = 0,0054 < erro A solução deste sistema é: (1,0501; 2,2359; 2,9425)T Exercício 1: Dado o sistema, pede-se sua solução por Gauss-Jacobi, com 4 decimais com arredondamento e erro menor ou igual a 0,02. 10x + y + z = 12 x + 5y+ 9z = 15 2x +8y – 4z = 6 A solução deste sistema é: (0,9975; 1,0051; 0,9916)T 5.4.2 Método de Gauss-Jacobi ( Matricial ) Baseado no algoritmo anterior, o método consiste na transformação do algoritmo em um sistema de matriz. Portanto, no algoritmo: i k ii i ij j k j j i n x a b a x ( ) ( ) ( )= − − = ≠ ∑ 1 1 1 a mesma situação pode ser escrita na forma:
  • 54. 53 11 1 1 12 2 1 13 3 1 1 1 22 2 2 21 1 1 23 3 1 2 1 1 1 1 2 2 1 1 1 1 a x b a x a x a x a x b a x a x a x a x b a x a x a x k k k n n k k k k n n k nn n k n n k n k nn n k ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ... ) ( ... ) ... ( ... ) = − − − − = − − − − = − − − − − − − − − − − − − − − Sendo A a matriz dos coeficientes, onde A = D + I + S, no qual D é a matriz diagonal, I a matriz inferior e S a matriz superior, a expressão anterior poderá ser reescrita na forma: D X B S I X k k( ) ( ) ( )= − + −1 Multiplicando ambos os termos pela matriz inversa da diagonal, BDXISDX XISDBDXDD kk kk 1)1(1)( )1(11)(1 )( )( −−− −−−− +−=∴ ∴−= + + EXJX kk += − )1()( onde J D S I E D B = − = − − +1 1 ( ) 5.4.2.1 Exemplos Exemplo 1: Seja o sistema abaixo: x + y – 5z = -6 4x – y + z = 19 x + 3y – z = 14 obter a sua solução por Gauss-Jacobi Matricial com 3 decimais com arredondamento e erro menor ou igual a 0,05. Admitir solução inicial nula. a) Verificação da convergência: 4x – y + z = 19 x + 3y – z = 14 x + y – 5z = -6 b) Obtenção do Algoritmo:           = 011 001 000 I ,           − − = 000 100 110 S ,           − = 500 030 004 D ,           − = 6 14 19 B ,             − = − 5 100 0 3 10 00 4 1 1 D Então,
  • 55. 54             − − =           − − •             − − = 0 5 1 5 1 3 10 3 1 4 1 4 10 011 101 110 5 100 0 3 10 00 4 1 J             =           − •             − = 5 6 3 14 4 19 6 14 19 5 100 0 3 10 00 4 1 E Então,             +•             − − = − 5 6 3 14 4 19 0 5 1 5 1 3 10 3 1 4 1 4 10 )1()( XX kk c) Atribuição inicial:           = 0 0 0 )0( X d) Iterações:           =∴           =∴           =∴           =∴           = 002,3 995,3 031,5 934,2 057,4 951,4 020,3 822,3 850,4 083,3 483,3 617,5 200,1 667,4 750,4 )5()4()3()2()1( XXXXX ∴ =           ( ) , , , 6 4 998 3 991 3 005 X ( ) ( ) , , , 6 5 0 033 0 004 0 003 X X erro− =           < A solução deste sistema é: (4,998; 3,991; 3,005)T Exercício 1: Dado o sistema abaixo: 5x – y = 13 2x + 4y = 14 obter a solução por Gaus-Jacobi Matricial com 4 decimais com arredondamento e erro menor ou igual a 0,005. Admitir solução inicial nula. A solução deste sistema é: (3,0004; 1,9985)T 5.4.3 Método de Gauss-Seidel ( Algébrico ) Derivado do método de Gauss-Jacobi, este método utiliza a cada iteração os valores já prontos na própria iteração, para tentar assegurar convergência mais rápida, ou seja,
  • 56. 55 )...( 1 ... )...( 1 )...( 1 )...( 1 )( 11 )( 33 )( 22 )( 11 )( )1( 3 )1( 434 )( 232 )( 1313 33 )( 3 )1( 2 )1( 424 )1( 323 )( 1212 22 )( 2 )1( 1 )1( 414 )1( 313 )1( 2121 11 )( 1 xaxaxaxab a x xaxaxaxab a x xaxaxaxab a x xaxaxaxab a x k nnn k n k n k nn nn k n k nn kkkk k nn kkkk k nn kkkk −− −− −−− −−−− −−−−−= −−−−−= −−−−−= −−−−−= Portanto, o algoritmo do método pode ser expresso por: i k ii i ij j j j i n x a b a x k i j k i j ( ) ( ( ) ( ) )= − → > − → <= ≠ ∑ 1 11 5.4.3.1 Exemplos Exemplo 1: Resolver por Gauss-Seidel, com 4 decimais com arredondamento e erro menor ou igual a 0,005 o sistema abaixo. x + 8y – z = 16 6x – y + z = 7 x + y+ 5z = 18 a) Verificação da convergência: 6x – y + z = 7 x + 8y – z = 16 x + y + 5z = 18 b) Isolamento das incógnitas: x = 6 1 ( 7 + y – z ) y = 8 1 ( 16 – x + z ) z = 5 1 ( 18 – x – y ) c) Atribuição inicial: x(0) = 0 y(0) =0 z(0) =0 d) Iterações: x(1) = 6 1 ( 7 + 0 – 0 ) = 1,1667 y(1) = 8 1 ( 16 – 1,1667 + 0 ) = 1,8542 z(1) = 5 1 ( 18 – 1,1667 – 1,8542 ) = 2,9958 x(2) = 6 1 ( 7 + 1,8542 – 2,9958 ) = 0,9764
  • 57. 56 y(2) = 8 1 ( 16 - 0,9764 + 2,9958 ) = 2,2524 z(2) = 5 1 ( 18 – 0,9764 – 2,2524 ) =2,9542 x(3) = 6 1 ( 7 + 2,2524 – 2,9542 ) = 1,0497 y(3) = 8 1 ( 16 - 1,0497 + 2,9542 ) = 2,2381 z(3) = 5 1 ( 18 – 1,0497 – 2,2381 ) = 2,9424 x(4) = 6 1 ( 7 + 2,2381 – 2,9424 ) = 1,0493 | x(4) - x(3) | = 0,0004 < erro y(4) = 8 1 ( 16 - 1,0493 + 2,9424 ) = 2,2366 | y(4) - y(3) | = 0,0015 < erro z(4) = 5 1 ( 18 – 1,0493 – 2,2366 ) = 2,9428 | z(4) - z(3) | = 0,0004 < erro A solução deste sistema é: (1,0493; 2,2366; 2,9428)T Exercício 1: Resolver por Gauss-Seidel, com 4 decimais com arredondamento e erro menor ou igual a 0,01 o sistema abaixo. 7x + y – z = 13 x + 8y + z = 30 2x – y + 5z = 21 A solução deste sistema é: (2,0001; 3,0003; 4,0000)T 5.4.4 Método de Gauss-Seidel ( Matricial ) Seja o sistema abaixo, 11 1 1 12 2 1 13 3 1 1 1 22 2 2 21 1 23 3 1 2 1 1 1 2 2 1 1 a x b a x a x a x a x b a x a x a x a x b a x a x a x k k k n n k k k k n n k nn n k n n k n k nn n k ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ... ... ... ... = − − − − = − − − − = − − − − − − − − − − − que pode ser representado na forma matricial: D X B I X S X D I X B S X k k k k k( ) ( ) ( ) ( ) ( ) ( )= − − ∴ + = − − −1 1 Multiplicando ambos os membros pela inversa de ( D + I ), temos: XSIDBIDXIDID kk )1(11)(1 )()()()( −−−− +−+=++ BIDXSIDX kk 1)1(1)( )()( −−− +++−=
  • 58. 57 FXGX kk += − )1()( onde, G D I S F D I B = − + = + − − ( ) ( ) 1 1 5.4.4.1 Exemplos Exemplo 1: Dado o sistema abaixo, x + 6y = -21 5x – y = 19 obter suas soluções por Gauss-Seidel Matricial com 3 decimais com arredondamento e erro inferior ou igual a 0,005. Admitir nula a solução inicial. a) Verificação da convergência: 5x – y = 19 x + 6y = -21 b) Obtenção do Algoritmo:       = 60 05 D ,       = 01 00 I ,       − = 00 10 S ,       − = 21 19 B Então,         − =      − •         − =         − =      − •         − − = 15 62 5 19 21 19 6 1 30 1 0 5 1 30 10 5 10 00 10 6 1 30 1 0 5 1 F G Logo,         − +•         − = − 15 62 5 19 30 10 5 10 )1()( XX kk c) Atribuição inicial:       = 0 0)0( X d) Iterações:       − =∴      − =∴      − =∴      − = 000,4 000,3 000,4 001,3 996,3 973,2 133,4 800,3 )4()3()2()1( XXXX ( ) ( ) , , 4 3 0 001 0 000X X erro− =       <
  • 59. 58 A solução deste sistema é: (3; -4)T Exercício 1: Dado o sistema abaixo: 5x – y = 13 2x + 4y = 14 obter a solução por Gaus-Seidel Matricial com 4 decimais com arredondamento e erro menor ou igual a 0,005. Admitir solução inicial nula. A solução aproximada deste sistema é: (3,0004; 1,9998)T 5.4.5 Segunda Abordagem da Fórmula Matricial do Método Gauss-Seidel Decompõe-se a matriz de coeficientes A em: UDLA ++= Onde: L – Matriz Triangular Inferior D – Matriz Diagonal U – Matriz Triangular Superior                 =                 =                 = − − 0000 000 00 0 000 000 000 000 0 00 000 0000 1 223 11312 33 22 11 121 3231 21 L OMMM ML L L L MOMMM L L L L MOMMM L L L nn n n nnnnnn a aa aaa U d d d d D aaa aa a L )(1)1(11)1( 111 )( )( kkk xUDxLDbDx xUDxLDbDx xULbxD bxUxDxL bxUDL −+−−+ −−− −−= −−= +−= =++ =++
  • 60. 59 5.4.5.1 Interpretação Geométrica do Caso 22× Considere o Sistema Linear: 33 3 21 21 −=− =+ xx xx O esquema iterativo utilizando o Método de Gauss-Seidel é dado por: )33( 3 1 )3( 1 1 )1( 1 )1( 2 )( 2 )1( 1 ++ + += −= kk kk xx xx Para k=0 e T x ]00[ )0( = : 2 3 )1( 2 )1( 1 = = x x Para k=1 e T x ]23[ )1( = : 3 4 1 )2( 2 )2( 1 = = x x Para k=2 e T x ] 3 41[ )2( = : 9 14 3 5 )3( 2 )3( 1 = = x x A solução exata é dada por: T x ] 2 3 2 3[= . Esse processo iterativo até à convergência pode ser interpretado geométricamente num grafico com a componente 1x na abscissa e a componente 2x na ordenada. -5 -4 -3 -2 -1 0 1 2 3 4 5 -2 -1 0 1 2 3 4 5 6 7 8 x2 x1(0,0) (0,3) (3,2)(1,2) (1,4/3) (4/3,5/3) x1+x2=3 x1-3x2=-3
  • 61. 60 Observação 1: Verifica-se pelo gráfico acima que a seqüência )(o x , )1( x , )2( x , ......, )(k x está convergindo para a solução exata T x ] 2 3 2 3[= . Observação 2: A sequência gerado pelo Método de Gauss-Seidel depende fortemente da disposição das equações. Esta observação pode ser melhor entendida modificando a ordem das equações do exemplo anterior. Considere o mesmo Sistema Linear anterior, porém modificando a ordem das equações: 3 33 21 21 =+ −=− xx xx O esquema iterativo utilizando o Método de Gauss-Seidel é dado por: )3( )33( )1( 1 )1( 2 )( 2 )1( 1 ++ + −= +−= kk kk xx xx Para k=0 e T x ]00[ )0( = : 6 3 )1( 2 )1( 1 −= −= x x Para k=1 e T x ]63[ )1( −−= : 12 15 )1( 2 )1( 1 −= = x x 5.4.5.2 Estudo da Convergência do Método de Gauss-Seidel Existem dois critérios de suficiência para a convergência do Método de Gauss-Seidel. O critério de linhas e o critério de Sassenfeld. O critério de linhas é o mesmo da Método de Gauss-Jacobi. -5 -4 -3 -2 -1 0 1 2 3 4 5 -2 -1 0 1 2 3 4 5 6 7 8 x (0,0) (0,-3) (-3,6) ......(6,15) x2 x1 x1+x2=3 x1-3x2= -3
  • 62. 61 Critério de Linhas Seja o sistema linear bxA = , com A dimensão nn× e seja: kk n kj j kj k a a           = ∑ ≠ =1 α Se 1max ,1 <= = k nk αα , então o método Gauss-Seidel gera uma seqüência { })(k x convergente para a solução do sistema dado, independentemente da escolha da aproximação inicial )0( x . A matriz que satisfizer o critério de linhas é chamada de diagonal dominante estrita. 5.4.5.3 Critério de Sassenfeld Seja o sistema linear bxA = , com A dimensão nn× e seja: 11 1141312 1 ....... a aaaa n++++ =β e para nj ....,.........3,2= : jj jjjjjjjj j a aaaaa 11112211 ..................... ++++++ = +−− βββ β Define-se j nj ββ ,1 max = = . Se 1<β , então o Método de Gauss-Seidel gera uma sequência convergente para a solução do sistema, qualquer que seja o vetor inicial. Além disso, quanto menor for o valor de β mais rápida é a convergência. Exemplo: Verificar as condições de convergência do Método de Gauss-Seidel no sistema abaixo: 33 1 332 31 32 321 =+ =+− =++ xx xx xxx a) Critério de Linhas 12 2 31 1 >= + =α não satisfaz. b) Critério de Sassenfeld
  • 63. 62 12 2 31 1 >= + =β não satisfaz. Como a convergência do Método de Gauss-Seidel é fortemente dependente da posição das equações, pode-se trocar a posição das equações. Tentativa 1: Troca-se a primeira equação pela terceira equação. 332 1 33 321 32 31 =++ =+− =+ xxx xx xx a) Critério de Linhas 13 1 30 1 >= + =α não satisfaz. b) Critério de Sassenfeld 13 1 30 1 >= + =β não satisfaz. Tentativa 2: Troca-se a primeira coluna pela terceira coluna na equação anterior. 323 10 303 123 123 123 =++ =+− =++ xxx xxx xxx a) Critério de Linhas 133.0 3 1 1 <==α satisfaz. 1 1 1 2 ==α não satisfaz. b) Critério de Sassenfeld 133.0 3 1 1 <==β satisfaz. 133.0 1 3 1 1 2 <= ⋅ =β satisfaz. 1 6 4 2 3 1 1 3 1 3 3 <= ⋅+⋅ =β satisfaz. Com a última modificação o sistema passa a ser convergente para qualquer vetor inicial. Modificações desse tipo são puramente acadêmicas e são difíceis de serem realizadas em sistemas reais. Principalmente pelas dimensões dos problemas, resultando num grande esforço computacional, e das incertezas quanto a sua eficiência. Exemplo : Verifique a convergência do sistema abaixo pelo critério de linhas e Sassenfeld.
  • 64. 63 4 32 21 21 =+ =+ xx xx Critério de Linhas 1 2 1 2 1 = = α α Não satisfaz Critério de Sassenfeld 2 1 1 2 1 1 2 1 2 1 = × = = β β Satisfaz Exemplo : Verifique a convergência do sistema abaixo pelo critério de linhas e Sassenfeld. 5,22,03,01,0 0,12,02,01,0 6,21,02,02,0 2,01,01,05,0 4321 4321 4321 4321 −=+++ =++−− −=−−+ =+−+ xxxx xxxx xxxx xxxx 5.4.6 Método da Sobrerelaxação Sucessiva )ˆ( )()1()()1( k i k i k i k i xxwxx −+= ++ )( 1 ˆ )()1()1( ∑∑ >< ++ −−= ij k jij ij k jiji ii k i xaxab a x 21 << w - Utilizado para aumentar a velocidade de convergência. 10 << w - Utilizado em sistemas com dificuldades de convergência pelo Método de gauss Seidel.
  • 65. 64 5.4.7 Condições Necessária e Suficiente para Convergência do Método de Gauss-Jacobi e Gauss-Seidel Teorema Seja n b ℜ∈ e n NMA ℜ∈−= )( é não singular. Se M é não-singular e o raio espectral de NM 1− satisfaça 1)( 1 <− NMρ , então o processo iterativo definido por bxNxM kk += + )()1( converge para bAx 1− = para qualquer vetor )0( x . { })(:max)( 11 NMNM −− ∈= λλλρ Para o Método de Gauss-Jacobi: )( )( )( )( )()1( ULN DM xULbxD xULbxD bxUxDxL bxUDL kk +−= = +−= +−= =++ =++ + Para o Método de Gauss-Seildel: UN DLM xUbxDL xUbxDxL bxUxDxL bxUDL kk −= += −=+ −=+ =++ =++ + )( )( )( )()1( 5.4.7.1 Comparação dos Métodos de Solução de Sistemas Lineares bxA = Métodos Diretos: 1. Processos finitos (convergência para qualquer sistema não-singular); 2. Apresentam problemas com erros de arredondamento; 3. Utiliza-se técnicas de pivoteamento para amenizar os problemas de arredondamento; 4. O processo de triangularização destrói a esparsidade da matriz de coeficientes. Técnicas de Esparsidade são utilizadas para amenizar o enchimento da matriz. 5. Para matrizes cheias a solução requer 3 n operações sem considerar o pivoteamento. Métodos Iterativos:
  • 66. 65 1. Provavelmente mais eficientes para sistemas de grande porte, principalmente com a utilização de computação de alto desempenho (vetorial e paralela); 2. Tem convergência assegurada apenas sob certas condições; 3. Conserva a esparsidade da matriz de coeficientes; 4. Os métodos de G-J e G-s requerem 2 2n operações por iterações; 5. Poucas vantagens adicionais são conseguidas em soluções para vetores independentes adicionais com a matriz de coeficientes mantida constante, como no caso da fatoração LU; 6. Carregam menos erros de arredondamento no processo, tendo em vista que a convergência uma vez assegurada independe da aproximação inicial. Somente os erros da última iteração afetam a solução.
  • 67. 66 6 Interpolação 6.1 Introdução A interpolação é outra das técnicas bem antigas e básicas do cálculo numérico. Muitas funções são conhecidas apenas em um conjunto finito e discreto de pontos de um intervalo [a, b], como, por exemplo, a tabela abaixo que relaciona calor específico da água e temperatura: Xi x0 x1 x2 x3 x4 x5 x6 x7 Temperatura (°C) 20 25 30 35 40 45 50 55 Calor específico 0.99907 0.99852 0.99826 0.99818 0.99828 0.99849 0.99878 0.99919 Tabela 1 - Calor específico da água. A partir desses dados suponhamos que se queira calcular: a) o calor específico da água a 32.5° C b) a temperatura para a qual o calor específico é 0.99837. A interpolação tem o objetivo de nos ajudar na resolução deste tipo de problema, ou em casos em que possuímos um conjunto de valores obtidos através de alguns experimentos. Interpolar uma função f(x) consiste em aproximar essa função por uma outra função g(x), escolhida entre uma classe de funções definida a priori e que satisfaça algumas propriedades. A função g(x) é então usada em substituição à função f(x). A necessidade de se efetuar esta substituição surge em várias situações, como por exemplo: a) quando são conhecidos somente os valores numéricos da função por um conjunto de pontos (não dispondo de sua forma analítica) e é necessário calcular o valor da função em um ponto não tabelado (como é o caso do exemplo anterior). b) quando a função em estudo tem uma expressão tal que operações como a diferenciação e a integração são difíceis (ou mesmo impossíveis) de serem realizadas. Neste caso, podemos procurar uma outra função que seja uma aproximação da função dada e cujo manuseio seja bem mais simples. As funções que substituem as funções dadas podem ser de tipos variados, tais como: polinomiais, trigonométricas, exponenciais e logarítmicas. Nós iremos considerar apenas o estudo das funções polinomiais. 6.1.1 Conceito de Interpolação Seja a função y = f(x), dada pela tabela 1. Deseja-se determinar f x( ), sendo: a) x ∈ (x0, x7) e x ≠ xi, i = 0, 1, 2, ..., 7 b) x ∉ (x0, x7) Para resolver (a) tem-se que fazer uma interpolação. E, sendo assim, determina-se o polinômio interpolador, que é uma aproximação da função tabelada. Por outro lado, para resolver (b), deve-se realizar uma extrapolação. Consideremos (n + 1) pontos distintos: x0, x1, x2, ..., xn, chamados nós da interpolação, e os valores de f(x) nesses pontos: f(x0), f(x1), f(x2), ..., f(xn). A forma de interpolação de f(x) que veremos a seguir consiste em se obter uma determinada
  • 68. 67 função g(x) tal que: g(x0) = f(x0) g(x1) = f(x1) g(x2) = f(x2) M M g(xn) = f(xn) Graficamente temos: y x0 x0 x1 x2 x3 x4 x5 g(x) f(x) (x0 , f(x0 )) (x1 , f(x1 )) (x2 , f(x2 )) (x3, f(x3)) (x4, f(x4)) (x5, f(x5)) Interpretação geométrica para n = 5 6.2 Interpolação Linear 6.2.1 Obtenção da Fórmula Dados dois pontos distintos de uma função y = f(x) : (x0, y0) e (x1, y1), deseja-se calcular o valor de y para um determinado valor de x entre x0 e x1, usando a interpolação polinomial. O polinômio interpolador é uma unidade menor que o número de pontos conhecidos. Assim sendo, o polinômio interpolador nesse caso terá grau 1, isto é, P1(x) = a1x + a0 Para determiná-lo, os coeficientes a0 e a1 devem ser calculados de forma que tenha: P1(x0) = f(x0) = y0 P1(x1) = f(x1) = y1 ou seja, basta resolver o sistema linear abaixo: a x a y a x a y 1 0 0 0 1 1 0 1 + = + =    onde a1 e a0 são as incógnitas e A x x=       0 1 1 1 é a matriz dos coeficientes. O determinante da matriz A é diferente de zero, sempre que x0 ≠ x1, logo para pontos distintos o sistema tem solução única. O polinômio interpolador P1(x) = a1x + a0 tem como imagem geométrica uma reta, portanto estaremos aproximando a função f(x) por uma reta que passa pelos dois pontos conhecidos (x0, y0) e (x1,
  • 69. 68 y1). A figura abaixo mostra, geometricamente, os dois pontos, (x0, y0) e (x1, y1), e a reta que passa por eles. p1 (x) x0 x1 y0 y1 0 6.2.2 Exemplos Exemplo 1: Seja a função y = f(x) definida pelos pontos (0.00; 1.35) e (1.00; 2.94). Determinar aproximadamente o valor de f(0.73). P1(x) = a1x + a0 é o polinômio interpolador de 1° grau que passa pelos pontos dados. Então teremos: a) Pontos utilizados: (0.00;1.35) e (1.00; 2.94) b) Cálculo dos coeficientes: P1(0) = a1 • 0 + a0 = 1.35 → a0 = 1.35 P1(1) = a1 • 1 + a0 = 2.94 → a1 = 1.59 c) Polinômio interpolador: P1(x) = 1.59x + 1.35 (equação da reta que passa pelos pontos dados) d) Resposta: P1(0.73) = 1.59 • 0.73 + 1.35 P1(0.73) = 2.51 O resultado obtido acima está afetado por dois tipos de erros: a) Erro de arredondamento (EA) - é cometido durante a execução das operações e no caso de um resultado ser arredondado. b) Erro de truncamento (ET) - é cometido quando a fórmula de interpolação a ser utilizada é escolhida, pois a aproximação de uma função conhecida apenas através de dois pontos dados é feita por um polinômio de 1° grau. Exercício 1: Dada a função f(x) = 10x4 + 2x + 1 com os valores de f(0.1) e f(0.2) determinar P1(0.15) e o erro absoluto cometido. Polinômio interpolador: P1(x) = 2.15x + 0.986 P1(0.15) = 1.3085 EA = −0.0034375 Exercício 2: Calcular o calor específico aproximado da água a 32,5° C, usando os valores da tabela 1. Usando as temperaturas 30° C e 35° C.
  • 70. 69 Polinômio interpolador: P1(x) = −0.000016x + 0.99874 P1(32.5) = 0.99822 6.3 Interpolação Quadrática 6.3.1 Obtenção da Fórmula Se conhecermos três pontos distintos de uma função, então o polinômio interpolador será: P2(x) = a2x2 + a1x + a0 O polinômio P2(x) é conhecido como função quadrática cuja imagem geométrica é uma parábola, portanto, estaremos aproximando a função f(x) por uma parábola que passa pelos três pontos conhecidos (x0, y0), (x1, y1) e (x2, y2). Para determinarmos os valores de a2, a1 e a0 é necessário resolver o sistema: a2 0 2 x + a1x0 + a0 = y0 a2 1 2 x + a1x1 + a0 = y1 a2 2 2 x + a1x2 + a0 = y2 onde a2, a1 e a0 são as incógnitas e os pontos (x0, y0), (x1, y1) e (x2, y2) são conhecidos. A matriz dos coeficientes é: V = 0 2 0 1 2 1 2 2 2 1 1 1 x x x x x x           Como os pontos são distintos, então o sistema terá solução única. 6.3.2 Exemplos Exemplo 1: Utilizando os valores da função seno, dados pela tabela abaixo, determinar a função quadrática que se aproxima de f(x) = 2 2 1 sen x x + , trabalhando com três casas decimais. x sen(x) f(x) 0 0 0.000 π 6 1 2 0.328 π 4 2 2 0.560 a) Pontos utilizados: ( 0; 0 ) ( π/6; 0.328 ) ( π/4; 0.560 ) b) Cálculo dos coeficientes: P2(x) = a2x2 + a1x + a0 ( ) ( ) ( ) ( )     =++= =++= =++= •• •• •• 560.0)( 328.0)( 000)0( 0 4 1 4 2 2 4 2 0 6 1 6 2 2 6 2 01 2 22 aaaP aaaP aaaP πππ πππ
  • 71. 70 Da primeira linha temos que a0 = 0. Logo, o sistema passa a ser:    =+ =+ 560.0785.0617.0 328.0524.0274.0 12 12 aa aa Resolvendo o sistema acima encontraremos a solução aproximada: a2 = 0.333 a1 = 0.452 a0 = 0 c) Polinômio interpolador: P2(x) = 0.333 2 x + 0.452x Exemplo 2: Determinar o valor de f(0.2) e o erro absoluto ocasionado pela aplicação da interpolação quadrática, no cálculo deste valor, usando os valores tabelados da função f(x) = x2 − 2x + 1. Utilizar duas casas decimais. x f(x) 0.5 0.25 0.3 0.49 0.1 0.81 a) Pontos utilizados: ( 0.5; 0.25 ) ( 0.3; 0.49 ) ( 0.1; 0.81 ) b) Cálculo dos coeficientes: P2(x) = a2x2 + a1x + a0      =++ =++ =++ 81.01.001.0 49.03.009.0 25.05.025.0 012 012 012 aaa aaa aaa Resolvendo o sistema pelo método de Gauss, vem: a2 = 1.00 a1 = −2.00 a0 = 1.00 c) Polinômio interpolador: P2(x) = x2 − 2x + 1 d) Resposta: P2(0.2) = (0.2)2 − 2.(0.2) + 1 P2(0.2) = 0.64 Cálculo do erro absoluto: EA = f(0.2) − P2(0.2) EA = 0.64 − 0.64 EA = 0 Podemos observar que o polinômio interpolador é igual a função dada. Isto ocorre porque a função dada é polinomial de 2° grau e, a partir de três pontos da função, consegue-se determiná-la sem erro. Contudo, poderá existir o erro de arredondamento.
  • 72. 71 Exercício 1: Usando três pontos da Tabela 1, determinar o calor específico aproximado da água a 31° C Pontos utilizados: (20; 0.99907), (30; 0.99826) e (40; 0.99828) Polinômio interpolador: P2(x) = 0.00000415x2 − 0.0002885x + 1.00318 P2(31) = 0.99822 6.4 Interpolação de Lagrange As interpolações vistas anteriormente são casos particulares da interpolação de Lagrange. Vamos estudar agora o polinômio interpolador de grau menor ou igual a n, sendo dados n + 1 pontos distintos. Teorema: Sejam (xi, yi), i = 0, 1, 2, ..., n, n + 1 pontos distintos, isto é, xi ≠ xj para i ≠ j. Existe um único polinômio P(x) de grau menor ou igual a n, tal que P(xi) = yi, para todo i. O polinômio P(x) pode ser escrito na forma: Pn(x) = a0 + a1x + a2x2 + ... + anxn ou Pn(x) = i i i n a x= ∑ 0 P(x) é, no máximo, de grau n, se an ≠ 0 e, para determiná-lo, deve-se conhecer os valores de a0, a1, ..., an. Como Pn(x) contém os pontos (xi, yi), i = 0, 1, ..., n, pode-se escrever que Pn(xi) = yi. Com isso temos: 0 1 0 2 0 2 0 0 0 1 1 2 1 2 1 1 0 1 2 2 a a x a x a x y a a x a x a x y a a x a x a x y n n n n n n n n n n + + + + = + + + + = + + + + =        ... ... ................................................ ... Resolvendo o sistema acima, determina-se o polinômio Pn(x). Para provar que tal polinômio é único, basta que se mostre que o determinante da matriz A, dos coeficientes das incógnitas do sistema, é diferente de zero. A matriz A é: A = 1 1 1 0 0 2 0 1 1 2 1 2 x x x x x x x x x n n n n n n ... ... ............................ ...               Mas o determinante da matriz A é conhecido como determinante das potências ou de Vandermonde e, da Álgebra Linear, sabe-se que seu valor é dado por: det(A) = ( )i j i j x x− > ∏ . Como xi ≠ xj para i ≠ j, vem que det(A) ≠ 0. Logo, P(x) é único. Exemplo: Sejam os valores: x0 = 1, x1 = 0, x2 = 3 e x3 = 2. Determinar: ( )i j i j x x− > ∏ . ( )i j i j x x− > ∏ = (x1 − x0) (x2 − x0) (x2 − x1) (x3 − x0) (x3 − x1) (x3 − x2) =
  • 73. 72 = (−1)(2)(3)(1)(2)(−1) = 12 Este valor é igual ao determinante da matriz: 1 1 1 1 1 0 0 0 1 3 9 27 1 2 4 8             6.4.1 Obtenção da Fórmula Será mostrado, agora, a dedução da fórmula de interpolação de Lagrange. Sejam x0, x1, x2, ..., xn, (n + 1) pontos distintos e yi = f(xi), i = 0, 1, ..., n. Seja Pn(x) o polinômio de grau ≤ n que interpola f em x0, ..., xn. Podemos representar Pn(x) na forma Pn(x) = y0L0(x) + y1L1(x) + ... + ynLn(x), onde os polinômios Lk(x) são de grau n. Para cada i, queremos que a condição Pn(xi) = yi seja satisfeita, ou seja: Pn(xi) = y0L0(xi) + y1L1(xi) + ... + ynLn(xi) = yi A forma mais simples de se satisfazer esta condição é impor: Lk(xi) = 0 1 se k i se k i ≠ =    e, para isso, definimos Lk(x) por Lk = ( )( )...( )( )...( ) ( )( )...( )( )...( ) x x x x x x x x x x x x x x x x x x x x k k n k k k k k k k n − − − − − − − − − − − + − + 0 1 1 1 0 1 1 1 Como o numerador de Lk(x) é um produto de n fatores da forma: (x − xi), i = 0, 1, ..., n, i ≠ k, então Lk(x) é um polinômio de grau n e, assim, Pn(x) é um polinômio de grau menor ou igual a n. Além disso, para x = xi, i = 0, ..., n temos: Pn(xi) = k k i k n y L x( ) = ∑ 0 = yiLi(xi) = yi Então, a interpolação de Lagrange para o polinômio interpolador é: Pn(x) = k k k n y L x( ) = ∑ 0 onde Lk(x) = ( ) ( ) x x x x j k jj j k n − −= ≠ ∏0
  • 74. 73 Pn(x) = k j k jj j k n k n y x x x x • − −          = ≠ = ∏∑ ( ) ( )00 , é a fórmula da interpolação lagrangeana. 6.4.2 Exemplos: Exemplo 1: No caso da interpolação linear, visto anteriormente, temos dois pontos distintos: (x0, f(x0)) e (x1, f(x1)) com n igual a 1. a) Pontos utilizados: (0.00; 1.35) e (1.00; 2.94) b) Cálculo dos coeficientes: P1(x) = y0L0(x) + y1L1(x), onde L0(x) = ( ) ( ) x x x x − − 1 0 1 L1(x) = ( ) ( ) x x x x − − 0 1 0 Assim, P1(x) = y0 ( ) ( ) x x x x − − 1 0 1 + y1 ( ) ( ) x x x x − − 0 1 0 que é exatamente a equação da reta que passa por (x0, f(x0)) e (x1, f(x1)). c) Polinômio interpolador: P1(x) = 1.35 ( ) ( ) x − − 1 0 1 + 2.94 ( ) ( ) x − − 0 1 0 = −1.35x + 1.35 + 2.94x = 1.59x + 1.35 que é a mesma expressão obtida no exemplo 1 de interpolação linear. Exercício 1: Determinar o polinômio de interpolação de Lagrange para a função conhecida pelos pontos tabelados abaixo e o resultado em P(0.5): i xi yi 0 0 0 1 1 1 2 2 4 Resposta: P2(0.5) = (0.5)2 = 0.25 Exercício 2: Determinar o polinômio interpolador de Lagrange para a função conhecida pelos pontos da tabela abaixo: i xi yi 0 −1 4 1 0 1 2 2 1 3 3 16 Resposta: P3(x) = x3 − 4x + 1
  • 75. 74 6.5 Interpolação Parabólica Progressiva Na interpolação parabólica progressiva precisamos de n + 1 pontos, onde n é o grau do polinômio desejado. Em seguida, tomamos os pontos mais próximos, do ponto que queremos, na hora de montar a tabela. Polinômio de grau 0: G0 →         CTE grauPolinômio 0 P0(x) = a0 Polinômio de grau 1: G1 →         CTE grauPolinômio 0 +           0 1 xporpassando grauPolinômio P1(x) = a0 + a1.(x − x0) Polinômio de grau 2: G2 →         CTE grauPolinômio 0 +           0 1 xporpassando grauPolinômio +           10 2 xporexporpassando grauPolinômio P2(x) = a0 + a1.(x − x0) + a2.(x − x0).(x − x1) M Polinômio de grau n: Pn(x) = a0 + a1.(x − x0) + a2.(x − x0).(x − x1) + ... + an.(x − x0).(x − x1).(x − x2) ... (x − xn-1) Impondo que Pn(x) passe por todos os n + 1 pontos da tabela, temos que: Pn(x0) = f(x0) Pn(x1) = f(x1) Pn(x2) = f(x2) M Pn(xn) = f(xn) Validade: ))( ( 00000 xfaxPxx ==∴= xx xPxf a xx axf axfxxaaxPxx 01 101 1 01 01 110110111 )()) ))()( (( ( − − =∴ − − =∴=−+=∴=
  • 76. 75 ))(( )() )))(()()( 1202 212 22120220210222 ( ( xxxx xPxf axfxxxxaxxaaxPxx −− − =∴=−−+−+=∴= … ))...(( )() )))...((...)()( 10 1 10010 ( ( xxxx xPxf a xfxxxxaxxaaxPxx nnn nnn n nnnnnnnnn − − − −− − = ∴=−−++−+=∴= Exemplo 1: Dados os pares abaixo, determinar a expressão analítica destes mesmos: xi −5 −3 1 2 f(xi) −8 −4 4 6 1ª Hipótese: x x P x= ∴ = −0 0 8( ) 2ª Hipótese: x x a f x P x x x P x x x= ∴ = − − = − + − + = ∴ = − + + = +1 1 1 0 1 1 0 1 4 8 3 5 2 8 2 5 2 2 ( ) ( ) ( ) ( ) 3ª Hipótese: x x a f x P x x x x x P x x= ∴ = − − − = − + + = ∴ = +2 2 2 1 2 2 0 2 1 2 4 4 1 5 1 3 0 2 2 ( ) ( ) ( )( ) ( )( ) ( ) 4ª Hipótese: x x a f x P x x x x x x x P x x= ∴ = − − − − = − + + − = ∴ = +3 3 3 2 3 3 0 3 1 3 2 3 6 6 2 5 2 3 2 1 0 2 2 ( ) ( ) ( )( )( ) ( )( )( ) ( ) Logo, a expressão é : P1(x) = 2x + 2 6.6 Interpolação de Newton com Diferenças Divididas 6.6.1 Diferenças Divididas Seja f(x) uma função tabelada em n + 1 pontos distintos x0, x1, x2, ... xn. Definimos o operador diferenças divididas por: f[x0] = f(x0) f[x0,x1] = 01 01 ][][ xx xfxf − − = )( )()( 01 01 xx xfxf − − f[x0,x1,x2] = 02 1021 ],[],[ xx xxfxxf − − M f[x0,x1,x2, ... xn] = 0 11021 ]...,[]...,[ xx xxxfxxxf n nn − − −
  • 77. 76 Dizemos que f[x0,x1,x2,...xk] é a diferença dividida de ordem k da função f(x) sobre os k + 1 pontos. Conhecidos os valores que f(x) assume nos pontos distintos x0, x1, x2, ... xn, podemos construir a tabela: xi Ordem 0 Ordem 1 Ordem 2 .... Ordem n x0 f[x0] f[x0,x1] f[x0,x1,x2] f[x0,x1,x2 ... xn] x1 f[x1] f[x1,x2] f[x1,x2,x3] − x2 f[x2] f[x2,x3] f[x2,x3,x4] − ... ... ... ... ... xn-2 f[xn-2] f[xn-2,xn-1] f[xn-2,xn-1,xn] − xn-1 f[xn-1] f[xn-1,xn] − − xn f[xn] − − − 6.6.2 Propriedade do Operador Diferenças Divididas Pode-se provar que as diferenças divididas satisfazem a propriedade de ser simétrico nos argumentos. Exemplo: f[x0,x1] = 01 01 ][][ xx xfxf − − = 10 10 ][][ xx xfxf − − = f[x1,x0] Pode-se provar que cada coeficiente an do polinômio interpolador de Newton corresponde ao operador de grau n de diferenças divididas: f[x0] = a0 f[x0,x1] = a1 f[x0,x1,x2] = a2 M f[x0,x1,x2,...,xn] = an Pn(x) = a0 + a1.(x − x0) + a2.(x − x0).(x − x1) + ... + an.(x − x0).(x − x1).(x − x2) ... (x − xn-1) Pn(x) = f[x0] + f[x0,x1] . (x − x0) + f[x0,x1,x2] . (x − x0) . (x − x1) + ... + f[x0,x1,x2, ... xn] . (x − x0) . (x − x1) . (x − x2) ... (x − xn-1) 6.6.3 Exemplos Exemplo 1: Obter f(0.5) usando um polinômio interpolador de Newton do segundo grau (3 pontos). Considere a seguinte tabela: xi −1 0 1 2 3 F(xi) 2 1 2 5 10 a) Cálculo dos coeficientes de Pn(x): X Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4 x0 −1 2 −1 1 0 0 x1 0 1 1 1 0 x2 1 2 3 1 x3 2 5 5 x4 3 10
  • 78. 77 onde: f[x0] = f(x0) = 2 f[x1] = f(x1) = 1 f[x2] = f(x2) = 2 f[x3] = f(x3) = 5 f[x4] = f(x4) = 10 f[x0,x1] = 01 01 ][][ xx xfxf − − = )( )()( 01 01 xx xfxf − − = 1 2 0 1 − + = −1 f[x1,x2] = f x f x x x [ ] [ ]2 1 2 1 − − = 2 1 1 0 − − = 1 f[x2,x3] = xx xfxf 23 23 ][][ − − = 12 25 − − = 3 f[x3,x4] = xx xfxf 34 34 ][][ − − = 23 510 − − = 5 f[x0,x1,x2] = 02 1021 ],[],[ xx xxfxxf − − = 1 1 1 1 + + = 1 f[x1,x2,x3] = f x x f x x x x [ , ] [ , ]2 3 1 2 3 1 − − = 3 1 2 0 − − = 1 f[x2,x3,x4] = xx xxfxxf 24 3243 ],[],[ − − = 13 35 − − = 1 f[x0,x1,x2,x3] = f x x x f x x x x x [ , , ] [ , , ]1 2 3 0 1 2 3 0 − − = 1 1 2 1 − + = 0 f[x1,x2,x3, x4] = f x x x f x x x x x [ , , ] [ , , ]2 3 4 1 2 3 4 1 − − = 1 1 3 0 − − = 0 f[x0,x1,x2,x3,x4] = f x x x x f x x x x x x [ , , , ] [ , , , ]1 2 3 4 0 1 2 3 4 0 − − = 0 0 3 1 − + = 0 b) Polinômio interpolador: P2(x) = 2 − 1(x + 1) + 1(x + 1)(x − 0) P2(x) = 2 − (x + 1) + x (x + 1) P2(x) = 2 − x − 1 + x2 + x P2(x) = x2 + 1 c) Resposta: P2(0.5) = (0.5)2 + 1 = 1.25 Exemplo 2: Obter f(40) usando um polinômio interpolador de Newton de grau 3 (4 pontos). Considere a seguinte tabela: xi 30 35 45 50 55 F(xi) 0.5 0.574 0.707 0.766 0.819
  • 79. 78 a) Cálculo dos coeficientes de Pn(x): Pegar os pontos mais próximos do ponto que desejamos: X Ordem 0 Ordem 1 Ordem 2 Ordem 3 x0 30 0.5 0.0148 −0.0001 0 x1 35 0.574 0.0133 −0.0001 x2 45 0.707 0.0118 x3 50 0.766 Como o polinômio obtido não terá grau 3, devemos escolher um novo conjunto de pontos: X Ordem 0 Ordem 1 Ordem 2 Ordem 3 x0 30 0.5 0.0148 −0.0001 −0.0000002 x1 35 0.574 0.0133 −0.000105 x2 45 0.707 0.0112 x3 55 0.819 b) Polinômio interpolador: P3(x) = 0.5 + 0.0148(x − 30) − 0.0001(x − 30)(x − 35) − 0.0000002(x − 30)(x − 35)(x − 45) c) Resposta: P3(40) = 0.5 + 0.0148(10) − 0.0001(10)(5) − 0.0000002(10)(5)(−5) P3(40) = 0.64305 Exercício 1: Obter f(0.47) usando um polinômio interpolador de Newton do segundo grau (3 pontos). Considere a seguinte tabela: xi 0.2 0.34 0.4 0.52 0.6 0.72 F(xi) 0.16 0.22 0.27 0.29 0.32 0.37 Polinômio interpolador: P2(x) = 0.27 + 0.16667(x − 0.4) + 1.041665(x − 0.4)(x − 0.52) P2(0.47) = 0.27802 Exercício 2: Obter f(0.5) usando um polinômio interpolador de Newton do quarto grau (5 pontos). Considere a seguinte tabela: xi −1 0 1 2 3 F(xi) 1 1 0 −1 −2 Polinômio interpolador: P4(x) = 1 + 0.(x + 1) +       − 2 1 (x + 1)(x) +       6 1 (x + 1)(x)(x − 1) +       − 24 1 (x + 1)(x)(x − 1)(x − 2) P4(0.5) = 1 − 0.375 − 0.0625 − 0.02344 = 0.53906 6.7 Interpolação de Gregory-Newton Muitas vezes são encontrados problemas de interpolação cuja tabela de pontos conhecidos tem valores que são igualmente espaçados, ou seja: x1 − x0 = x2 − x1 = x3 − x2 = ... = xn − xn-1 = h
  • 80. 79 Assim xi+1 − xi = h , para todo i, sendo h uma constante. xi = xi-1 + h → xi = x0 + i * h 6.7.1 Diferenças Ordinárias ou Finitas ∆0 f(x) = f(x) ∆1 f(x) = f(x + h) − f(x) ∆2 f(x) = ∆1 f(x + h) − ∆1 f(x) ... ∆n f(x) = ∆n-1 f(x + h) − ∆n-1 f(x) xi Ordem 0 Ordem 1 Ordem 2 ... Ordem n x0 f(x0) ∆1 f(x0) ∆2 f(x0) ∆n f(x0) x1 f(x1) ∆1 f(x1) ∆2 f(x1) − x2 f(x2) ∆1 f(x2) ∆2 f(x2) − ... ... ... ... ... xn-2 f(xn-2) ∆1 f(xn-2) ∆2 f(xn-2) − xn-1 f(xn-1) ∆1 f(xn-1) − − xn f(xn) − − − 6.7.2 Relação entre diferenças divididas e diferenças ordinárias Teorema: Se xj = x0 + j.h, para j = 0, 1, 2, ..., n, então f[x0,x1,x2,...,xn] = n n hn xf ! )( 0∆ . Prova: f[x0] = f(x0) f[x0,x1] = 01 01 ][][ xx xfxf − − = )( )()( 01 01 xx xfxf − − = h xfhxf )()( 00 −+ = h xf )( 0∆ f[x0,x1,x2] = 02 1021 ],[],[ xx xxfxxf − − = h h xf h xf 2 )()( 01 ∆ − ∆ = 2 0 2 2 )( h xf∆ M e por indução podemos mostrar que esta regra é valida para valores maiores que 2. 6.7.3 Gregory-Newton usando Diferenças Ordinárias Partindo da formula original do método de Newton, que é Pn(x) = f[x0] + f[x0,x1].(x − x0) + f[x0,x1,x2].(x − x0).(x − x1) + ...+ f[x0,x1,x2,...,xn].(x − x0).(x − x1).(x − x2)...(x − xn-1) podemos derivar a nova formula que utiliza as diferenças ordinárias: Pn(x) = f(x0) + h xf )( 0∆ .(x − x0) + 2 0 2 2 )( h xf∆ .(x − x0).(x − x1) + ... + n n hn xf ! )( 0∆ .(x − x0).(x − x1).(x − x2)...(x − xn-1) 6.7.4 Exemplos Exemplo 1: Obter f(0.5) usando um polinômio interpolador de Gregory-Newton (G-N) do segundo grau (3 pontos). Considere a seguinte tabela:
  • 81. 80 xi −1 0 1 2 3 f(xi) 2 1 2 5 10 a) Tamanho do intervalo: h = 1 b) Cálculo dos coeficientes de Pn(x): X Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4 x0 −1 2 −1 2 0 0 x1 0 1 1 2 0 x2 1 2 3 2 x3 2 5 5 x4 3 10 c) Polinômio interpolador: P2(x) = 2 +       − 1 1 (x + 1) +       • 2 12 2 (x + 1)(x) P2(x) = 2 − (x + 1) + x (x + 1) P2(x) = 2 − x − 1 + x2 + x P2(x) = x2 + 1 d) Resposta: P2(0.5) = (0.5)2 + 1 = 1.25 Exercício 1: Obter f(0.04) usando um polinômio interpolador de Gregory-Newton do segundo grau (3 pontos). Considere a seguinte tabela: xi 0.01 0.03 0.05 0.07 F(xi) 1.01 1.09 1.25 1.49 Polinômio interpolador: P2(x) = 100x2 + 1 P2(0.04) = 1.16 Exercício 2: Obter f(3.7) usando um polinômio interpolador de Gregory-Newton do terceiro grau (4 pontos), onde f(x) = ln(x). Considere a seguinte tabela: xi 1 2 3 4 F(xi) 0 0.6931 1.0986 1.3863 Polinômio interpolador: P3(x) = 0.6931.(x − 1) − 0.1438.(x − 1)(x − 2) + 0.0283.(x − 1)(x − 2)(x − 3) P3(3.7) = 1.30225590 6.8 Interpolação Splines: Linear, Quadrática, Cúbica Uma função spline intervalar é um polinômio constituído sobre certas condições de continuidade.
  • 82. 81 6.8.1 Spline Linear Para um conjunto de dados chamados nós : ),,2,1,,( niyx ii L= , a spline linear é definida por [ ] 1,,2,1,,,)( 1 −=∈+= + nixxxforbxaxs iiiii L (1.1) A condição C0 , iii yxs =)( e 11 )( ++ = iii yxs produz )2(2 −n equações para os pontos interior ao domínio de x. Acrescentada a estas condições duas condições nos pontos extremos do domínio de x são estabelecidas produzindo um total de 22 −n equações concordar com 22 −n incógnitas: 1,,2,1,, −= niba ii L . Aplicando essas condições obtém-se: [ ]1 1 1 1 1 1 1 ,),()( + + + + + + + ∈− − − += − − + − − = iii ii ii i ii i i ii i ii xxxxx xx yy y xx xx y xx xx yxs (1.2) Está equação resulta em linhas retas juntando pontos vizinhos. Observa-se que, )(xsi é o polinômio de interpolação de Lagrange para o conjunto de dados: ),( ii yx e ),( 11 ++ ii yx . A eq(1.2) é a solução intervalar aproximada linearmente em uma dimensão. Exemplo 1.1. Calcular a spline linear do conjunto de dados abaixo: i 1 2 3 4 5 x 0 5 7 8 10 y 0 2 -1 -2 20 Spline Linear ]5,0[,5.2 05 0 2 50 5 0)(1 ∈= − − + − − = xx xx xs ]7,5[,5.95.1 57 5 1 75 7 2)(2 ∈+−= − − − − − = xx xx xs ]8,7[,6 78 7 2 87 8 1)(3 ∈+−= − − − − − −= xx xx xs ]10,8[,9011 810 8 20 108 10 2)(4 ∈−= − − + − − −= xx xx xs
  • 83. 82 0 1 2 3 4 5 6 7 8 9 10 -5 0 5 10 15 20 x y Linear Spline Interpolation interp1: MATLAB function. Type "help interp1" in MATLAB window for its usage and options. data points linear spline interp1: linear Figura 1.1 Spline Linear. Pseudocódigo: Matlab (1) Input dados x(i) ,y(i), i = 1,n; Plot usando símbolos usando plot; (2) For i = 1, n-1, do A = linspace(x(i),x(i+1),nint) % Divide cada intervalo em “nint” pontos Call c1=linear_spline % Call a função linear_spline.m Call c2=interp1 % Call a função do MATLAB (opção default: linear) Plot c1 Plot c2 Enddo A função “linear_spline.m” é contruída de acordo com o seguinte algoritmo: (1) Input x, onde se deseja determinar o valor de y; Avalie se x está fora do intervalo; se sim pare o programa; se não, prossegue; (2) Calcule o intervalo onde o valor de x reside; (3) Calcule y de acordo com a eq(1.2). function f = linear_spline(x,y,xx) n=length(x); % No.de dados em ordem crescente if (xx<x(1)) | (xx>x(n)); error('x esta fora do intervalo!'); % erro end; % procura do intervalo onde xx reside for i = 1:n-1; if (xx>=x(i)) & (xx<=x(i+1)); m=i; break;
  • 84. 83 end; end; % Calcule y(XX) eq(1.2). f = y(m)*(xx-x(m+1))/(x(m)-x(m+1)) ... +y(m+1)*(xx-x(m))/(x(m+1)-x(m)); Examplo 1.2 Calcule as splines intervalar lineares para os dados: i 1 2 3 4 5 6 x 0 1 2 3 4 5 y 1 1 1 -1 -1 -1 Avalie o resultado segundo o gráfico na Figura 1.2. 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 x y Linear Spline Interpolation data points linear spline interp1: linear Figure 1.2 Spline Linear. É claramente notado em ambos os exemplos as splines são linhas retas. Estes conjuntos de dados serão usados em todo este material com o objetivo de comparar os diferentes tipos de splines.
  • 85. 84 6.8.2 Spline Quadrática Uma spline quadrática para cada intervalo é definida como: [ ] 1,,2,1,,,)( 1 2 −=∈++= + nixxxforcxbxaxs iiiiii L (2.1) A qual é posta certas condições para satisfazer as condições de se C0 e C1 . Para a condição de ser C0 se obtém: 1,...2,1,)(,)( 11 −=== ++ niyxsyxs iiiiii (2.2) Para a condição de ser C1 se obtém: 2,,2,1),()( 111 −=′=′ +++ nixsxs iiii L (2.3) Dos três requerimentos acima, existem 3n-4 condições. Porém as splines quadráticas requer um total de 3n-3 condições, de forma que há necessidade de uma condição a ser adicionada. Usualmente usa-se, s′1(x1) = 0 como condição. Com isso se obtém a então chamada spline natural quadrática. Certamente outras condições podem ser usadas, tal como s′1(x1) = s′n-1(xn ). Para determinar a equação da spline, primeiro denote di = s′i (xi ), então desde que s′(x) é uma spline linear para o conjunto de dados (xi, di, i = 1,2, …, n), obtém-se ii iiiiii ii i i ii i ii xx xdxdxdd xx xx d xx xx dxs − +−− = − − + − − =′ + +++ + + + + 1 111 1 1 1 1 )( )( ii ii ii dxx xx dd +− − − = + + )( 1 1 aqual é uma equação linear para a inclinação (slope). Integrando em x, obtém-se iiii ii ii i yxxdxx xx dd xs +−+− − − = + + )()( )(2 )( 2 1 1 (2.4) Nesta solução é a constante de integração é calculada utilizando a condição de contorno C0 : iii yxs =)( . Uma spline quadrática é definida uma vez que os id ’s sejam conhecidos. Fazendo x = xi+1, obtém-se iiiiii ii ii i yxxdxx xx dd y +−+− − − = ++ + + + )()( )(2 1 2 1 1 1 1 O qual conduz a: 1,,2,1,2 1 1 1 −=− − − = + + + nid xx yy d i ii ii i L (2.5) A eq(2.5) descreve um esquema recursivo. Se d1 é conhecido, então di+1 pode ser calculado pela eq(2.5). Varias condições podem ser aplicadas para obter d1: • Para a então chamada Spline Natural, 01 =d . • Se d1 = d2, então d1 pode ser calculado por 12 12 11 12 12 21 2 xx yy dd xx yy dd − − =⇒− − − == (2.6)
  • 86. 85 • Se d1 = dn, então d1 pode ser calculado por                     − − −= ⇒−−      − − −== ∑ ∑ − = + ++− − = + ++− imparnsolucaosem parn xx yy d d xx yy dd n i ii iiin n n i ii iiin n , ,)1( )1()1(2 1 2 1 11 1 1 1 2 1 11 1 (2.7) Esta condição não pode ser aplicada quando n é um número impar. Pseudocódigo do algoritmo em Matlab “quadratic_spline.m” é como segue: (1) Input os pontos x(i) ,y(i), i = 1,n; Plot estes pares usando símbolos com a função plot; (2) For i = 1, n-1, do A = linspace(x(i),x(i+1),nint) % Divide cada intervalo e “nint” pontos Call c1=quadratic_spline with d1 = 0; % Spline Natural Quadrática Call c2=quadratic_spline with d1 = d2; Plot c1 Plot c2 Enddo A função “quadratic_spline.m” é construída de acordo com o seguinte algoritmo: (1) Input x onde se deseja calcular o valor interpolado y; Avaliar se x está fora do intervalo; se sim, pare o programa; se não, prossegue; (2) Calcule o intervalo onde x pertence; (3) Calcule d1; Calcule di (Equação (2.5)); (4) Calcule y de acordo com a equação (2.4). function f = quadratic_spline(x,y,xx,ioption) n=length(x); % No. de dados em ordem crescente if (xx<x(1)) | (xx>x(n)); error('x esta fora do intervalo!'); % Erro end; % declara o tamanho da matriz para d=ds/dx d=1:1:n; % Calcule d(1) if ioption==1; d(1)=0.0; % Spline Quadratica Natural else; d(1)=(y(2)-y(1))/(x(2)-x(1)); % para d(1)=d(2), eq(2.6) end; % Usa algoritmo recursivo eq(2.5) para calcular todosl d(i) for i = 2:n; d(i)=2.0*(y(i)-y(i-1))/(x(i)-x(i-1))-d(i-1); end; % Calcular qual o intervalo que reside xx for i = 1:n-1; if (xx>=x(i)) & (xx<=x(i+1)); m=i; break; end; end; % Calcule y(xx) para spline quadratica eq(2.4). f = (xx-x(m))*( 0.5*(d(m+1)-d(m))*(xx-x(m))/(x(m+1)-x(m)) ... +d(m) ) + y(m);
  • 87. 86 Examplo 2.1. Dado os mesmo dados do examplo 1.1, calcule a spline quadrática. Usando a spline natural quadrática, onde d1 = 0, então se obtém 8.38.0 57 21 2,8.00 05 02 2 32 −=− − −− ==− − − = dd 2.208.1 810 220 2,8.18.3 78 12 2 54 =− − + ==+ − +− = dd ]5,0[,08.00)0(0)0( )05(2 08.0 )( 22 1 ∈=+−+− − − = xxxxxs ]7,5[,5.2893.1215.12)5(8.0)5( )57(2 8.08.3 )( 22 2 ∈−+−=+−+− − −− = xxxxxxs ]8,7[,8.1624.98.21)7(8.3)7( )78(2 8.38.1 )( 22 3 ∈+−=−−−− − + = xxxxxxs ]10,8[,6.2738.716.42)8(8.1)8( )810(2 8.12.20 )( 22 4 ∈+−=−−+− − − = xxxxxxs Os resultados das splines devido à condição d1 = d2, são plotados na figura 2.1. Próximo x = 0, a spline natural tem uma curva achatada devido à derivada zero em x = 0. A outra spline tem uma inclinação linear no primeiro intervalo. Para todos os intervalos de dados, estas duas splines são diferentes, embora as diferenças sejam pequenas. 0 1 2 3 4 5 6 7 8 9 10 -5 0 5 10 15 20 x y Quadratic Spline Interpolation data points natural quadratic spline quadratic spline with d1 =d2 Figure 4.2.1. Spline Quadrática.
  • 88. 87 Exemplo 2.2. Utlizando os dados do exemplo 1.2, obter as splines quadráticas. A única mudança necessária no script “quadratic_spline1.m” é trocar o conjunto de dados x e y pelos da tabela do exemplo 1.2. As splines são plotadas na figura 2.2. Note que as splines natural e as splines devido a condição d1 = d2 são exatamente as mesmas. Isso é causado pelo fato que ambas as opções produzem o mesmo resultado: d1 = 0. Também, as splines no 4º e 5º intervalos têm grandes oscilações. Seria desejável uma transição suave no 3º intervalo e as splines apresentam esta transição. Contudo devido a depressão no intervalo 4, existem oscilações no 4º e 5º intervalos. Geralmente, quando a ordem do polinômio spline é maior este problema torna-se mais severo. 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 x y Quadratic Spline Interpolation data points natural quadratic spline quadratic spline with d1 =d2 Figura 2.2. Sline Quadrática. 6.8.3 Spline Cúbica Natural Geralmente, uma função s é chamada de spline do grau k sobre nxxx <<< L21 se (1) [ ];,1 nxxs ∈ (2) 1,,2,1,0,)( −= kjs j L são todas funções contínuos no [ ]nxx ,1 onde s(j) é a j-ésima derivada; (3) s é um polinômio de grau k≤ em cada intervalo [ ]1, +ii xx . Se 3=k , a spline é chamada de spline cúbica. As curvaturas dadas pelas derivadas segundas podem ser aproximadas por funções lineares em um intervalo e denotando os valores nos pontos ix como nixse iii ,,2,1),( L=′′= , elas podem ser aproximadas pelo polinômio interpolador de Lagrange no
  • 89. 88 )()( 1 iiii xsxs − ′=′ conjunto de dados ),,2,1,,( niex ii L= . Contudo 1,,2,1,)( 1 1 1 1 −= − − + − − =′′ + + + + ni xx xx e xx xx exs ii i i ii i ii L (3.1) Integrando em x duas vezes, obtém-se )()()( 6 )( 6 )( 1 3 1 31 xxdxxcxx h e xx h e xs iii i i i i i i −+−+−+−= ++ + (3.2) Onde hi = xi+1 - xi e c e d são constantes de integração. Aplicando a condição C0 , obtém-se: 6 ; 6 11 ii i iii i i he h y d he h y c −=−= ++ (3.3) A qual conduz a ))( 6 ())( 6 ()( 6 )( 6 )( 1 113 1 31 xx he h y xx he h y xx h e xx h e xs i ii i i i ii i i i i i i i i i −−+−−+−+−= + ++ + + (3.4) Logo a spline cúbica é definida desde que se determina os ei‘s. Os valores de ei podem ser determinados da condição C1 de continuidade. Diferenciando a equação anterior, obtém-se ) 6 () 6 ()( 2 )( 2 )( 112 1 21 ii i iii i i i i i i i i i he h yhe h y xx h e xx h e xs −−−+−−−=′ ++ + + e i iiiiii i iii i i i i i ii b hehehe h yhe h y h h e xs +−−=−−−+−=′ +++ 36 ) 6 () 6 ( 2 )( 1112 onde 1,,2,1,1 −= − = + ni h yy b i ii i L (3.5) Também 1 11111 1 11 1 2 1 1 1 36 ) 6 () 6 ( 2 )( − −−−−− − −− − − − − ++=−−−+=′ i iiiiii i iii i i i i i ii b hehehe h yhe h y h h e xs Fixando para todos os pontos no interior do intervalo, obtém-se 1,,3,2),(6)(2 11111 −=−=+++ −+−−− nibbehehheh iiiiiiiii L (3.6) Um sistema linear tridiagonal de equações em termos das incógnitas ie ’s. Existemn incógnitas e 2−n equações. Duas condições adicionais são necessárias para determinar as splines cúbicas. Quando elas são
  • 90. 89 01 == nee , as splines resultantes são chamadas de spline cúbica natural. Essas equações podem ser rearranjadas como: 0 1,,3,2 0 111 1 = −==++ = +−− n iiiiiii e niveheueh e L (3.7) onde 1,,3,2 )(6 )(2 1 1 −= −= += − − ni bbv hhu iii iii L (3.8) O algoritmo do código “cubic_splin.m” é muito similar ao “linear_spline.m”, então o algoritmo para a função “cubic_splin1.,m” será representado aqui. (1) Input x onde se deseja calcular a interpolação y é desejado; % s = y aqui. (2) Avaliar se x esta for a do intervalo; se sim, pareo programa; se não, prossegue; (3) Calcule hi e bi (eq(3.5)); (4) Calcule ui e vi (eq(3.8)); (5) Fixe e1 = 0, então calcule ei (eq(3.7)) (6) Calcule em que intervalo reside x; (7) Calcule y com a eq(3.4). Example 3.1. Dado os pontos do exemplo 1.1, obter a spline natural cúbica. Para calcular a 2ª derivadas, primeiro determine h1 = 5, h2 = 2, h3 = 1, h4 = 2 b1 = 0.4, b2 = -1.5, b3 = -1, b4 = 11 Usando os dados acima se pode calcular os ui’s e vi’s como u2 = 14, u3 = 6.0, u4= 6.0 v2 = -11.4, v3 =3.0, v4 = 72.0 Então da eq(3.7), obtém-se          − =                     0.72 0.3 4.11 610 162 0214 4 3 2 e e e Os valores de e2, e3, e e4 pode ser obtido usando o algoritmo de Thomas. Estes valores juntamente com e1= e5 = 0 fornecem: e2 =-0.67211538461538, e3 =-0.99519230769231, e4 =12.33173076923077 As splines cúbicas natural são plotadas na figure 3.1. As funções Matlab “spline” e “interp1” com as opções corretas são usadas para produzir as mesmas splines. Duas outras condições são adicionadas nestas funções Matlab como segue
  • 91. 90 )()(,)()( 1 )3( 11 )3( 22 )3( 22 )3( 1 −−−− == nnnn xsxsandxsxs 0 1 2 3 4 5 6 7 8 9 10 -5 0 5 10 15 20 x y Cubic Spline Interpolation data points natural cubic spline interp1:spline spline Figura 3.1. Spline Cúbica. INTERPOLACAO por SPLINE CUBICA xi -> Valores de x ci -> Coeficientes Linear bi -> Coeficientes Linear ai -> Coeficientes Cubic fpa -> Primeira Derivada em a 0.0000 fpb -> Primeira Derivada em b 0.0000 -------------------------------------------------------------------- x(i) x(i+1) a(i+1) ai bi ci -------------------------------------------------------------------- 0.00 5.00 -0.0224 0.0000 0.0000 0.9601 5.00 7.00 -0.0829 -0.0560 1.2240 -0.1683 7.00 8.00 2.0553 -0.1659 -0.8341 -4.0553 8.00 10.00 0.0000 1.0276 -5.1106 10.0000 Exemplo 3.2. Dados os pontos do exemplo 1.2, obter as splines cúbicas. As splines são plotadas na figura 3.2. Todas as splines apresentam resultados melhores que àquelas gerados pela spline quadráticas. As oscilações são menores. As splines naturais aqui apresentam melhores resultados que os gerados por “spline” e “interp1: spline” no 1º e 5º intervalos.
  • 92. 91 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 -1.5 -1 -0.5 0 0.5 1 1.5 x y Cubic Spline Interpolation data points natural cubic spline interp1:spline spline Figura 3.2. Spline Cúbica. function f = cubic_spline(x,y,xx) %-------------------------------------------------------------------------- %echo off; clear; clc; format long; %-------------------------------------------------------------------------- % n=length(x); % No. dados em ordem crescente. if (xx<x(1)) | (xx>x(n)); error('for a do intervalo de x!'); % Erro end; % % Inicialize h, b, u, v. h=1:1:n-1; b=1:1:n-1; u=1:1:n-1; v=1:1:n-1; % for i=1:n-1; h(i)=x(i+1)-x(i); % Calcule h(i) b(i)=(y(i+1)-y(i))/h(i); % Calcule b(i) usando eq(3.5) end; % % Calcule u(i), v(i) usando eq(3.8) u(2)=2.0*(h(1)+h(2)); v(2)=6.0*(b(2)-b(1)); for i=3:n-1; u(i)=2.0*(h(i)+h(i-1)); v(i)=6.0*(b(i)-b(i-1)); end; % % Condicoes para Spline Cubica Natural e(1)=0.0; e(n)=0.0; % Calcule e(i) usando eq(3.7) sub(1:n-2) = h(1:n-2); % diagonal inferior dia(1:n-2) = u(2:n-1); % diagonal principal super(1:n-2) = h(2:n-1); % diagonal superior rhs(1:n-2) = v(2:n-1); % lado direito
  • 93. 92 %-------------------------------------------------------- [xs]=triDiag(n-2,sub,super,dia,rhs); e(2:n-1)=xs; %-------------------------------------------------------- % Calcular intervalo onde xx reside for i = 1:n-1; if (xx>=x(i)) & (xx<=x(i+1)); m=i; break; end; end; % hm=x(m+1)-x(m); xt1=xx-x(m); xt2=x(m+1)-xx; % Calcule y(XX) cubic spline usando eq(3.4). f = (e(m+1)*xt1^3+e(m)*xt2^3)/(6.0*hm) ... +xt1*( y(m+1)/hm-hm*e(m+1)/6.0 ) ... +xt2*( y(m)/hm-hm*e(m)/6.0 ); function [xs]=triDiag(dim,sub,super,diag,rhs) for i=1:dim-1 %Elimination m=sub(i)/diag(i); diag(i+1)=diag(i+1)-m*super(i); rhs(i+1)=rhs(i+1)-m*rhs(i); end x(dim)=rhs(dim)/diag(dim); %Back Substitution for i=dim-1:-1:1 x(i)=(rhs(i)-super(i)*x(i+1))/diag(i); end xs=x; %************** CUBIC_SPLINE_1 ****************** % %------------------------------------------------- clear all; clc; format long; %------------------------------------------------- for iexample=1:2; if iexample==1; %x=[-2 -1 0 1 2]; %y=[ 4 -1 2 1 8]; x=[0. 5. 7. 8. 10.0]; % data points for Example 3.1 y=[0. 2. -1. -2. 20.]; else; x=[0. 1. 2. 3. 4. 5.]; % data points for Example 3.2 y=[1. 1. 1. -1. -1. -1.]; end; figure; plot(x,y,'ko'); % Plot original data points hold; n=length(x)-1; nint=11; % Use nint points in plotting for each data interval for i=1:n; % loop for each data interval a=linspace(x(i),x(i+1),nint); % Divide each data interval into nint points for i1=1:nint; c1(i1)=cubic_spline(x,y,a(i1)); % Call cubic_spline function c3(i1)=interp1(x,y,a(i1),'spline'); % Call MATLAB function interp1.m with % option 'spline' c4(i1)=spline(x,y,a(i1)); % Call MATLAB function spline.m end;
  • 94. 93 plot(a,c1,'k'); % Plot points due to cubic_spline plot(a,c3,'k:'); % Plot points due to interp1's spline plot(a,c4,'k+'); % Plot points due to spline function end; legend('data points','natural cubic spline', ... 'interp1:spline','spline',0) % Create legend xlabel('x'), ylabel('y'),title('Cubic Spline Interpolation'); % Title for plot grid; end; 6.8.4 Considerações Gerais sobre Interpolação Splines de crescente ordem são obtidas aumentando a ordem de continuidade nos pontos através de todos os intervalos, splines quadrática requer que as primeiras derivadas sejam satisfeitas nos pontos de extremos dos intervalos, splines cúbica requer as derivadas segundas, etc. Splines de ordem maior que 3 são raramente usadas em aplicações práticas. Porém o aumento da ordem paga o esforço para gerá-la? Observando os gráficos estes revelam que para ordem maior que 1 há oscilações através dos dados. A comparação das splines é mostrada nas figuras 4.1 e 4.2. É possível observer que as splines quadráticas, em geral, oscilam mais que as splines cúbicas quando comparadas com as splines lineares. Então aumentando a ordem nem sempre aumenta as oscilações. Então qual spline escolher? A Seleção de uma spline apropriada depende da aplicação. Se procura interpolar os dados por si só, talvez a spline linear é a melhor escolha. Se os dados forem de natureza cúbica a spline cúbica será a melhor escolha. Se desejar conhecer derivadas dos dados, uma spline linear gera saltos nos pontos, portanto algum grau de suavidade seria desejável. Então novamente, a escolha deverá ser feita em função da aplicação. Em projetos, as splines permitem suavização local através dos dados e a spline cúbica é a escolha usual. Como as splines se comparam aos polinômios interpolantes de Hermite que também tratam de derivadas? É muito importante entender o seguinte conceito: splines concordam através das condições de derivadas nos pontos extremos dos intervalos, não derivadas dos dados por si só. Em outras palavras, splines são funções discretas as quais aproximam os dados preenchendo os dados nos intervalos: as condições de suavidade nos pontos de junção são asseguradas assim como nos pontos gerados no interior do intervalo. Por outro lado, a interpolação de Hermite requer derivadas de dados, isto é, as derivadas são partes dos dados, i.é., posição, velocidade, aceleração. A única relação entre spline e interpolação de Hermite é que ambos são polinômios. Figura 4.1 Comparação de Spline. 0 1 2 3 4 5 6 7 8 9 10 -5 0 5 10 15 20 x y Spline Comparison data points natural cubic spline natural quadratic spline linear spline
  • 95. 94 Figura 4.2 Comparação Spline. 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 x y Spline Comparison data points natural cubic spline natural quadratic spline linear spline
  • 96. 95 7 Ajuste de Curvas Uma das formas de se trabalhar com uma função definida por uma tabela de valores é a interpolação polinomial. Contudo, a interpolação não é aconselhável quando: a) É preciso obter um valor aproximado da função em algum ponto fora do intervalo de tabelamento, ou seja, quando se quer extrapolar. b) Os valores tabelados são resultados de algum experimento físico ou de alguma pesquisa, porque, nestes casos, estes valores poderão conter erros inerentes que, em geral, não são previsíveis. Surge então a necessidade de se ajustar a estas funções tabeladas uma função que seja uma "boa aproximação" para os valores tabelados e que permita extrapolar com certa margem de segurança. O problema do ajuste de curvas no caso em que temos uma tabela de pontos (x1, f(x1)), (x2, f(x2)), ..., (xm, f(xm)) com x1, x2, ..., xm, pertencentes a um intervalo [a, b], consiste em: escolhidas n funções g1(x), g2(x), ..., gn(x), contínuas em [a, b], obter n constantes α1, α2, ..., αn tais que a função ϕ(x) = α1g1(x) + α2g2(x) + ... + αngn(x) se aproxime ao máximo de f(x). Genericamente, no caso linear, estaremos supondo que os dados serão aproximados por uma função do tipo: f(x) ≅ ϕ(x) = α1g1(x) + α2g2(x) + ... + αngn(x) onde as funções g1(x), g2(x), ..., gn(x) são preestabelecidas. Dizemos que este é um modelo matemático linear porque os coeficientes a determinar, α1, α2, ..., αn, aparecem linearmente, embora as funções g1(x), g2(x), ..., gn(x) possam ser funções não lineares de x, como por exemplo, g1(x) = ex , g2(x) = (x2 + 2), g3(x) = sen(x), etc. A escolha das funções pode ser feita observando o gráfico dos pontos conhecidos ou baseando-se em fundamentos teóricos do experimento que nos forneceu a tabela. Portanto, dada uma tabela de pontos (x1, f(x1)), (x2, f(x2)), ..., (xm, f(xm)), deve-se, em primeiro lugar, colcoar estes pontos num gráfico cartesiano. O gráfico resultante é chamado diagrama de dispersão. Através deste diagrama pode-se visualizar a curva que melhor se ajusta aos dados. Exemplo: Seja a tabela: i 1 2 3 4 5 6 7 8 9 xi –1.0 –0.75 –0.5 –0.25 0 0.25 0.5 0.75 1.0 f(xi) 2.1 1.3 1.1 0.2 0 0.5 0.6 1.5 2.2 O diagrama de dispersão será conforme mostrado abaixo: 0 0.5 1 1.5 2 2.5 -1.5 -1 -0.5 0 0.5 1 1.5
  • 97. 96 Portanto, é natural escolher apenas uma função g1(x) = x2 e procurar então ϕ(x) = αx2 (equação geral de uma parábola passando pela origem). Se considerarmos uma experiência onde foram medidos vários valores de corrente elétrica que passa por uma resistência submetida a várias tensões, colocando os valores correspondentes de corrente e tensão em um gráfico, poderemos ter: i V i0 iq V0 Vq neste caso, existe uma fundamentação teórica relacionando a corrente com a tensão V = Ri, isto é, V é uma função linear de i. Assim, g1(x) = i e ϕ(i) = αg1(i) O problema é determinar qual parábola com equação αx2 se ajusta melhor ao primeiro gráfico e qual reta, passando pela origem, melhor se ajusta ao segundo gráfico. No caso geral, escolhidas as funções g1(x), g2(x), ..., gn(x) temos de estabelecer o conceito de proximidade entre as funções ϕ(x) e f(x) para obter as constantes α1, α2, ..., αn. Uma maneira é impor que o desvio (f(xi) – ϕ(xi)) seja mínimo, para i = 1, 2, ..., m. veremos a seguir o método conhecido como Método dos Quadrados Mínimos. 7.1 Método dos Quadrados Mínimos O Método dos Quadrados Mínimos é provavelmente a técnica de aproximação mais usada na análise numérica e em problemas práticos. Isto se deve tanto à sua simplicidade quanto ao fato de que em geral, buscamos aproximações para dados que são medidas obtidas experimentalmente com um certo grau de incerteza. Veremos que o método dos quadrados mínimos comtempla a possível existência de erros nos dados a serem aproximados. O critério de aproximação consiste em minimizar os resíduos. Chamaremos de f(x) a função que será convenientemente aproximada por outra função ϕ(x). No caso dos quadrados mínimos lineares, partimos da hipótese de que temos algumas informações sobre o comportamento de ϕ(x). Poderíamos saber, por exemplo, que ϕ(x) é uma reta, ou seja: ϕ(x) = α1 + α2x A questão é encontrar qual é esta reta, ou seja, quais são os valores de α1 e α2 que ajustam os pontos conhecidos. Num outro exemplo, vamos procurar valores para α1, α2 e α3 que tornam a função: ϕ(x) = α1 + α2x + α3x2 uma boa aproximação dos dados.
  • 98. 97 Sejam dados os pontos (x1, f(x1)), (x2, f(x2)), ..., (xm, f(xm)) e as n funções g1(x), g2(x), ..., gn(x) escolhidas de alguma forma. Considerando que o número de pontos m, tabelados, é sempre maior ou igual a n o número de funções escolhidas ou o número de coeficientes αi a se determinar. Nosso objetivo é encontrar os coeficientes α1, α2, ..., αn tais que a função ϕ(x) = α1g1(x) + α2g2(x) + ... + αngn(x) se aproxime ao máximo de f(x). Seja dk = f(xk) – ϕϕϕϕ(xk) o desvio em xk. O conceito de proximidade é que dk seja mínimo para todo k = 1, 2, ..., m. No método dos quadrados mínimos consiste em escolher os aj's de tal forma que a soma dos quadrados dos desvios seja mínima. 7.1.1 Ajuste Linear Simples Dada uma tabela com m valores (xi, f(xi)), i = 1, 2, ..., m, queremos encontrar a reta que melhor ajusta esta tabela, no sentido dos quadrados mínimos. Como o ajuste será feito por uma reta, tomaremos g1(x) = 1 e g2(x) = x., isto é: f(x) ≅ ϕ(x) = α1 + α2x O resíduo para cada par (α1, α2) e para cada x será r(α1, α2; x) = f(x) – α1 – α2x. Assim, pelo método dos quadrados mínimos devemos procurar α1 e α2 que minimizam a função: <r, r> (α1, α2) = < f(x) – α1 – α2x, f(x) – α1 – α2x> = ( )∑= −− m i ii xxf 1 2 21)( αα . Do Cálculo Diferencial sabe-se que a condição necessária do ponto crítico é que as derivadas nele se anulem, esto é: 1α∂ ∂ <r, r> = 2α∂ ∂ <r, r> = 0 ou ainda, procedidas as respectivas derivações na expressão <r, r> temos: ( )∑= −−− m i ii xxf 1 21)(2 αα = 0 e ( )∑= −−− m i iii xxxf 1 21)(2 αα = 0 Após o desenvolvimento, estas duas equações formam um sistema linear com as incógnitas α1 e α2, que podem ser reescrito na forma: ∑ ∑∑ = == =−− m i m i i m i i xxf 1 1 21 1 0)( αα ∑ ∑∑ = == =−− m i m i ii m i ii xxxfx 1 1 2 21 1 0)( αα ou mα1 + α2 ∑= m i ix 1 = ∑= m i ixf 1 )(
  • 99. 98 α1 ∑= m i ix 1 + α2 ∑= m i ix 1 2 = ∑= m i ii xfx 1 )( A solução deste sistema pode ser obtida pelo método da Eliminação de Gauss. Através das substituições retroativas obtém-se: α1 = m xxf m i i m i i 2 11 )( α      − ∑∑ == e α2 = 2 11 2 1 11 )()(       − − ∑∑ ∑ ∑∑ == = == m i i m i i m i m i ii m i ii xxm xfxxfxm Assim, a solução do sistema de equações lineares é α1 e α2 dados pelas equações acima, e com estes valores os resíduos apresentam o seu menor valor. Como este método consiste em achar o mínimo de uma função quadrática, ele é conhecido como método dos mínimos quadrados. Exemplo 1: Ajustar os dados da tabela abaixo a uma reta de modo que o resíduo seja o menor possível. i 1 2 3 4 5 xi 1.3 3.4 5.1 6.8 8.0 f(xi) 2.0 5.2 3.8 6.1 5.8 Usando os valores da tabela temos: a) Cálculo dos somatórios: m = 5 ∑= m i ix 1 = (1.3) + (3.4) + (5.1) + (6.8) + (8.0) = 24.6 ∑= m i ix 1 2 = (1.3)2 + (3.4) 2 + (5.1) 2 + (6.8) 2 + (8.0) 2 = 149.5 ∑= m i ixf 1 )( = (2.0) + (5.2) + (3.8) + (6.1) + (5.8) = 22.9 ∑= m i ii xfx 1 )( = (1.3)(2.0) + (3.4)(5.2) + (5.1)(3.8) + (6.8)(6.1) + (8.0)(5.8) = 127.54 b) Resolução do sistema: Assim, os valores de α1 e α2 da melhor reta (no sentido dos quadrados mínimos) são obtidos pelo sistema:    =+ =+ 54.1275.1496.24 9.226.245 21 21 αα αα Resolvendo o sistema, obtem-se α1 = 2.0098 e α2 = 0.5224.
  • 100. 99 Usando as fórmulas de α1 e α2 temos: α1 = m xxf m i i m i i 2 11 )( α      − ∑∑ == = 5 )5224.0)(6.24(9.22 − = 5 851.129.22 − = 2,0098 α2 = 2 11 2 1 11 )()(       − − ∑∑ ∑ ∑∑ == = == m i i m i i m i m i ii m i ii xxm xfxxfxm = 2 )6.24()5.149)(5( )9.22)(6.24()54.127)(5( − − = 16.6055.747 34.563637.7 − − = 34.142 36.74 = 0.5224 Então, a melhor reta que passa pelos pontos, usando a equação, é: ϕϕϕϕ(x) = 2.0098 + 0.5224x. c) Cálculo do quadrado dos resíduos: Os valores de ϕ(xi) e os respectivos resíduos estão na tabela abaixo: i 1 2 3 4 5 xi 1.3 3.4 5.1 6.8 8.0 f(xi) 2.0 5.2 3.8 6.1 5.8 ϕϕϕϕ(xi) 2.68892 3.78596 4.67404 5.56212 6.189 r(xi) –0.68892 1.41404 –0.87404 0.53788 –0.389 Neste exemplo, a soma dos quadrados dos resíduos é: ∑= m i ixr 1 2 )( = 3.6787 Exercício 1: Considere o ajuste da tabela abaixo por uma reta: i 1 2 3 4 5 xi 0 0.25 0.5 0.75 1.00 f(xi) 1.0000 1.2840 1.6487 2.1170 2.7183 Resposta: ϕϕϕϕ(x) = 0.89968 + 1,70784x. ∑= m i ixr 1 2 )( = 0.039198 7.1.2 Ajuste Polinomial O ajuste linear simples é um caso especial do ajuste polinomial. A equação geral do ajuste polinomial é dada por: ϕ(x) = α1 + α2x + α3x2 + ... + αn+1xn e as equações normais ficam:
  • 101. 100                             =                                                         ∑ ∑ ∑ ∑ ∑∑∑∑ ∑∑∑∑ ∑∑∑∑ ∑∑∑ = = = = == + = + = = + === = + === === )( )( )( )( . 1 1 2 1 1 3 2 1 1 2 1 2 1 1 1 1 2 1 4 1 3 1 2 1 1 1 3 1 2 1 11 2 1 i m i n i i m i i i m i i m i i n m i n i m i n i m i n i m i n i m i n i m i i m i i m i i m i n i m i i m i i m i i m i n i m i i m i i xfx xfx xfx xf xxxx xxxx xxxx xxxm MM L MMMMM L L L α α α α Exemplo 1: Ajustar os pontos da tabela abaixo à equação ϕ(x) = α1 + α2 x + α3x2 . I 1 2 3 4 5 6 xi –2 –1.5 0 1 2.2 3.1 f(xi) –30.5 –20.2 –3.3 8.9 16.8 21.4 O vetor α é a solução do sistema acima, que, neste caso, torna-se:                   =                                   ∑ ∑ ∑ ∑∑∑ ∑∑∑ ∑∑ = = = === === == m i ii m i ii m i i m i i m i i m i i m i i m i i m i i m i i m i i xfx xfx xf xxx xxx xxm 1 2 1 1 3 2 1 1 4 1 3 1 2 1 3 1 2 1 1 2 1 )( )( )( . α α α a) Cálculo dos somatórios: m = 6 ∑= m i ix 1 = (–2) + (–1.5) + (0) + (1) + (2.2) + (3.1) = 2.8 ∑= m i ix 1 2 = (–2)2 + (–1.5)2 + (0)2 + (1)2 + (2.2)2 + (3.1)2 = 21.7 ∑= m i ix 1 3 = (–2)3 + (–1.5)3 + (0)3 + (1)3 + (2.2)3 + (3.1)3 = 30.064 ∑= m i ix 1 4 = (–2)4 + (–1.5)4 + (0)4 + (1)4 + (2.2)4 + (3.1)4 = 137.8402 ∑= m i ixf 1 )( = (–30.5) + (–20.2) + (–3.3) + (8.9) + (16.8) + (21.4) = –6.9 ∑= m i ii xfx 1 )( = (–2)(–30.5) + (–1.5)(–20.2) + (0)(–3.3) + (1)(8.9) + (2.2)(16.8) + (3.1)(21.4) = 203.5
  • 102. 101 ∑= m i ii xfx 1 2 )( = (–2)2 (–30.5) + (–1.5)2 (–20.2) + (0)2 (–3.3) + (1)2 (8.9) + (2.2)2 (16.8) + (3.1)2 (21.4) = 128.416 b) Resolução do sistema: O sistema é:           − =                     416.128 5.203 9.6 . 8402.137064.307.21 064.307.218.2 7.218.26 3 2 1 α α α A solução deste sistema é: α1 = –2.018 α2 = 11.33 α3 = –1.222 Portanto, ϕϕϕϕ(x) = –2.018 + 11.33x – 1.222x2 . c) Cálculo do quadrado dos resíduos: i 1 2 3 4 5 6 xi –2 –1.5 0 1 2.2 3.1 f(xi) –30.5 –20.2 –3.3 8.9 16.8 21.4 ϕϕϕϕ(xi) –29.566 –21.7625 –2.018 8.09 16.99352 21.36158 r(xi) –0.934 1.5625 –1.282 0.81 –0.19352 0.03842 A soma dos quadrados dos resíduos é: ∑= m i ixr 1 2 )( = 5.652312337 Exemplo 2: Considerando a função tabelada abaixo i 1 2 3 4 5 6 7 8 9 10 11 xi –1.0 –0.75 –0.6 –0.5 –0.3 0 0.2 0.4 0.5 0.7 1 f(xi) 2.05 1.153 0.45 0.4 0.5 0 0.2 0.6 0.512 1.2 2.05 a partir do diagrama de dispersão, deve ser ajustada por uma parábola passando pela origem, ou seja, f(x) = ϕ(x) = α3x2 (neste caso temos apenas uma função g(x) = x2 ). Temos então o sistema abaixo:                   =                                   ∑ ∑ ∑ ∑∑∑ ∑∑∑ ∑∑ = = = === === == m i ii m i ii m i i m i i m i i m i i m i i m i i m i i m i i m i i xfx xfx xf xxx xxx xxm 1 2 1 1 31 4 1 3 1 2 1 3 1 2 1 1 2 1 )( )( )( 0 0 . α
  • 103. 102 ou seja, ∑= m i ix 1 2 α3 = ∑= m i ixf 1 )( ∑= m i ix 1 3 α3 = ∑= m i ii xfx 1 )( ∑= m i ix 1 4 α3 = ∑= m i ii xfx 1 2 )( Tomando a última equação temos: m = 11 ∑= m i ix 1 4 = (1) + (0.3164) + (0.1296) + (0.0625) + (0.0081) + (0) + (0.0016) + (0.0256) + (0.0625) + (0.2401) + (1) = 2.8464 ∑= m i ii xfx 1 2 )( = (2.05) + (0.6486) + (0.162) + (0.1) + (0.145) + (0) + (0.008) + (0.096) + (0.128) + (0.588) + (2.05) = 5.8756 Assim, a nossa equação é 2.8464α3 = 5.8756 ⇒ α3 = 8464.2 8756.5 = 2.0642 Portanto, ϕϕϕϕ(x) = 2.0642x2 é a parábola que melhor se aproxima, no sentido dos quadrados mínimos, da função tabelada. Exercício 1: Ajustar os pontos da tabela abaixo à equação ϕ(x) = α1 + α2 x + α3x2 . i 1 2 3 4 5 6 7 xi –0.75 –0.5 –0.25 0 0.25 0.5 0.75 f(xi) 1.3 1.1 0.2 0 0.5 0.6 1.5 Resposta: ϕϕϕϕ(x) = 0.176190476 - 0.024285714x + 2.2666666x2 . ∑= m i ixr 1 2 )( = 0.25095238095238
  • 104. 103 8 Integração Numérica 8.1 Introdução Do ponto de vista analítico existem diversas regras, que podem ser utilizadas na prática. Contudo, embora tenhamos resultados básicos e importantes para as técnicas de integração analítica, como o Teorema Fundamental do Cálculo Integral, nem sempre podemos resolver todos os casos. Não podemos sequer dizer que para uma função simples a primitiva também será simples, pois f(x) = 1/x, que é uma função algébrica racional, possui uma primitiva que não o é; a sua primitiva é a função ln(x) que é transcendente. Quando não conseguirmos calcular a integral por métodos analíticos, mecânicos ou gráficos, então podemos recorrer ao método algorítmico. Em algumas situações, só podemos usar o método numérico. Por exemplo, se não possuirmos a expressão analítica de f, não podemos, em hipótese nenhuma, usar outro método que não o numérico. A integração numérica pode trazer ótimos resultados quando outros métodos falham. A solução numérica de uma integral simples é comumente chamada de quadratura. Sabemos do Cálculo Diferencial e Integral que se f(x) é uma função contínua em [a, b], então esta função tem uma primitiva neste intervalo, ou seja, existe F(x) tal que ∫ f(x) dx = F(x) + C, com F’(x) = f(x); demostra-se que, no intervalo [a, b], f x dx F b F a a b ( ) ( ) ( )= −∫ tais métodos, embora variados, não se aplicam a alguns tipos de integrandos f(x), não sendo conhecidas suas primitivas F(x); para tais casos, e para aqueles em que a obtenção da primitiva, embora viável, é muito trabalhosa, podem-se empregar métodos para o cálculo do valor numérico aproximado de f x dx a b ( )∫ . A aplicação de tais métodos é obviamente necessária no caso em que o valor de f(x) é conhecido apenas em alguns pontos, num intervalo [a, b], ou através de um gráfico. Lembrando que f x dx a b ( )∫ = n i i n lim f x xi →∞ = ∑ ( ) 1 ∆ (Riemann), onde xi ∈ [xi-1, xi] partes de [a, b], com x0 = a, xn = b e ∆xi = | xi – xi-1 |, para n suficientemente grande e ∆xi suficientemente pequeno, f x xi i n i( ) = ∑ 1 ∆ representa uma boa aproximação para f x dx a b ( )∫ . Convém lembrar, também, que, sendo f(x) não negativa em [a, b], f x dx a b ( )∫ representa, numericamente, a área da figura delimitada por y = 0, x = a, x = b e y = f(x), como mostra a figura abaixo:
  • 105. 104 y x0 ba y=f(x) A A = f x dx a b ( )∫ Quando f(x) não for somente positiva, pode-se considerar f(x) em módulo, para o cálculo da área, conforme figura abaixo: y x0 b a y=f(x) A A c A = f x f x dx c b a c ( ) | ( )|+ ∫∫ ou A = | ( )|f x dx a b ∫ A idéia básica da integração numérica é a substituição da função f(x) por um polinômio que a aproxime razoavelmente no intervalo [a, b]. Assim o problema fica resolvido pela integração de polinômios, o que é trivial de se fazer. Com este raciocínio podemos deduzir fórmulas para aproximar f x dx a b ( )∫ . As fórmulas que deduziremos terão a expressão abaixo: f x dx a b ( )∫ ≈ A0 f(x0) + A1 f(x1) + ... + An f(xn),xi ∈ [a, b], i = 0, 1, ..., n. 8.1.1 Fórmulas de Newton-Cotes Nas fórmulas de Newton-Cotes a idéia de polinômio que aproxime f(x) razoavelmente é que este polinômio interpole f(x) em pontos de [a, b] igualmente espaçados. Consideremos a partição do intervalo [a, b] em subintervalos, de comprimento h, [xi, xi+1], i = 0, 1, ..., n-1. Assim xi+1 − xi = h = (b − a)/n. As fórmulas fechadas de Newton-Cotes são fórmulas de integração do tipo xo = a, xn = b e f x dx a b ( )∫ = f x dx x xn ( ) 0 ∫ ≅ A0 f(x0) + A1 f(x1) + ... + An f(xn) = A f xi i i n = ∑ 0 ( ), sendo os coeficientes Ai determinados de acordo com o grau do polinômio aproximador. Analisaremos a seguir algumas das fórmulas fechadas de Newton-Cotes como regra dos retângulos, regra dos trapézios e regra de Simpson.
  • 106. 105 Existem ainda as fórmulas abertas de Newton-Cotes, construídas de maneira análoga às fechadas, com xo e xn ∈ (a, b). 8.2 Regra dos Retângulos Seja o intervalo finito [a, b] no eixo x que é particionado em n subintervalos igualmente espaçados [xi, xi+1], com x0 = a e xn = b e hi = xi+1 − xi. Seja f uma função contínua ou simplesmente Riemann integrável, cuja integral não é conhecida. Nosso objetivo é calcular f x dx a b ( )∫ pelo método da área dos retângulos. Tais retângulos podem ser considerados de diversas maneiras, conforme mostra as figuras abaixo: R1 R2 R3 R1 R2 R3 R1 R3 (a) (b) (c) R2 No primeiro caso, figura (a), a área de cada retângulo é f(xi) • hi; no segundo caso é f(xi+1)•hi e no último f((xi + xi+1)/2) • hi. Em qualquer caso a soma das áreas dos retângulos será uma aproximação para f x dx a b ( )∫ . Subdividindo o intervalo [a, b] em n subintervalos, pela regra dos retângulos, que será indicado por R(h), é dada pelas fórmulas: R(hn) = ihxf n i i ).( 1 0 ∑ − = , ou R(hn) = ihxf n i i ).( 1 0 1∑ − = + , ou R(hn) = ih xx f n i ii . 2 1 0 1 ∑ − = +       + conforme for tomado o caso (a) ou (b) ou (c) da figura acima. Como hi é constante, temos h b a n = − . Então : R(hn) = )( 1 0 ∑ − = n i ixfh ou R(hn) = )( 1 0 1∑ − = + n i ixfh ou
  • 107. 106 R(hn) = ∑ − = +       +1 0 1 2 n i ii xx fh Em geral, quando utilizarmos a regra dos retângulos iremos efetuar os cálculos através do caso (c), ou seja, R(hn) = ∑ − = 1 0 )( n i ixfh , sendo xi = 2 1++ ii xx . 8.2.1 Exemplos Exemplo 1: Calcular x x dx 1 2 0 1 +∫ . Considere n = 10 e 4 casas decimais com arredondamento. a) Número de intervalos: n = 10 b) Tamanho do intervalo h b a n = − = (1 − 0) / 10 = 0.1 c) iterações: i xi f( xi ) 0 (0 + 0.1) = 0.05 0.0499 1 (0.1 + 0.2) = 0.15 0.1467 2 (0.2 + 0.3) = 0.25 0.2353 3 (0.3 + 0.4) = 0.35 0.3118 4 (0.4 + 0.5) = 0.45 0.3742 5 (0.5 + 0.6) = 0.55 0.4223 6 (0.6 + 0.7) = 0.65 0.4569 7 (0.7 + 0.8) = 0.75 0.4800 8 (0.8 + 0.9) = 0.85 0.4935 9 (0.9 + 1) = 0.95 0.4993 Σ − 3.4699 R(0.1) = h f xi( )∑ = (0.1).(3.4699) = 0.34699 d) método analítico: x x dx 1 2 0 1 +∫ = 1 2 1 1 2 2 1 0 346572 0 1 ln( ) (ln( ) ln( )) ,+   = − =x . Exemplo 2: Quando não for possível conhecer f(xi) pode-se usar f( xi ) = (f(xi-1) + f(xi))/2, para o cálculo anterior, ter-se-ia: a) Número de intervalos: n = 10 b) Tamanho do intervalo: h b a n = − = (1 − 0) / 10 = 0.1 c) iterações:
  • 108. 107 i f(xi) f( xi ) −1 0 − 0 0.0990 0.0495 1 0.1923 0.1457 2 0.2752 0.2338 3 0.3448 0.3100 4 0.4000 0.3724 5 0.4412 0.4206 6 0.4698 0.4555 7 0.4878 0.4788 8 0.4972 0.4925 9 0.5000 0.4986 Σ − 3.4574 R(0.1) = h f xi( )∑ = (0.1).(3.4574) = 0.34574 Exercício 1: Calcular 3 1 1 x dx − ∫ , para n = 8. R(0.25) = h f xi( )∑ = (0.25).(0.0000) = 0.0000 método analítico: 3 1 1 x dx − ∫ = 4 4 1 4 1 4 0 1 1 x     = − = − . 8.3 Regra dos Trapézios Seja o intervalo finito [a, b] no eixo x que é particionado em n subintervalos igualmente espaçados [xi, xi+1], com x0 = a e xn = b e hi = xi+1 − xi. Seja f uma função contínua ou simplesmente Riemann integrável, cuja integral não é conhecida. Numericamente: A regra dos trapézios é obtida aproximando-se f por um polinômio interpolador do 1º grau (ao invés de zero, como na regra dos retângulos). Se usarmos a fórmula de Lagrange para expressar o polinômio p1(x) que interpola f(x) em x0 e x1 temos: T b a b a Idxxf h xx xf h xx dxxpdxxf x x x x =      − + − − =≈ ∫∫∫ = = 1 0 1 0 )( )( )( )( )()( 1 0 0 1 1 Assim, IT = [ ])()( 2 10 xfxf h + , que é a área do trapézio de altura h = x1 − x0 e bases f(x0) e f(x1). Geometricamente: Podemos ver, conforme mostra a figura abaixo: f(xi+1) f(x) f(xi) xi+1xi P1(x) Interpretação geométrica da regra dos trapézios
  • 109. 108 A área de cada trapézio é (f(xi) + f(xi+1))/2 • hi. A soma destas áreas será uma aproximação para f x dx a b ( )∫ . 8.3.1 Regra do Trapézio Repetida Dividindo o intervalo [a, b] em n subintervalos, pela regra dos trapézios, o resultado, que será indicado por T(h), é dada pela fórmula: i n i ii n h xfxf hT ). 2 )()( ()( 1 0 1 ∑ − = ++ = Como hi é constante, temos h b a n = − . Então : ) 2 )()( ()( 1 0 1 ∑ − = ++ = n i ii n xfxf hhT ou [ ])()(2...)(2)(2)( 2 )( 1210 nnn xfxfxfxfxf h hT +++++= − 8.3.2 Exemplos Exemplo 1: Calcular ∫ 6,3 0,3 1 dx x pela regra dos trapézios e, depois, analiticamente. Considere n = 6 e 4 casas decimais com arredondamento. a) Número de intervalos: n = 6 b) Tamanho do intervalo: h b a n = − = (3.6 − 3.0) / 6 = 0.1 c) iterações: i xi f(xi) ci ci. f(xi) 0 3.0 0.3333 1 0.3333 1 3.1 0.3226 2 0.6452 2 3.2 0.3125 2 0.6250 3 3.3 0.3030 2 0.6060 4 3.4 0.2941 2 0.5882 5 3.5 0.2857 2 0.5714 6 3.6 0.2778 1 0.2778 Σ − − − 3.6469 [ ])()(2...)(2)(2)( 2 )( 652106 xfxfxfxfxf h hT +++++= T(0.1) = 2 1.0 (3.6469) = 0,182345
  • 110. 109 d) método analítico: ∫ 6,3 0,3 1 dx x = ] 6,3 0,3 )ln(x = ln(3.6) − ln(3.0) = 0.18232156 Exercício 1: Calcular ∫ + 1 0 )32( dxx pela regra dos trapézios e, depois, analiticamente. Considere n = 1 e 4 casas decimais com arredondamento. T(1) = 2 1 (8) = 4 método analítico: ∫ + 1 0 )32( dxx = ] 1 0 2 3xx + = 1 + 3 − (0 + 0) = 4 Como a regra dos trapézios aproxima por uma reta e a função integranda é f(x) = 2x + 3 (uma reta), o valor da integral obtido é exato. Exercício 2: Calcular x x dxln( ) 1 2 ∫ pela regra dos trapézios, considerando diversos valores para n e, depois, analiticamente. T(1) = 2 1 (1.3863) = 0.6932 T(0.5) = 2 5.0 (2.6027) = 0.6507 T(0.25) = 2 25.0 (5.1191) = 0,6399 T(0.125) = 2 125.0 (10.1951) = 0,6372 método analítico: x x dxln( ) 1 2 ∫ = 2 2 1 2 2 2 1 2 2 4 2 4 x x x x x xln( ) ln( ) ] ]− = − = = 0.63629436 8.4 Regra de Simpson A regra de Simpson é obtida aproximando-se f por um polinômio interpolador de 2° grau, ou seja, uma parábola. Numericamente: Novamente podemos usar a fórmula de Lagrange para estabelecer a fórmula de integração resultante da aproximação de f(x) por um polinômio de grau 2. Seja p2(x) o polinômio que interpola f(x) nos pontos x0 = a, x1 = x0 + h e x2 = x0 + 2h = b: p x x x x x h h f x x x x x h h f x x x x x h h f x2 1 2 0 0 2 1 0 1 2 2 2 ( ) ( )( ) ( )( ) ( ) ( )( ) ( )( ) ( ) ( )( ) ( )( ) ( )= − − − − + − − − + − − Assim,
  • 111. 110 f x dx f x dx p x dx a b x x x x ( ) ( ) ( )∫ ∫ ∫= ≈ = 0 2 0 2 2 f x h x x x x dx f x h x x x x dx f x h x x x x dx x x x x x x ( ) ( )( ) ( ) ( )( ) ( ) ( )( ) 0 2 1 2 1 2 0 2 2 2 0 1 2 20 2 0 2 0 2 − − − − − + − −∫ ∫∫ Resolvendo as integrais obtemos a regra de Simpson: f x dx h f x f x f x Is x x ( ) ( ) ( ) ( )[ ]≈ + + =∫ 3 40 1 2 0 2 Geometricamente: Podemos ver, conforme mostra a figura abaixo: f x0 =a p2 (x) x2 =bx1 h h Interpretação geométrica da regra de Simpson simples 8.4.1 Regra de Simpson Repetida Aplicando a regra de Simpson repetidas vezes no intervalo [a, b] = [x0, xn]. Vamos supor que x0, x1, ..., xn são pontos igualmente espaçados, h = xi+1 − xi, e n é par (isto é condição necessária pois cada parábola utilizará três pontos consecutivos). Assim teremos: f x dx a b ( )∫ ≅ [ ])()(4...)(2)(4)(2)(4)( 3 )( 143210 nnn xfxfxfxfxfxfxf h hS +++++++= − 8.4.2 Exemplos Exemplo 1: Calcular uma aproximação para x e dx 0 1 ∫ usando a regra de Simpson com n = 10. a) Número de intervalos: n = 10 b) Tamanho do intervalo: h b a n = − = (1 − 0) / 10 = 0.1 c) iterações: i xi f(xi) ci ci. f(xi) 0 0.0 1 1 1 1 0.1 1.1052 4 4.4208
  • 112. 111 2 0.2 1.2214 2 2.4428 3 0.3 1.3499 4 5.3996 4 0.4 1.4918 2 2.9836 5 0.5 1.6487 4 6.5948 6 0.6 1.8221 2 3.6442 7 0.7 2.0138 4 8.0552 8 0.8 2.2255 2 4.4510 9 0.9 2.4596 4 9.8384 10 1.0 2.7183 1 2.7183 Σ − − − 51.5487 S h e e e e e e e( ) , [ ... ], , , , , , , 10 0 0 0 1 0 2 0 3 0 8 0 9 1 00 1 3 4 2 4 2 4= + + + + + + + = 1,71829 d) método analítico: x e dx 0 1 ∫ = x e e e0 1 1 0 2 7182818 1 1 7182818] , ,= − = − = Exercício 1: Calcular o valor de π, dado pela expressão 4 ∫ + 1 0 2 1 1 dx x , considerando n = 10. S h f x f x f x f x f x f x f x( ) , [ ( ) ( ) ( ) ( ) ... ( ) ( ) ( )]10 0 1 2 3 8 9 10 0 1 3 4 2 4 2 4= + + + + + + + = 3,14157 método analítico: 4 ∫ + 1 0 2 1 1 dx x = 4( ] 1 0 )(xarctg ) = 4.(arctg(1) − arctg(0)) = 3.14159265 Exercício 2: Calcular x x dxln( ) 1 2 ∫ pela regra de Simpson, considerando diversos valores para n e, depois, analiticamente. S(0.5) = 3 5.0 (3.8191) = 0,6365 S(0.25) = 3 25.0 (7.6355) = 0.63629167 S(0.25) = 3 125.0 (15.2711) = 0,63629583 método analítico: x x dxln( ) 1 2 ∫ = 2 2 1 2 2 2 1 2 2 4 2 4 x x x x x xln( ) ln( ) ] ]− = − = = 0.63629436 Exercício 3: Calcular uma aproximação para 2 0 1 1x dx+∫ usando Simpson com n = 2. ]2)25.1(41[ 3 5.0 )5.0( ++=S = 4 3 = 1.33333...
  • 113. 112 método analítico: 2 0 1 1x dx+∫ = 3 0 1 3 3 3 1 3 1 0 3 0 4 3 x x+ = + − + =] ( ) ( ) = 1.33333... Como a regra de Simpson se aproxima por uma parábola e, sendo f(x) = x2 + 1 uma parábola, o valor da integral obtido é exato independente do número de subintervalos utilizado no cálculo. 9 Solução Numérica de Equações Diferenciais Ordinárias 9.1 Introdução A equação diferencial é definida como uma equação que envolve uma função e algumas de suas derivadas, da forma: )](),.......,(''),(',[)( )1()( xyxyxyxfxy nn − = Na engenharia a utilização de equações diferenciais tem como objetivo descrever o comportamento dinâmico de sistemas físicos. Uma equação diferencial pode descrever o comportamento dinâmico do circuito mostrado na figura: S V(t)=sin(3,5t) i(t) Ao fechar-se a chave S, pode-se analisar o comportamento dinâmico do circuito a partir da Lei de Kirchoff para tensões: ∫++= dtti Cdt tdi LtRitV )( 1)( )()( Derivando a equação: )( 1)()()( 2 2 ti Cdt tid L dt tdi R dt tdV ++= Substituindo a expressão da tensão e rearranjando a equação, tem-se: )5,3cos( 5,3 1 )( 1)()( 2 2 tti Cdt tdi R dt tid L =++ 9.2 Tipos de Equações Diferenciais 9.2.1 Equações Diferenciais Ordinárias São equações diferenciais que possuem apenas uma variável independente. Exemplos: 1.1.1.1.2 1.1.1.1.1 1.1.1.1.3
  • 114. 113 yx dx dy += y é função de x; x é a única variável independente. 22 yx dt dy += y e x são função de t; t é a única variável independente. 0)1( 2 2 2 =+−+ y dt dy y dt yd y é função de t; t é a única variável independente. 9.2.2 Equações Diferenciais Parciais Quando a equação diferencial envolve mais de uma variável independente. Exemplo: 02 2 2 2 = ∂ ∂ + ∂ ∂ y u x u u é função de x e y; x e y são variáveis independentes. 9.3 Solução de Equações Diferenciais Determinadas equações diferenciais podem ser solucionadas de forma simbólica, cuja solução é uma expressão literal. Isto nem sempre é possível. Neste caso, a solução é a utilização de integração numérica, como será visto na sequência. Exemplo : y dx dy = ⇒ dx y dy = ⇒ ∫ ∫= dx y dy ⇒ 21)ln( cxcy +=+ xcx aeexy == + )( Observe que a solução da equação diferencial resulta numa família de curvas que dependem da constante a, como pode ser visto na figura abaixo. Uma solução particular pode ser obtida a partir das condições iniciais do problema. A especificação de uma condição inicial define uma solução entre a família de curvas.
  • 115. 114 Suponha no exemplo dado que o problema tem como solução inicial 1)0( =y . Portanto: 11)( 0 =⇒=⇒= aaeaexy x A solução x exy ⋅=1)( é a solução para a condição inicial dada. Quando as condições iniciais estão associadas a um único valor da variável independente, define-se como um problema de valor inicial – (PVI). Quando as condições iniciais estão associadas mais de um valor da variável independente, define-se como um problema de valor de contorno – (PVC). Normalmente, problemas tendo como variável independente o tempo, são problemas de valor inicial. 9.4 Ordem de uma Equação Diferencial Ordinária A ordem da equação é determinada pela derivada de maior ordem. Seja o exemplo de uma equação diferencial ordinária de ordem n: )](),.......,(''),(',[)( )1()( xyxyxyxfxy nn − = 9.5 Redução de Equações Diferenciais Ordinárias Uma equação ordinária de ordem superior pode ser reduzido a um sistema de equações diferenciais de primeira ordem. A redução é feita a partir da definição de variáveis auxiliares. Seja a equação diferencial de ordem m com também m condições iniciais: )](),.......,(''),('),(,[)( )1()( xyxyxyxyxfxy mm − = m m cxy cxy cxy = = = − )( )( )( 0 )1( 20 ' 10 M Esta equação pode ser transformada em um sistema de equações diferenciais com m equações, como descreve-se abaixo: -1 -0.5 0 0.5 1 1.5 2 0 5 10 15 20 25 30 35 40 45 y (x) x
  • 116. 115 )](),.......,(''),('),(,[)()( )()()( )()()( )()()( )()()( )()( )1()(' )1(' 1 4 '''' 3 3 "' 2 2 '' 1 1 xyxyxyxyxfxyxz xzxyxz xzxyxz xzxyxz xzxyxz xyxz mm m m m m − − − == == == == == = M Tem-se portanto um sistema com m equações diferenciais de primeira ordem:            === === === === === − − − − ),...,,,()](),.......,(''),(',[)()( ),...,,,()()()( ),...,,,()()()( ),...,,,()()()( ),...,,,()()()( 21 )1()(' 211 )1(' 1 2134 '''' 3 2123 "' 2 2112 '' 1 mm mm m mmm m m m m m zzzxfxyxyxyxfxyxz zzzxfxzxyxz zzzxfxzxyxz zzzxfxzxyxz zzzxfxzxyxz M Com as condições iniciais dadas por: m m m cxyxz cxyxz cxyxz cxyxz cxyxz == == == == == − )()( )()( )()( )()( )()( 0 )1( 0 40 ''' 04 30 " 03 20 ' 02 1001 M Este artifício deve sempre ser utilizado quando da solução de equações diferenciais por métodos numéricos, pois só pode-se integrar numericamente equações de primeira ordem. Observe que o sistema de equações modela o comportamento dinâmico do problema. Exemplo 8.2: Reduzir as Equações Diferenciais Ordinárias (EDO’s) a sistemas de EDO’s de primeira ordem. a) )(2)(3)( ''' xyxyxy −= , 1)0( −=y e 0)0(' =y 12 '"' 2 2 '' 1 1 232)(3)()( )()()( )()( zzyxyxyxz xzxyxz xyxz −=−== == = Resultando no sistema:
  • 117. 116 0)0(1)0( ),,(23)( ),,()()( 21 21212 ' 2 2112 ' 1 =−=     =−= == zz zzxfzzxz zzxfxzxz b) )()1()cos()1( 222'''''' yxsinyxyxyxyxy ++=−−+++ 3,3)0(2,2)0(1,1)0( ''' === yyy Reescrevendo a equação, tem-se: )()1()cos()1( 222'''''' yxsinyxyxyxyxy +++−+−+−= )()1()cos()1()()( 1 2 1 2 1 2 23 '''' 3 3 "' 2 2 '' 1 1 zxsinzxzxzxzxxyxz zyz zyz yz +++−+−+−== == == = Resultando no sistema: 3,3)0(2,2)0(1,1)0( ),,,()()1()cos()1()()( ),,,( ),,,( 321 32131 2 1 2 1 2 23 '''' 3 32123 "' 2 32112 '' 1 ===       =+++−+−+−== === === zzz zzzxfzxsinzxzxzxzxxyxz zzzxfzyz zzzxfzyz 9.6 Solução Numérica de Equações Diferenciais Ordinárias – Problema de Valor Inicial Considere a equação diferencial ordinária: ),(' yxfy = com condição inicial 00 )( yxy = A solução da equação diferencial acima é uma função do tipo )(xy , conforme ilustrada abaixo: X x0 X x1 X X X x2 x3 .... xn y(x0) y(x1) y(x2) y(x3) y(xn) y (x) x
  • 118. 117 Com a solução numérica de uma equação diferencial, obtém-se uma aproximação para os valores )(),......,(),(),(),( 3210 nxyxyxyxyxy , ou seja: x 1x 2x 3x ......... nx y 1y 2y 3y ......... ny Considera-se que a notação njxy j ,...,2,1),( = indica a solução exata da EDO nos pontos nxxxx ,...,,, 321 , e njy j ,....,2,1, = indica a solução aproximada obtida por método numérico. Na solução numérica não se determina a expressão literal da função )(xy , mas aproximações para pontos da função )(xy . Com os valores aproximados obtidos, pode-se plotar a curva. Em aplicações da engenharia, normalmente estuda-se o comportamento dinâmico de determinadas variáveis, portanto necessita-se a evolução das variáveis em função da variável independente. Com a curva plotada, pode-se estudar esta evolução. 9.6.1 Método de Euler Seja a solução de uma equação diferencial do tipo: ),( yxf dx dy = com valor inicial 00 )( yxy = A solução desta equação resulta numa função )(xy , como mostrado no gráfico: y(x) A partir da equação diferencial, pode-se observar que a derivada da função )(xy em um ponto qualquer x é dada por f(x,y). Conhecendo-se a derivada da função )(xy no ponto 0x , ou seja [ ),( 00 yxf ] , pode-se estimar o valor da função )(xy no ponto 1x por meio de relações trigonométricas: )( 1xy 0x 1x 1y )(xy x Reta Tangente no ponto x 01 xxh −= 0y
  • 119. 118 ),(),(),()( 0001 01 00 01 01 00 yxhfyy h yy yxf xx yy yxftg +=⇒ − =⇒ − − ==α Esta relação pode ser generalizada para um ponto i qualquer, resultando na forma de recorrência para solução de equações diferenciais pelo Método de Euler: Exemplo: Achar aproximações para a solução o problema de valor inicial, na malha [0,1] e h=0,1, dado por: 2' +−= yxy para 2)0( =y A solução desta equação resulta em uma função )(xy , como mostrada na figura abaixo. Resolvendo esta equação através do Método de Euler, iremos determinar aproximações para pontos de )(xy . 20 00 == yx 01 yyy −=∆01 xxh −= α ),( 111 −−− += iiii yxhfyy 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 2 2.5 3 y (x) x
  • 120. 119 01,2)221,0(1,02),( 1112 =+−⋅+=+= hyxfyy 01,22,01,01,0 212 ==+=+= yhxx 029,2)201,22,0(1,001,2),( 2223 =+−⋅+=+= hyxfyy 029,23,01,02,0 323 ==+=+= yhxx 0561,2)2029,23,0(1,0029,2),( 3334 =+−⋅+=+= hyxfyy 0561,24,01,03,0 434 ==+=+= yhxx 09049,2)20561,24,0(1,00561,2),( 4445 =+−⋅+=+= hyxfyy Na figura abaixo está plotada a solução numérica e a solução exata, observe que para efeitos práticos podemos observar o comportamento dinâmico da variável, que é o quê normalmente interessa em aplicações da engenharia. Na tabela abaixo, mostra-se os valores calculados comparados aos valores exatos: j jx jy )( jxy )( jj xyy − 0 0 2,0000000 2,0000000 0,000000 1 0,1 2,0000000 2,0048370 -0,004837 2 0,2 2,0100000 2,0187310 -0,008731 3 0,3 2,0290000 2,0408180 -0,011818 4 0,4 2,0561000 2,0703200 -0,014220 5 0,5 2,0904900 2,1065310 -0,016041 6 0,6 2,1314410 2,1488120 -0,-17371 7 0,7 2,1782969 2,1965850 -0,018288 8 0,8 2,2304672 2,2493290 -0,018862 9 0,9 2,2874205 2,3065700 -0,019149 10 1,0 2,3486784 2,3678790 -0,019201 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 2 2.5 3 solução numérica solução exata
  • 121. 120 9.7 Análise do Erro para o Método de Euler na Solução Numérica do Problema de Valor Inicial Os erros cometidos são de duas naturezas: a) Erros de truncamentos causados pelo tipo de técnica empregada para a atualização do valor de y; b) Erros de arredondamentos causados pela aritmética de precisão finita utilizadas pelos computadores digitais e pelo modo de se programar. Os erros de truncamento podem ser separados em duas partes: a) Erro de truncamento local: erro cometido num ponto genérico 1+kx , determinado pela diferença do valor aproximado 1+ky e o valor no ponto 1+kx da solução da equação diferencial que passa em 1+ky ; b) Erro de truncamento acumulado: erros cometidos pelas aproximações produzidas nos passos anteriores. É determinado pela diferença entre o valor aproximado 1+ky com o valor exato )( 1+kxy . O erro de truncamento local é determinado pela expressão: )( !2 '' 2 ξy h ET = jj xx <<− ξ1 O valor de ξ é desconhecido, entretanto, pode-se definir um majorante para o erro de truncamento local. Se )(xy possui derivada contínua num intervalo fechado ],[ 1+nn xx , que contém os pontos sobre os quais está sendo feita a discretização, então existe: ],[)(max 1 )1( 1 + + + ∈= nn k k xxxxyM 1y 1x )( 1xy 0x 2x 2y Erro Local Erro Acumulado = Erro Local 3x )( 2xy )( 3xy 3y )( 0xy Erro Acum . Solução y(x) do PVI Sol. da EDO em )(xy Solução da EDO em Solução da EDO em Erro Erro x
  • 122. 121 Assim: ],[)( 12 )2( +∈∀≤ nn xxMy ξξ !2 )( 2 2 1 hM xE kT ≤+ Observe que o erro de truncamento local é proporcional ao passo de integração ao quadrado. O erro acumulado também pode ser limitado por um majorante: Suponha que )(xy represente solução única do problema de valor inicial: α=≤≤= )(),(' aybxayxfy e nyyy ,.......,, 21 sejam as aproximações geradas pelo Método de Euler. Se f(x,y) for contínua para todo x no intervalo [a,b] e todo y no intervalo ),( ∞−∞ e ainda existem as constantes L e C, tais que: L x xyxf ≤ ∂ ∂ ))(,( e Cxy ≤)('' então para cada ni ,......2,1= : [ ]1 2 )( )( −≤− −axL ii i e L hC yxy Pode-se observar que para a determinação dos erros de truncamento local e acumulado, necessita-se do valor maxímo da segunda derivada de y(x), o que restringe sua utilização na prática. Também é importante observar-se que o erro tende a zero quando h tende a zero. Tarefa: Seja o problema do Exemplo: 2' +−= yxy para 2)0( =y A solução desta equação diferencial é dada por: 1)( ++= − xexy x Determine o limite do erro acumulado nos pontos da malha [0,1], com 1,0=h , quando da solução da equação diferencial pelo Método de Euler, e compare com o erro real calculado no Exemplo 8.3. 9.8 Método de Euler Modificado Para melhorar a qualidade da estimativa, a tangente a ser considerada não é a do ponto inicial do intervalo, mas no ponto médio.
  • 123. 122 y(x) Utilizando o Método de Euler, calcula-se o valor 2/1+iy , no meio do intervalo, a partir da tangente ),( ii yxf : 2 ),(2/1 h yxfyy iiii +=+ Com os valores 2/1+ix e 2/1+iy , determina-se a reta tangente no meio do intrvalo: ),( 2/12/1 ' 2/1 +++ = iii yxfy Esse valor é assumido representar uma inclinação média do intervalo inteiro. Assim, determina-se o valor de y no ponto 1+ix : hyyhyxfyy iiiiii ⋅+=⋅+= ++++ ' 2/12/12/11 ),( Observe que a diferença em relação ao Método de Euler normal é a utilização da inclinação no meio do intervalo. Exemplo: Repita o exemplo anterior, utilizando o Método de Euler Modificado. 2' +−= yxy para 2)0( =y malha [0,1], h=0,1. Os resultados parciais são apresentados a seguir de acordo com a sequência: 2 2/1 h xx jj +=+ 2 ),(2/1 h yxfyy jjjj +=+ hyyhyxfyy jjjjjj ⋅+=⋅+= ++++ ' 2/12/12/11 ),( hxx jj +=+1 )( jj xyyres −= )( 1+ixy ix 1+ix 1+iy )(xy x Reta Tangente no ponto +x 2 2/1 h xx ii +=+ iy 2/1+ix 2/1+iyReta Tangente no ponto ix
  • 124. 123 j = 1 xmedio = 0.05000000000000 ymedio = 2 yj = 2.00500000000000 xj = 0.10000000000000 erro = 1.629999999996912e-004 j = 2 xmedio = 0.15000000000000 ymedio = 2.00975000000000 yj = 2.01902500000000 xj = 0.20000000000000 erro = 2.940000000002385e-004 j = 3 xmedio = 0.25000000000000 ymedio = 2.02807375000000 yj = 2.04121762500000 xj = 0.30000000000000 erro = 3.996250000004586e-004 j = 4 xmedio = 0.35000000000000 ymedio = 2.05415674375000 yj = 2.07080195062500 xj = 0.40000000000000 erro = 4.819506250002270e-004 j = 5 xmedio = 0.45000000000000 ymedio = 2.08726185309375 yj =2.10707576531563 xj = 0.50000000000000 erro = 5.447653156251953e-004 j = 6 xmedio = 0.55000000000000 ymedio = 2.12672197704984 yj = 2.14940356761064 xj = 0.60000000000000 erro = 5.915676106407197e-004 j = 7 xmedio = 0.65000000000000 ymedio = 2.17193338923011 yj = 2.19721022868763 xj = 0.70000000000000 erro = 6.252286876300417e-004 j = 8 xmedio = 0.75000000000000 ymedio = 2.22234971725325 yj = 2.24997525696230 xj = 0.80000000000000 erro = 6.462569623049141e-004 j = 9 xmedio = 0.85000000000000 ymedio = 2.27747649411419 yj = 2.30722760755089 xj = 0.90000000000000 erro = 6.576075508859525e-004 j = 10 xmedio = 0.95000000000000 ymedio = 2.33686622717334 yj = 2.36854098483355 xj = 1.00000000000000 erro = 6.619848335516210e-004 Na tabela abaixo, mostra-se os valores calculados comparados aos valores exatos: Exato Euler Erro Euler Mod. Erro j jx )( jxy jy )( jj xyy − jy )( jj xyy − 0 0 2,0000000 2,0000000 0,000000 2,0000000 0,0000000 1 0,1 2,0048370 2,0000000 -0,004837 2,0050000 0,0001629 2 0,2 2,0187310 2,0100000 -0,008731 2,0190250 0,0002940 3 0,3 2,0408180 2,0290000 -0,011818 2,0412176 0,0003996 4 0,4 2,0703200 2,0561000 -0,014220 2,0708019 0,0004819 5 0,5 2,1065310 2,0904900 -0,016041 2,1070757 0,0005447 6 0,6 2,1488120 2,1314410 -0,-17371 2,1494035 0,0005915 7 0,7 2,1965850 2,1782969 -0,018288 2,1972102 0,0006252
  • 125. 124 8 0,8 2,2493290 2,2304672 -0,018862 2,2499752 0,0006425 9 0,9 2,3065700 2,2874205 -0,019149 2,3072276 0,0006576 10 1,0 2,3678790 2,3486784 -0,019201 2,3685409 0,0006619 9.8.1 Método Heum No Método de Euler Modificado a inclinação do intervalo é determinada no ponto médio do intervalo. No Método de Heum, a inclinação do intervalo é determinada pela média aritmética das inclinações no início e no fim do intervalo. Para o cálculo da inclinação no fim do intervalo, faz-se uma estimativa do valor da solução ( 1+iy ) pelo Método de Euler com o valor da inlinação do início do intervalo )],([ ii yxf : hyxfyy iiii ⋅+=+ ),(0 1 Observe que o superescrito 0 em 1+iy é para indicar que é apenas uma estimativa, que será utilizada para a determinação da inclinação no ponto 1+ix , ou seja: ),( 0 111 ' +++ = iii yxfy Com o valor da inclinação no final do intervalo, pode-se determinar o valor da inclinação média do intervalo, por meio da média aritmética: [ ] 2 ),(),( 0 11 +++ = iiii yxfyxf MédiaInclinação Tangente no Fim do Intervalo ),( 0 11 ++ ii yxfTangente no Início do Intervalo ),( ii yxf y(x) x ix 1+ix iy 0 1+iy Tangente Média do Intervalo 2/)],(),([ 0 11 iiii yxfyxf +++
  • 126. 125 O valor da função no fim do intervalo é dado por: [ ] h yxfyxf yy iiii ii ⋅ + += ++ + 2 ),(),( 0 111 1 Observe que o cálculo do valor da função no fim do intervalo pode ser repetido até que se alcance uma determinada convergência, ou seja: [ ] h yxfyxf yy iiii ii ⋅ + += ++ + 2 ),(),( 1 112 1 [ ] h yxfyxf yy iiii ii ⋅ + += ++ + 2 ),(),( 3 113 1 M [ ] h yxfyxf yy k iiii i k i ⋅ + += − ++ + 2 ),(),( 1 11 1 A cada nova correção, pode-se fazer um teste do tipo: ε≤− − ++ 1 11 k i k i yy Caso esteja dentro de uma tolerância inicial, pode-se parar a correção. O Método de Heun se enquadra nos chamados métodos previsor x corretor. Faz-se uma estimativa com o previsor e se melhora a estimativa através do corretor. O corretor pode ser repetido até uma convergência determinada. Previsor: hyxfyy iiii ⋅+=+ ),(0 1 Corretor: [ ] h yxfyxf yy iiii ii ⋅ + += ++ + 2 ),(),( 0 111 1 Exemplo: Repita o exemplo 8.3, utilizando o Método de Heun, com uma iteração de correção. 2' +−= yxy para 2)0( =y malha [0,1], h=0,1. Os resultados parciais são apresentados a seguir de acordo com a sequência: hyxfyy iiii ⋅+=+ ),(0 1 hxx ii +=+1 [ ] h yxfyxf yy iiii ii ⋅ + += ++ + 2 ),(),( 0 111 1
  • 127. 126 j = 1 y0 = 2 x = 0.10000000000000 y1 = 2.00500000000000 erro = 1.629999999996912e-004 j = 2 y0 = 2.01450000000000 x = 0.20000000000000 y1 = 2.01902500000000 erro = 2.940000000002385e-004 j = 3 y0 = 2.03712250000000 x = 0.30000000000000 y1 = 2.04121762500000 erro = 3.996250000004586e-004 j = 4 y0 = 2.06709586250000 x = 0.40000000000000 y1 = 2.07080195062500 erro = 4.819506250002270e-004 j = 5 y0 = 2.10372175556250 x = 0.50000000000000 y1 = 2.10707576531563 erro = 5.447653156251953e-004 j = 6 y0 = 2.14636818878406 x = 0.60000000000000 y1 = 2.14940356761064 erro = 5.915676106407197e-004 j = 7 y0 = 2.19446321084958 x = 0.70000000000000 y1 = 2.19721022868763 erro = 6.252286876300417e-004 j = 8 y0 = 2.24748920581887 x = 0.80000000000000 y1 = 2.24997525696230 erro = 6.462569623049141e-004 j = 9 y0 = 2.30497773126607 x = 0.90000000000000 y1 = 2.30722760755089 erro = 6.576075508859525e-004 j =10 y0 = 2.36650484679580 x = 1.00000000000000 y1 = 2.36854098483355 erro = 6.619848335516210e-004 Exato Euler Erro Heun Erro j jx )( jxy jy )( jj xyy − jy )( jj xyy − 0 0 2,0000000 2,0000000 0,000000 2,0000000 0,0000000 1 0,1 2,0048370 2,0000000 -0,004837 2,0050000 0,0001629 2 0,2 2,0187310 2,0100000 -0,008731 2,0190250 0,0002940 3 0,3 2,0408180 2,0290000 -0,011818 2,0412176 0,0003996
  • 128. 127 4 0,4 2,0703200 2,0561000 -0,014220 2,0708019 0,0004819 5 0,5 2,1065310 2,0904900 -0,016041 2,1070757 0,0005476 6 0,6 2,1488120 2,1314410 -0,-17371 2,1494033 0,0005915 7 0,7 2,1965850 2,1782969 -0,018288 2,1972102 0,0006252 8 0,8 2,2493290 2,2304672 -0,018862 2,2499752 0,0006462 9 0,9 2,3065700 2,2874205 -0,019149 2,3072276 0,0006576 10 1,0 2,3678790 2,3486784 -0,019201 2,3685409 0,0006619 Exemplo 8.6: Repita o exemplo 8.3, utilizando o Método de Heun, com três iteração de correção. 2' +−= yxy para 2)0( =y malha [0,1], h=0,1. Os resultados são apresentados na tabela a seguir: Exato Heun ( 1 Corr.) Erro Heun (3 Corr.) Erro j jx )( jxy jy )( jj xyy − jy )( jj xyy − 0 0 2,0000000 2,0000000 0,0000000 2,0000000 0,0000000 1 0,1 2,0048370 2,0050000 0,0001629 2,0047625 -0,0000745 2 0,2 2,0187310 2,0190250 0,0002940 2,0185951 -0,0001358 3 0,3 2,0408180 2,0412176 0,0003996 2,0406342 -0,0001837 4 0,4 2,0703200 2,0708019 0,0004819 2,0700980 -0,0002219 5 0,5 2,1065310 2,1070757 0,0005476 2,1062796 -0,0002513 6 0,6 2,1488120 2,1494033 0,0005915 2,1485390 -0,0002729 7 0,7 2,1965850 2,1972102 0,0006252 2,1962975 -0,0002874 8 0,8 2,2493290 2,2499752 0,0006462 2,2490314 -0,0002975 9 0,9 2,3065700 2,3072276 0,0006576 2,3062667 -0,0003032 10 1,0 2,3678790 2,3685409 0,0006619 2,3675749 -0,0003040 9.8.2 Método Runge-Kutta O Método de Runge-Kutta é determinado a partir da Série de Taylor e sua expressão de recorrência é dada por: hhyxyy iiii ⋅+=+ ),,(1 φ onde ),,( hyx iiφ é chamada de função incremento e pode ser interpretada coma uma inclinação média sobre o intervalo. Genericamente: nnii kakakahyx +++= ...............),,( 2211φ ),(1 ii yxfk = ),( 11112 hkqyhpxfk ii ++= ),( 22212123 hkqhkqyhpxfk ii +++= M )..........,( 1)1)(1(22)1(11)1(1 hkqhkqhkqyhpxfk nnnnninin −−−−−− +++++=
  • 129. 128 9.8.3 Derivação do Método de Runge-Kutta de Segunda Ordem hkakayy ii ⋅++=+ )( 22111 (1) ),(1 ii yxfk = (2) ),( 11112 hkqyhpxfk ii ++= (3) Deve-se determinar os valores das constantes 1a , 2a , 1q e 11q . Expande-se 1+iy em Série de Taylor: !2 ),(),( 2 ' 1 h yxfhyxfyy iiiiii +⋅+=+ (4) Determina-se ),(' ii yxf pela Regra da Cadeia: dx dy y f x f yxf ii ∂ ∂ + ∂ ∂ =),(' (5) Substituindo na expressão (4): !2 ),( 2 1 h dx dy y f x f hyxfyy iiii       ∂ ∂ + ∂ ∂ +⋅+=+ (6) A estratégia do Método de runge-Kutta é através de manipulações algébricas, tornar as expressões (1) e (6) equivalentes. Expande-se a expressão (3) em Série de Taylor: )(),(),( 2 11111111 h y f hkq x f hpyxfhkqyhpxf iiii Ο+ ∂ ∂ + ∂ ∂ +=++ (7) Substituindo (7) em (1): )(),(),(),( 32 112 2 12211 h y f yxfhqa x f hpayxhfayxhfayy iiiiiiii Ο+ ∂ ∂ + ∂ ∂ +++=+ (8) Reagrupando os termos: )(]),([)],(),([ 32 11212211 hh y f yxfqa x f pahyxfayxfayy iiiiiiii Ο+ ∂ ∂ + ∂ ∂ +++=+ (9) Comparando os termos das equações (6) e (9): 2 1 2 1 1 112 12 21 = = =+ qa pa aa Observe que tem-se três equações e quatro incógnitas, portanto tem-se infinitas soluções. Portanto existem infinitos formulações para o Método de Runge-Kutta de Segunda Ordem. É importante realçar que o Método de Heun com uma iteração de correção e o Método de Euler Modificado podem ser classificados como Métodos de Runge-Kutta de Segunda Ordem. 9.8.4 Método de Heun
  • 130. 129 Assumindo : 1 2 1 111 21 == == qp aa hkkyy ii ⋅++=+ ) 2 1 2 1 ( 211 ),(1 ii yxfk = ),( 12 hkyhxfk ii ++= 1k - inclinação no início do intervalo 2k - inclinação no fim do intervalo 9.8.5 Método de Euler Modificado Assumindo : 2 1 1 0 111 2 1 == = = qp a a hkyy ii ⋅+=+ 21 ),(1 ii yxfk = ) 2 , 2 ( 12 k h y h xfk ii ++= O Método de Runge-Kutta mais conhecido é o Método de Ralston. Este método propicia um limite mínimo para o erro de truncamento dos algoritmos de Runge-Kutta de Segunda Ordem. 9.8.6 Método de Ralston Assumindo : 4 3 3 2 3 1 111 2 1 == = = qp a a hkkyy ii ⋅++=+ ) 3 2 3 1 ( 211 ),(1 ii yxfk = ) 4 3 , 4 3 ( 12 hkyhxfk ii ++=
  • 131. 130 Exemplo: Integre a função 8520122),( 23 +−+−= xxxyxf de 0=x até 4=x , passo de integração 5,0=h com as três versões do Método de Runge-Kutta de Segunda Ordem. Condições Iniciais: Para 0=x , 1=y Método de Heun hkkyy ii ⋅++=+ ) 2 1 2 1 ( 211 ),(1 ii yxfk = ),( 12 hkyhxfk ii ++= hkkyy ⋅++= ) 2 1 2 1 ( 2101 5,85,802001202),( 23 001 =+⋅−⋅+⋅−== yxfk 25,15,85,0205,0125,02)25,5,5,0(),( 23 1002 =+⋅−⋅+⋅−==++= fhkyhxfk 4375,35,0 2 25,15,8 1) 2 1 2 1 ( 2101 =⋅      + +=⋅++= hkkyy Método de Euler Modificado: hkyy ii ⋅+=+ 21 ),(1 ii yxfk = ) 2 , 2 ( 12 k h y h xfk ii ++= hkyy ⋅+= 201 5,85,802001202),( 23 001 =+⋅−⋅+⋅−== yxfk 21875,45,825,02025,01225,02 )125,3,25,0()5,8 2 5,0 1, 2 5,0 0() 2 , 2 ( 23 1002 =+⋅−⋅+⋅−= ==⋅++=++= ffk h y h xfk 109375,35,021875,41201 =⋅+=⋅+= hkyy Método de Ralston: hkkyy ii ⋅++=+ ) 3 2 3 1 ( 211 ),(1 ii yxfk = ) 4 3 , 4 3 ( 12 hkyhxfk ii ++= hkkyy ⋅++= ) 3 2 3 1 ( 2101 5,85,802001202),( 23 001 =+⋅−⋅+⋅−== yxfk 582031,25,8375,020375,012375,02 )1875,4,375,0()5,85,0 4 3 1,5,0 4 3 0() 4 3 , 4 3 ( 23 12 =+⋅−⋅+⋅−= ==⋅⋅+⋅+=++= ffhkyhxfk ii
  • 132. 131 27734375,35,0)582031,2 3 2 5,8 3 1 (1) 3 2 3 1 ( 2101 =⋅⋅+⋅+=⋅++= hkkyy Na tabela a seguir mostra-se o resultado para os passos de integração seguintes: x y exato Heun Erro (%) Euler Mod. Erro (%) Ralston Erro (%) 0,0 1,00000 1,00000 0,0 1,00000 0 1,00000 0 0,5 3,21875 3,43750 6,8 3,10937 3,4 3,27734 1,8 1,0 3,00000 3,37500 12,5 2,81250 6,3 3,10156 3,4 1,5 2,21875 2,68750 21,1 1,98437 10,6 2,34765 5,8 2,0 2,00000 2,50000 25,0 1,75000 12,5 2,14062 7,0 2,5 2,71875 3,18750 17,2 2,48437 8,6 2,85546 5,0 3,0 3,00000 4,37500 9,4 3,81250 4,7 4,11718 2,9 3,5 4,71875 4,93750 4,6 4,60937 2,3 4,80078 1,7 4,0 3,00000 3,00000 0,0 3,00000 0 3,03125 1,0 9.9 Método de Runge_Kutta Terceira Ordem De forma semelhante ao que se fez para o Método de Runge_Kutta de Segunda Ordem, pode-se determinar para ordens mais elevadas. As formulações não são únicas. Apresenta-se a seguir uma dasformulação mais utilizadas: hkkkyy ii ⋅+++=+ )]4( 6 1 [ 3211 ),(1 ii yxfk = ) 2 1 , 2 1 ( 12 hkyhxfk ii ++= )2,( 213 hkhkyhxfk ii +−+= 9.10 Método de Runge_Kutta Quarta Ordem hkkkkyy ii ⋅++++=+ )]22( 6 1 [ 43211 ),(1 ii yxfk = ) 2 1 , 2 1 ( 12 hkyhxfk ii ++= ) 2 1 , 2 1 ( 23 hkyhxfk ii ++= ),( 34 hkyhxfk ii ++= Exemplo: Integre a função 8520122),( 23 +−+−= xxxyxf de 0=x até 5,0=x , passo de integração 5,0=h com o Método de Runge-Kutta de Quarta Ordem. Condições Iniciais: Para 0=x , 1=y hkkkkyy ⋅++++= )]22( 6 1 [ 432101 5,85,802001202),( 23 001 =+⋅−⋅+⋅−== yxfk
  • 133. 132 21875,45,825,02025,01225,02 )125,3,25,0()5,85,05,01,5,05,00() 2 1 , 2 1 ( 23 1002 =+⋅−⋅+⋅−= ==⋅⋅+⋅+=++= ffhkyhxfk 21875,45,825,02025,01225,02 )054,2,25,0()21875,45,05,01,5,05,00() 2 1 , 2 1 ( 23 2003 =+⋅−⋅+⋅− ==⋅⋅+⋅+=++= ffhkyhxfk 25,15,85,0205,0125,02 )1093,3,5,0()21875,45,01,5,00(),( 23 3004 =+⋅−⋅+⋅−= ==⋅++=++= ffhkyhxfk 21875,3 5,0)]25,121875,4221875,425,8( 6 1 [1)]22( 6 1 [ 432101 = =⋅+⋅+⋅++=⋅++++= hkkkkyy 9.11 Métodos de Passos Múltiplos Nos métodos vistos anteriormente, a cada nova estimativa da função utilizava-se a informação de um único ponto anterior. Como é o caso do Método de Euler, mostrado na figura: y(x) No caso dos métodos de passos múltiplos, utiliza-se informação de mais do que um ponto anterior. 0x 1x 1y )(xy x Estimativa a partir de um único ponto 01 xxh −= 0y
  • 134. 133 y(x) 9.12 Idéia Basica dos Métodos de Passos Múltiplos Seja a equação diferencial: ),(' yxf dx dy y == Deseja-se uma nova estimativa da solução y no ponto 1+nx . Integra-se a equação diferencial de nx a 1+nx : ∫∫ ++ = 11 ),()(' n n n n x x x x dxyxfdxxy ∫ + =−+ 1 ),()()( 1 n n x x nn dxyxfxyxy ∫ + +=+ 1 ),()()( 1 n n x x nn dxyxfxyxy Para a nova estimativa, a integral ∫ +1 ),( n n x x dxyxf é aproximada por alguma forma de quadratura numérica. Os Métodos de passos múltiplos são classificados em explícitos e implícitos. 0x 1x )(xy x 0y 2x nx.... ny Estimado a partir de informações conhecidas de n pontos anteriores 1y 3y
  • 135. 134 9.12.1 Métodos Explícitos Os métodos explícitos, quando da nova estimativa da solução no ponto 1+nx , utilizam informações de m pontos anteriores. Deve-se conhecer: ),( nn yx , ),( 11 −− nn yx , ....., ),( mnmn yx −− . A partir desses dados, aproxima-se a função f(x,y) por um polinômio )(xPm , de grau m. ∫ + +≈+ 1 )()()( 1 n n x x mnn dxxPxyxy 9.12.2 Algoritmos de Adans-Bashforth de ordem m m=1: ),(1 nnnn yxfhyy ⋅+=+ m=2: [ ]),(),(3 2 111 −−+ −⋅+= nnnnnn yxfyxf h yy m=3: [ ]),(5),(16),(23 12 22111 −−−−+ ⋅+⋅−⋅+= nnnnnnnn yxfyxfyxf h yy m=4: [ ]),(9),(37),(59),(55 24 3322111 −−−−−−+ ⋅−⋅+⋅−⋅+= nnnnnnnnnn yxfyxfyxfyxf h yy 9.12.3 Métodos Implícitos Os métodos implícitos, quando da nova estimativa da solução no ponto 1+nx , utilizam informações de m-1 pontos anteriores e uma estimativa inicial no ponto 1+nx . Deve-se conhecer: ),( 0 11 ++ nn yx , ),( nn yx , ....., ),( 11 +−+− mnmn yx . A partir desses dados, aproxima-se a função f(x,y) por um polinômio )(xPm , de grau m. ∫ + +≈+ 1 )()()( 1 n n x x mnn dxxPxyxy A idéia dos métodos implícitos é a utilização como um algoritmo corretor. Como visto no Método de Heun. Utiliza-se um algoritmo previsor, que pode ser algoritmos da família Adans- Bashfoth, e se corrige com um método implícito. 9.12.4 Algoritmos de Adans-Moulton de ordem m m=1: ),( 111 +++ ⋅+= nnnn yxfhyy
  • 136. 135 m=2: [ ]),(),( 2 111 nnnnnn yxfyxf h yy ++= +++ m=3: [ ]),(),(8),(5 12 11111 −−+++ −⋅+⋅+= nnnnnnnn yxfyxfyxf h yy m=4: [ ]),(),(5),(19),(9 24 2211111 −−−−+++ +⋅−⋅+⋅+= nnnnnnnnnn yxfyxfyxfyxf h yy É comum a utilização dos métodos implícitos junto com os métodos explícitos. Os Algoritmos da família Adans-Bashfoth são utilizados como previsores e os algoritmos da família Adans-Moulton como corretores. 9.12.5 Passos para se obter 1+ny I – Calcular )0( 1+ny por um método explícito (família Adans-Bashfoth). II – Inicializar o contador de iterações 0=k . III – Calcular ),( )( 11 k nn yxf ++ . IV – Calcular )1( 1 + + k ny , utilizando um método implícito (família Adans-Moulton). V – Testar se ε< − + + + + )( 1 )( 1 1)(k 1ny k n k n y y , se positivo, incrementar o contador 1+= kk e voltar ao passo III. Em caso contrário calcule o próximo passo de integração. Observação 1: Para a utilização dos algoritmos da família Adans-Bashforth com 1>m , necessita-se de informação de mais pontos além das condições iniciais. Para dar início ao algoritmo, pode-se utilizar qualquer dos método de integração vistos para estimar os pontos necessários. Exemplo: Solucione a equação diferencial abaixo usando o Método de Adans-Bashforth de ordem 3 como previsor e o Método de Adans-Moulton de ordem 3 como corretor. Execute tres iterações do corretor para cada estimativa. ),( 2 ' ytf t y t y y =      −= 21 ≤≤ t , 1)1( =y e 1,0=h Compare o resultado com o valor real: 1 ))ln(1()( − += ttty Para Utilizar o Método de Adans-Bashforth de ordem três, necessita-se de informações da função em três pontos. Como temos apenas a condição 1)1( =y , deve-se estimar em mais dois pontos. Utilizando Runge-Kutta de Quarta Ordem chega-se aos seguintes valores:
  • 137. 136 Para 0043,110,1 11 =→= yt Para 0150,120,1 22 =→= yt Com os três pontos pode-se realizar previsão para o passo seguinte, utilizando Adans- Bashforh: [ ]),(5),(16),(23 12 0011222 )0( 3 ytfytfytf h yy ⋅+⋅−⋅+= [ ] 0294,1)1,1(5)0043,1,10,1(16)0150,1,20,1(23 12 0150,1)0( 3 =⋅+⋅−⋅+= fff h y Com o valor da previsão calculado, calcula-se três iterações utilizando Adans-Moulton: [ ]),(),(8),(5 12 1122 )0( 332 )1( 3 ytfytfytf h yy −⋅+⋅+= [ ] 0299,1)0043,1,10,1()0150,1,20,1(8)0294,1,30,1(5 12 0150,1)1( 3 =−⋅+⋅+= fff h y [ ] 0298,1)0043,1,10,1()0150,1,20,1(8)0299,1,30,1(5 12 0150,1)2( 3 =−⋅+⋅+= fff h y [ ] 0298,1)0043,1,10,1()0150,1,20,1(8)0298,1,30,1(5 12 0150,1)3( 3 =−⋅+⋅+= fff h y Seguindo esta ordem, calcula-se os valores para os passos seguintes. Os resultados e a plotagem dos valores calculados e exatos são apresentados abaixo: it iy exatoy 1.00 1.0000 1.0000 1.10 1.0043 1.0043 1.20 1.0150 1.0150 1.30 1.0298 1.0298 1.40 1.0476 1.0475 1.50 1.0673 1.0673 1.60 1.0885 1.0884 1.70 1.1107 1.1107 1.80 1.1337 1.1337 1.90 1.1573 1.1572 2.00 1.1813 1.1812
  • 138. 137 Os gráficos com os valores exatos e estimados se confundem. 9.13 Solução de Sistemas de Equações Diferenciais Seja o sistema de equações diferenciais: ),......,,,( ),......,,,( ),......,,,( 21 212 2 211 1 nn n n n yyyxf dx dy yyyxf dx dy yyyxf dx dy = = = M A solução de um sistema desta natureza requer o valor inicial em 0xx = para as n variáveis y. Todos os métodos vistos podem ser utilizados na solução. O procedimento para a solução do sistema envolve a solução do passo de cada equação antes de passar-se ao passo seguinte. Exemplo: Solucione o sistema de equações diferenciais usando o Método de Euler, integrando de 0=x a 2=x , com passo 5,0=h e condições iniciais em 0=x dadas por 41 =y e 62 =y . 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 1 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2
  • 139. 138 ),,(1,03,04 ),,(5,0 21212 2 2111 1 yyxfyy dx dy yyxfy dx dy =−−= =−= A solução deste sistema resulta em duas funções: )(1 xy e )(2 xy . A solução numérica resulta em aproximações de pontos dessas funções. Adota-se uma notação semelhante ao caso de uma equação, introduzindo um novo índice para indicação das variáveis dependentes: jky , valor estimado para o ponto )( jk xy para 2,1=k . Para a solução do problema, necessita-se: j jx jy ,1 jy ,2 0 0 4 6 1 0,5 1,1y 1,2y 2 1,0 2,1y 2,2y 3 1,5 3,1y 3,2y 4 2,0 4,1y 4,2y Para 1=j e 5,01 =x 35,0)45,0(4),,( 0,20,1010,11,1 =××−+=⋅+= hyyxfyy 9,65,0)41,063,04(6),,( 0,20,1020,21,2 =××−×−+=⋅+= hyyxfyy Para 2=j e 0,11 =x 25,25,0)35,0(3),,( 1,21,1111,12,1 =××−+=⋅+= hyyxfyy 715,75,0)31,09,63,04(9,6),,( 1,21,1121,22,2 =××−×−+=⋅+= hyyxfyy Para 3=j e 5,11 =x 6875,15,0)25,25,0(25,2),,( 2,22,1212,13,1 =××−+=⋅+= hyyxfyy
  • 140. 139 44525,85,0)25,21,0715,73,04(715,7),,( 2,22,1222,23,2 =××−×−+=⋅+= hyyxfyy Para 4=j e 0,21 =x 265625,15,0)6875,15,0(6875,1),,( 3,23,1313,14,1 =××−+=⋅+= hyyxfyy 0940875,95,0)6875,11,044525,83,04(44525,8),,( 3,23,1223,24,2 =××−×−+=⋅+= hyyxfyy Resultando nos valores tabelados: J jx jy ,1 jy ,2 0 0 4 6 1 0,5 3,0000000 6,9000000 2 1,0 2,2500000 7,7150000 3 1,5 1,6875000 8,4452500 4 2,0 1,2656250 9,0940875 Exemplo: Solucione o sistema de equações diferenciais do exemplo 8.9 utilizando o Método de Runge_Kutta de Quarta Ordem. ),,(1,03,04 ),,(5,0 21212 2 2111 1 yyxfyy dx dy yyxfy dx dy =−−= =−= Para a solução do problema, necessita-se: j jx jy ,1 jy ,2 0 0 4 6 1 0,5 1,1y 1,2y 2 1,0 2,1y 2,2y 3 1,5 3,1y 3,2y
  • 141. 140 4 2,0 4,1y 4,2y Para a solução de uma única equação tem-se: hkkkkyy ii ⋅++++=+ )]22( 6 1 [ 43211 ),(1 ii yxfk = ) 2 1 , 2 1 ( 12 hkyhxfk ii ++= ) 2 1 , 2 1 ( 23 hkyhxfk ii ++= ),( 34 hkyhxfk ii ++= Para o caso de um sistema, necessita-se de uma nova indexação: Seja um sistema com m equações. Assume-se que tenham sido determinadas as m aproximações para o passo j: ],......,,,[ ,,3,2,1 jmjjj yyyy . Para se obter as novas aproximações ],......,,,[ 1,1,31,21,1 ++++ jmjjj yyyy do passo 1+j , necessita-se calcular as constantes na seguinte sequência: Para mi ,....,2,1= determina-se: ),( ,,,2,,1,1 jmjjjii yyyxfk = Calculados todos os ik ,1 , Calcula-se para mi ,....,2,1= : ) 2 1 ,....., 2 1 , 2 1 , 2 1 ( ,1,2,1,21,1,1,2 mjmjjji hkyhkyhkyhxfk ++++= Calculados todos os ik ,2 , Calcula-se para mi ,....,2,1= : ) 2 1 ,....., 2 1 , 2 1 , 2 1 ( ,2,2,2,21,2,1,3 mjmjjji hkyhkyhkyhxfk ++++= Calculados todos os ik ,3 , Calcula-se para mi ,....,2,1= : ),.....,,,( ,3,2,3,21,3,1,4 mjmjjji hkyhkyhkyhxfk ++++=
  • 142. 141 Calculadas todas as constantes, pode-se determinar para mi ,....,2,1= as novas estimativas paro o passo 1+j . hkkkkyy iiiijiji ⋅++++=+ )]22( 6 1 [ ,4,3,2,1,1, Para o exemplo, tem-se 2=m a nova estimativa no passo 1+j é dada por: hkkkkyy ⋅++++= )]22( 6 1 [ 1,41,31,21,10,11,1 hkkkkyy ⋅++++= )]22( 6 1 [ 2,42,32,22,10,21,2 ),,( ,2,111,1 jjj yyxfk = ),,( ,2,122,1 jjj yyxfk = ) 2 1 , 2 1 , 2 1 ( 2,1,21,1,111,2 hkyhkyhxfk jjj +++= ) 2 1 , 2 1 , 2 1 ( 2,1,21,1,122,2 hkyhkyhxfk jjj +++= ) 2 1 , 2 1 , 2 1 ( 2,2,21,2,111,3 hkyhkyhxfk jjj +++= ) 2 1 , 2 1 , 2 1 ( 2,2,21,2,122,3 hkyhkyhxfk jjj +++= ),, 2 1 ( 2,3,21,3,111,4 hkyhkyhxfk jjj +++= ),, 2 1 ( 2,3,21,3,122,4 hkyhkyhxfk jjj +++= Para o passo 1 do exemplo: 245,0)6,4,0(),,( 10,20,1011,1 −=×−=== fyyxfk 8,141,063,04)6,4,0(),,( 20,20,1022,1 =×−×−=== fyyxfk 75,1)45,6,5,3,25,0() 2 1 , 2 1 , 2 1 ( 12,10,21,10,1011,2 −==+++= fhkyhkyhxfk 715,1)45,6,5,3,25,0() 2 1 , 2 1 , 2 1 ( 22,10,21,10,1022,2 ==+++= fhkyhkyhxfk
  • 143. 142 7813,1)4285,6,5625,3,25,0() 2 1 , 2 1 , 2 1 ( 12,20,21,20,1011,3 −==+++= fhkyhkyhxfk 7151,1)4285,6,5625,3,25,0() 2 1 , 2 1 , 2 1 ( 22,20,21,20,1022,3 ==+++= fhkyhkyhxfk 5547,1)8575625,6,109375,3,25,0(),, 2 1 ( 12,30,21,30,1011,4 −==+++= fhkyhkyhxfk 6318,1)8575625,6,109375,3,25,0(),, 2 1 ( 22,30,21,30,1022,4 ==+++= fhkyhkyhxfk Resultando nas novas aproximações: 1152,35,0]5547,17813,1275,122[)6/1(4 )]22( 6 1 [ 1,41,31,21,10,11,1 =×−×−×−−×+= =⋅++++= hkkkkyy 8577,65,0]6318,17151,12715,128,1[)6/1(6 )]22( 6 1 [ 2,42,32,22,10,21,2 =×−×+×+×+ =⋅++++= hkkkkyy Os Resultados passo à passo são dados abaixo: J=1 k11 = -2 k12 = 1.8000 k21 = -1.7500 k22 = 1.7150 k31 = -1.7813 k32 = 1.7151 k41 = -1.5547 k42 = 1.6318 y1 = 3.1152 y2 = 6.8577 j=2 k11 = -1.5576 k12 =1.6312 k21 = -1.3629 k22 =1.5478 k31 = -1.3873 k32 =1.5492 k41 = -1.2108 k42 = 1.4682 y1 = 2.4262 y2 = 7.6321 j=3 k11 = -1.2131 k12 = 1.4678 k21 = -1.0614 k22 =1.3880 k31 = -1.0804 k32 = 1.3902 k41 = -0.9430 k42 = 1.3132 y1 = 1.8895 y2 = 8.3269 j=4 k11 = -0.9448 k12 = 1.3130 k21 = -0.8267 k22 =1.2381 k31 = -0.8414 k32 = 1.2408 k41 = -0.7344 k42 = 1.1689 y1 = 1.4716 y2 = 8.9469 Resultando na tabela:
  • 144. 143 j jx jy ,1 jy ,2 0 0 4,0000 6,0000 1 0,5 3,1152 6,8577 2 1,0 2,4262 7,6321 3 1,5 1,8895 8,3269 4 2,0 1,4716 8,9469 Exemplo: Resolva a equação dinâmica do circuito, considerando que antes do fechamento da chave S não havia nenhuma energia armazenada no circuito, Ω= 2R , HL 2= e FC 5,0= , integrando de 0=t a t=5Seg, com passo de integração 0,1 e o Método de Runge-Kutta de Quarta Ordem. S V(t)=sin(3,5t) i(t) Ao fechar-se a chave S, pode-se analisar o comportamento dinâmico do circuito a partir da Lei de Kirchoff para tensões: ∫++= dtti Cdt tdi LtRitV )( 1)( )()( Derivando a equação: )( 1)()()( 2 2 ti Cdt tid L dt tdi R dt tdV ++= Substituindo a expressão da tensão e rearranjando a equação, tem-se: )5,3cos(5,3)(2 )( 2 )( 2 2 2 tti dt tdi dt tid ⋅=++ 1.1.1.1.5 1.1.1.1.4 1.1.1.1.6
  • 145. 144 )5,3cos(5,3)(2)(2)(2 ''' ttititi ⋅=++ Como não havia nenhuma energia armazenada no circuito, as condições para 0=t são nulas, ou seja: 0)0( =i e 0 )0( = dt di . Inicialmente deve-se transformar a equação de segunda ordem num sistema com duas equações: )5,3cos( 2 5,3 )()()5,3cos( 2 5,3 )()()()( )()()( )()( 12 '''' 2 2 '' 1 1 ttztzttitititz tztitz titz +−−=+−−== == = Tem-se o seguinte sistema: ))(),(,()5,3cos( 2 5,3 )()()()( ))(),(,()( 21212 ''' 2 2112 ' 1 tztztfttztztitz tztztfztz =+−−== == 0)0( 0)0( 2 1 = = z z Os resultados da integração são dados pela tabela: t )()(1 titz = )()( ' 2 titz = 0.00 0.0000 0.0000 0.10 0.0084 0.1628 0.20 0.0313 0.2886 0.30 0.0644 0.3625 0.40 0.1018 0.3758 0.50 0.1374 0.3274 0.60 0.1654 0.2238 0.70 0.1808 0.0783 0.80 0.1803 -0.0908 0.90 0.1626 -0.2621 1.00 0.1285 -0.4139 1.10 0.0811 -0.5270 1.20 0.0249 -0.5866 1.30 -0.0342 -0.5847 1.40 -0.0899 -0.5205 1.50 -0.1364 -0.4008 1.60 -0.1687 -0.2393 1.70 -0.1835 -0.0546 1.80 -0.1796 0.1317 1.90 -0.1578 0.2979 2.00 -0.1213 0.4246 2.10 -0.0747 0.4972
  • 146. 145 2.20 -0.0240 0.5076 2.30 0.0247 0.4552 2.40 0.0652 0.3470 2.50 0.0927 0.1966 2.60 0.1037 0.0227 2.70 0.0971 -0.1530 2.80 0.0738 -0.3090 2.90 0.0367 -0.4259 3.00 -0.0096 -0.4892 3.10 -0.0591 -0.4911 3.20 -0.1057 -0.4311 3.30 -0.1435 -0.3163 3.40 -0.1676 -0.1605 3.50 -0.1749 0.0176 3.60 -0.1641 0.1963 3.70 -0.1363 0.3540 3.80 -0.0946 0.4716 3.90 -0.0438 0.5348 4.00 0.0102 0.5359 4.10 0.0613 0.4746 4.20 0.1033 0.3584 4.30 0.1316 0.2012 4.40 0.1428 0.0219 4.50 0.1359 -0.1579 4.60 0.1120 -0.3165 4.70 0.0740 -0.4348 4.80 0.0268 -0.4986 4.90 -0.0237 -0.5004 5.00 -0.0712 -0.4400 Os valores são plotados na figura: 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6
  • 147. 146 10 Utilizando o MATLAB Familiarização com o ambiente de trabalho e assimilação dos comandos principais. A ferramenta de suporte computacional utilizada ao longo deste curso será o MATLAB. 1. Sintaxe de comandos Utilize a função helpwin <comando> 2. Operações aritméticas adição + subtração - multiplicação * divisão / potenciação ^ O MATLAB executa as operações aritméticas da esquerda para a direita respeitando a hierarquia existente na matemática. Ex.: » 3^2-5-6/(3*2) ans = 3 3. Variáveis Para identificação das variáveis, o MATLAB diferencia maiúsculas e minúsculas. Não é necessária a alocação de memória para as variáveis, pois o MATLAB o fará automaticamente assim que um valor é atribuído a uma variável pela primeira vez. A atribuição é realizada da seguinte forma: » a=1 a = 1 O acesso é realizado através do nome da variável: » a a = 1 Uma variável só pode ser acessada se já foi criada, isto é, se algum valor já foi atribuído à mesma. No exemplo abaixo a variável é acessada sem ter sido criada: » b ??? Undefined function or variable 'b'. O comando who mostra as variáveis que estão sendo utilizadas no momento e o comando clear exclui as variáveis do ambiente de trabalho do MATLAB. 4. Caracteres especiais usados na janela de comandos
  • 148. 147 = Comando de atribuição [ ] Delimitar elementos de matrizes e vetores ( ) Alternar a ordem de precedência das expressões aritméticas . Ponto decimal , Separa argumentos de funções e elementos matrizes e vetores ; Finalizador de linha com supressão de impressão % Comentário : Geração de um vetor com intervalos definidos 5. Funções matemáticas básicas acos Arco-coseno asin Arco-seno atan Arco-tangente cos Coseno cosh Coseno hiperbolico exp Exponencial com base e log Logaritmo natural log10 Logaritmo decimal rand Gera números aleatórios com distribuição uniforme randn Gera números aleatórios com distribuição normal rat Aproximação racional round Arredonda o número para o inteiro mais próximo sign Retorna 1 se for positivo e 0 se for negativo sin Seno sinh Seno hiperbólico sqrt Raiz quadrada tan Tangente tanh Tangente hiperbólica O MATLAB trabalha com ângulos em radianos. 6. Operações com vetores Os vetores devem ser declarados em colchetes: » u = [1 2 3 4] u = 1 2 3 4 O mesmo resultado seria obtido com: » u = [1,2,3,4] u = 1 2 3 4 As operações aritméticas são realizadas elemento a elemento do vetor: » z = u+3 z =
  • 149. 148 4 5 6 7 A operação com apenas um elemento do vetor pode ser feita, especificando o elemento a ser tratado: » z(3) = z(3)+1 z = 4 5 7 7 Se quiser saber o número de elementos do vetor , utilize a função length: » length(z) ans = 4 A transposta é calculada utilizando o símbolo ’: » w = z' w = 4 5 7 7 Operações especiais: .* Multiplicação de vetores ./ Divisão à direita de vetores . Divisão à esquerda de vetores .^ Exponenciação Ex.: » mult = u.*z mult = 4 10 21 28 Para a geração de vetores utilizando intervalos: » x = 0:2:10 x = 0 2 4 6 8 10 Funções úteis no tratamento de vetores: max( ) Devolve o maior dos componentes do vetor min( ) Devolve o menor dos componentes do vetor mean( ) Devolve o valor médio dos componentes do vetor Ex.:
  • 150. 149 » mean(x) ans = 5 7. Operações com matrizes A matriz pode ser definida de maneira semelhante aos vetores, diferenciando-se apenas na necessidade da digitação de um “;” para a separação das diferentes colunas: » a = [1 2 3 ;4 5 6;7 8 9] a = 1 2 3 4 5 6 7 8 9 As matrizes podem Ter elementos identificados individualmente: » a(2,1) ans = 4 O tamanho da matriz pode ser obtido pela função size: » size(a) ans = 3 3 Para extrair uma submatriz de uma matriz: » b = a(1:2,1:2) b = 1 2 4 5 Para inserir uma linha na matriz: » c = [b;1 0] c = 1 2 4 5 1 0 Nas operações de adição e subtração os elementos de uma matriz são somados ou subtraídos com o seu correspondente na outra matriz, quando matrizes de mesmo tamanho. A multiplicação e a divisão por escalares é efetuado elemento a elemento da matriz. » div = a*3 div =
  • 151. 150 3 6 9 12 15 18 21 24 27 A exponenciação individual dos elementos de uma matriz pode ser feito: » exp = a.^2 exp = 1 4 9 16 25 36 49 64 81 A multiplicação de matrizes só pode acontecer se o número de colunas de uma matriz for igual ao número de linhas da outra. » size(a) ans = 3 3 » size(div) ans = 3 3 » mult = a*div mult = 90 108 126 198 243 288 306 378 450 A fim de mostrar divisão de matrizes, vamos definir duas novas matrizes: » x = [15 10 8;7 1 0;2 5 1]; » y = [3 -1 2;-5 1 1;0 3 4]; » div = x/y div = -2.0213 -4.2128 4.0638 -0.5745 -1.7447 0.7234 -1.8511 -1.5106 1.5532 » divinv = xy divinv = -0.7033 0.0239 0 -0.0766 0.8325 1.0000 1.7895 -1.2105 -1.0000
  • 152. 151 A potenciação de matrizes eqüivale a sucessivas multiplicações por ela mesma: » pot = a^3 pot = 468 576 684 1062 1305 1548 1656 2034 2412 A transposta da matriz é obtida por: » trans = a' trans = 1 4 7 2 5 8 3 6 9 Funções para tratar matrizes: det Determinante de uma matriz eye Gera uma matriz identidade inv Calcula a inversa da matriz ones Gera uma matriz unitária rand Gera uma matriz randômica tril Transforma/gera uma matriz triangular inferior triu Transforma/gera uma matriz triangular superior zeros Gera uma matriz de zeros (nula) 8. Números Complexos A parte imaginária do número complexo pode ser simbolizada pelas letras i e j indistintamente. Ex.: » z1 = 3+4i z1 = 3.0000 + 4.0000i O conjugado do número complexo pode ser obtido utilizando a função conj: » z2 = conj(z1) z2 = 3.0000 - 4.0000i As operações com números complexos utilizam os operadores usuais. A potenciação, como visto com as matrizes, correspondente à multiplicação sucessiva do número por ele mesmo. Funções úteis para trabalhar com números complexos: real Retorna a parte real do número complexo
  • 153. 152 imag Retorna a parte imaginária do número complexo abs Retorna o módulo do vetor complexo angle Retorna o ângulo do vetor complexo 9. Polinômios Seja o polinômio: X3 – 3x2 +4x-4 No MATLAB ele é definido da seguinte forma: » poli = [1 -3 4 -4] poli = 1 -3 4 -4 Para encontrar as raízes deste polinômio, usamos o comando roots: » r = roots(poli) r = 2.0000 0.5000 + 1.3229i 0.5000 - 1.3229i Com as raízes do polinômio, pode-se obter os coeficientes deste usando a função poly: » p = poly(r) p = 1.0000 -3.0000 4.0000 -4.0000 A função conv é utilizada para a multiplicação de polinômios: » p1 = [2 3 1]; » p2 = [5 -2]; » p3 = conv(p1,p2) p3 = 10 11 -1 -2 Já a função deconv é utilizada para a divisão: » [Q R] = deconv(p3,p1) Q = 5 -2 R = 0 0 0 0 10. Encontrando a melhor curva partindo de dados experimentais
  • 154. 153 O MATLAB permite fazer a interpolação polinomial partindo-se de dados experoimentais, utilizando o comando polyfit. Os pontos experimentais abaixo representam a posição de um móvel ao longo do tempo: S(cm) 4,00 6,71 9,43 12,18 14,87 17,7 t(s) 0 1 2 3 4 5 Vamos definir os vetores com dados experimentais: S = [4 6.4 9.93 12.18 14.87 16.7]; » t = [0 1 2 3 4 5]; Agora vamos traçar os pontos para vermos a evolução dos mesmos: » plot(t,S,'+') 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 4 6 8 10 12 14 16 18 Agora iremos traçar a reta obtida sobre os dados experimentais: » poly = polyfit(t,S,1) poly = 2.6046 4.1686 » hold on; » t = 0:.1:5; » S = polyval(poly,t); » plot(t,S);
  • 155. 154 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 4 6 8 10 12 14 16 18 Gráficos em 2D Os principais comandos utilizados para a criação de gráficos são: plot Plota um vetor ou uma função title Adiciona título ao gráfico xlabel Adiciona um rótulo ao eixo x ylabel Adiciona um rótulo ao eixo y text Insere um texto numa determinada posição da janela gráfica gtext Insere um texto no gráfico usando o mouse como posicionador grid Traça linhas de grade A formatação de cor e estilo da linha podem ser facilmente ajustados através de argumentos do comando plot. Cor da Linha Estilo da Linha Caracter Cor Caracter Estilo y amarela . ponto m margenta o círculo c cyan x marca “x” r vermelha + mais g verde * asterisco b azul - sólido w branca : pontilhado k preta -- tracejado 11. Programando com o MATLAB Os operadores relacionais, aqueles que respondem a uma determina operação com verdadeiro e falso, e que são simbolizados respectivamente por 1 e 0. A tabela a seguir relaciona operador com a descrição: Operador Descrição < Menor que <= Menor ou igual > Maior que
  • 156. 155 >= Maior ou igual == Igual ~= Diferente No MATLAB temos os seguintes operadores lógicos: Operador Descrição & AND | OR ~ NOT As rotinas especiais de programação estão descritas abaixo: Rotinas Descrição For <cond> end Gera um loop enumerável while <cond> end Gera um loop enquanto uma condição (<cond>) for verdadeira if <cond> elseif end Comando executável condicional if <cond> else end Comando executável condicional break Sair fora de um loop for ou while return Retornar a uma função (arquivo.m) pause Para num ponto do programa até que se aperte qualquer tecla Essas rotinas associadas aos inúmeros recursos oferecidos pelo MATLAB, propiciam ao usuário, desenvolver desde simples programas até os mais sofisticados. Objetivo 2: Desenvolva um programa par o cálculo do produto interno. ∑ = = = = n i ii T T n T n yxyx yyyyy xxxxx 1 321 321 )..,,.........,,( )..,,.........,,( Objetivo 3: Desenvolva um programa par o cálculo do produto entre duas matrizes. pmA × , npB × BAC ⋅= ∑ = = p k kjikij bac 1 Objetivo 4: Realize as seguintes operações no MatLab: ),( ;1*72.^*213.^*354.^*355.^*216.^*77.^ 012.1:0001.0:988.0 yxplot xxxxxxxy x −+−+−+−= = O resultado obtido é o esperado? Se não for o esperado, qual a explicação para obter-se tal resultado. Realize agora a operação
  • 157. 156 ),( ;7).^1( 012.1:0001.0:988.0 yxplot xy x −= = Analise e compare os resultados. Objetivo 5: Representação do número 0,1 em base hexadecimal. Representação no MATLAB: es fx 2)1()1( ⋅+−= 1 bit 11 bits 52 bits Como a representação da mantissa ficaria no MATLAB? Confirme com os comandos: T=0.1; Format hex t Objetivo 6: Considere o sistema de equações lineares: 3.33.03 1110 21 21 =+ =+ xx xx Uma solução óbvia para o sistema é 11 =x e 12 =x . Utilizando o MatLab com os comandos: A=[10 1;3 0.3]; b=[11;3.3]; x=Ab, solucione o sistema. Analise o resultado e justifique. Objetivo 7: Arquivos M-file. Embora você possa trabalhar inteiramente nas linhas de comando do MATLAB, você também pode armazenar em arquivos externos. Esses arquivos são equivalentes a programas, funções, subrotinas e procedimentos de outras linguagens. Os arquivos M-file são criados a partir do editor do MATLAB. Abaixo apresenta-se um arquivo para o cálculo da raiz quadrada de um número real maior ou igual a zero. Coloque este arquivo no formato M-file e execute-o. function [x,iter]=sqrtn(a,tol) %sqrtn Raiz quadrada de um número real maior que zero pelo Método de Newton. % x=sqrtn(z,tol) calcula a raiz do número real a utilizando o Método de Newton % a é assumido ser maior ou igual a zero % tol é a tolerância de convergencia (default eps) - eps - epsilon da máquina % [x,iter]=sqrtn(a,tol) retorna também o número de iterações (iter) para a con- % vergência. if nargin<2,tol=eps;end x=a; iter=0; xdiff=inf; fprintf(' k x_k erro relativon') while xdiff>tol iter=iter+1; xold=x; x=(x+a/x)/2; xdiff=abs(x-xold)/abs(x); fprintf('%2.0f: %20.16e %9.2en',iter,x,xdiff) if iter>50 error('Não convergiu apos 50 iterações') end end s e f
  • 158. 157 Objetivo 8: Introdução ao Método da Bisseção para o cálculo de raízes de funções. Algoritmo: 12. Entrada: 12.1 função f(x) 12.2 intervalo de convergência [a,b] 12.3 tolerância ε 12.4 número de iterações L 13. f0 ← f(a); f1 ← f(b) 14. Teste de viabilidade de intervalo: 14.1 Se f0*f1 > 0 14.1.1 “Erro na Entrada” 14.1.2 Entrar com novo intervalo 14.2 Senão 14.2.1 x0 ← a 14.2.2 x1 ← b 14.2.3 i ← 1 15. Enquanto ((|f0| > ε ou |f1| > ε) e i < L) 15.1 X2 ← 0,5*(x0+x1) 15.2 f2 ← f(x2) 15.3 Se (f2*f0 < 0) 15.3.1 x1 ← x2 15.3.2 f1 ← f2 15.4 Senão 15.4.1 x0 ← x2 15.4.2 f0 ← f2 15.5 i ← i+1 16. se (i > L) 16.1 “Não atingiu exatidão em ‘L’ iterações” 17. Senão 17.1 “A exatidão foi atingida em ‘i-1’ iterações, e a raiz é ‘x2’ ” 18. Fim Objetivo 9: Seja a função xexf x /)1()( −= Compute no MatLab a função por meio do algoritmo: Algoritmo 1: Se x=0 1)( =xf Caso contrário xexf x /)1()( −= Fim Calcule para i x 10= com i variando de -5 a -16 com passo 1. Analise o resultado e verifique o que está acontecendo. Compute agora com um algoritmo matematicamente equivalente: Algoritmo 2: x ey =
  • 159. 158 Se y=1 1)( =xf Caso contrário )ln(/)1()( yyxf −= Fim Calcule também para i x 10= com i variando de -5 a -16 com passo 1. Analise o resultado e verifique o que está acontecendo. Compare os resultados e apresente as conclusões.
  • 160. 159 Referências Bibliográficas [1] BARROSO, Leônidas C. et. al., Cálculo Numérico (com Aplicações), 2a edição, Editora Harbra, São Paulo, 1987. [2] CLAUDIO, Dalcidio M., MARINS, Jussara M., Cálculo Numérico Computacional, 2a edição, Atlas, 1994 [3] SANTOS, Vitoriano R. B., Curso de Cálculo Numérico, 4a edição, LTC, 1982. [4] RUGGIERO, Márcia A. G., LOPES, Vera Lúcia R., Cálculo Numérico: Aspectos Teóricos e Computacionais, 2a edição, Makron Books, São Paulo, 1996. [5] CAMPOS, R. J. A., Cálculo Numérico Básico. 1ª edição, Atlas, 1978 [6] CAMARGO, W. C. M., Apostila de Cálculo Numérico. Departamento de Informática. UFPR.