1 derivação numérica - mat.ufrgs.br fabio/der_int.pdf · derivação e integração numérica 1
Post on 15-Oct-2018
214 views
Embed Size (px)
TRANSCRIPT
Derivao e Integrao Numrica
1 Derivao Numrica
Dado um conjunto de pontos (xi, yi)ni=1, a derivada(dydx
)ipode ser calculada de vrias formas. Na prxima
seo trabalharemos com diferenas nitas, que mais adequada quando as abcissas esto prximas e os dadosno sofrem perturbaes signicativas. Na seo subsequente trataremos os casos quando os dados oscilamvia ajuste ou interpolaes de curvas.
1.1 Aproximao da derivada por diferenas nitas
A derivada f (x0) de uma funo f(x) no ponto x0
f (x0) = limh0
f(x0 + h) f(x0)h
.
Da denio, se h = 0 pequeno (no muito pequeno para evitar o cancelamento catastrco), esperadoque uma aproximao para a derivada no ponto x0 seja dada por
f (x0) f(x0 + h) f(x0)
h.
Observe que se h for exatamente a distncia entre x0 e x1, ento x0 + h = x1 e
f (x0) f(x1) f(x0)
h=
y1 y0h
.
Exemplo 1. Calcule a derivada numrica da funo f(x) = cos(x) no ponto x = 1 usando h = 0.1, h = 0.01,h = 0.001 e h = 0.0001.
A tabela abaixo mostra a derivada numrica para cada valor de h.
h f(1 + h)f(1 + h) f(1)
h
0.1 f(1.1) = cos(1.1) = 0.45359610.4535961 0.5403023
0.1= 0.8670618
0.01 f(1.01) = cos(1.01) = 0.45359610.5318607 0.5403023
0.01= 0.8441584
0.001 f(1.001) = cos(1.001) = 0.45359610.5403023 0.5403023
0.001= 0.841741
0.0001 f(1.0001) = cos(1.0001) = 0.45359610.5403023 0.5403023
0.0001= 0.841498
Observe que quanto menor h, melhor a aproximao, visto que o valor exato para a derivada f (1) = sin(1) = 0.8414710. Porm, quando h = 1013, a derivada numrica 0.8404388, resultado pior queaquele para h = 0.0001 (usando aritmtica de computador no scilab). Alm disso, quando h = 1016, aderivada numrica calculada no scilab zero (cancelamento catastrco). Isso nos motiva a pensar qual omelhor h.
Essa aproximao para a derivada denominada diferenas progressivas. A derivada numrica tambmpode ser aproximada usando denies equivalentes:
f (x0) f(x0) f(x0 h)
h=
yi yi1h
1
que denominada diferenas regressivas ou
f (x0) f(x0 + h) f(x0 h)
2h=
yi+1 yi12h
que denominada diferenas centrais.
Exemplo 2. Calcule a derivada numrica da funo f(x) = cos(x) no ponto x = 1 usando diferenasprogressivas, diferenas regressivas e diferenas centrais com h = 0.1, h = 0.01 e h = 0.001.
A tabela abaixo mostra a derivada numrica para cada valor de h.
h diferenas progressivas diferenas regressivas diferenas centrais
0.1 0.8670618 cos(1) cos(0.9)0.1
= 0.8130766 cos(1.1) cos(0.9)0.2
= 0.8412007
0.01 0.8441584 cos(1) cos(0.99)0.01
= 0.8387555 cos(1.01) cos(0.99)0.02
= 0.8414570
0.001 0.841741 cos(1) cos(0.999)0.001
= 0.8412007 cos(1.001) cos(0.999)0.002
= 0.8414708
1.2 Erros de truncamento
Seja D+,hf(x0) a aproximao da derivada de f em x0 por diferenas progressivas, D,hf(x0) a aproximaopor diferenas regressivas e D0,hf(x0) a aproximao por diferenas centrais, ento
D+,hf(x0) f (x0) =f(x0 + h) f(x0)
h f (x0)
=f(x0) + hf
(x0) +h2
2f (x0) +O(h
3) f(x0)h
f (x0)
=h
2f (x0) +O(h
2) = O(h).
Analogamente,
D,hf(x0) f (x0) =f(x0) f(x0 h)
h f (x0)
=f(x0)
(f(x0) hf (x0) + h
2
2f (x0) +O(h
3))
h f (x0)
= h2f (x0) +O(h
2) = O(h).
Tambm,
D0,hf(x0) f (x0) =f(x0 + h) f(x0 h)
2h f (x0)
=f(x0) + hf
(x0) +h2
2f (x0) +O(h
3)(f(x0) hf (x0) + h
2
2f (x0) +O(h
3))
2h f (x0)
= O(h2).
2
Exemplo 3. Calcule a derivada numrica e o erro de truncamento de f(x) = ex em x = 1.5 pela frmulade diferena progressiva para h = 0.1, h = 0.01 e h = 0.001.
Como |f (x)| = |ex| < 1, ento |f +(x0) f (x0)| < h2 .
h diferenas progressivas erro = h2
0.1 0.2123364 0.050.01 0.2220182 0.0050.001 0.2230186 0.0005
O valor exato da derivada f (1.5) = 0.2231302.
1.3 Erros de arredondamento
Para entender como os erros de arredondamento se propagam ao calcular as derivadas numricas vamosconsiderar o operador de diferenas nitas progressivas
D+,hf(x) =f(x+ h) f(x)
h.
Nesse contexto temos o valor exato f (x) para a derivada, a sua aproximao numrica D+,hf(x) e a repre-sentao em nmero de mquina do operador D+,hf(x) que denoraremos por D+,hf(x). Seja (x, h) o errode arredondamento ao calcularmos a derivada e consideremos
D+,hf(x) = D+,hf(x)(1 + (x, h)) =f(x+ h) f(x)
h(1 + (x, h)).
Tambm, consideremos|f(x+ h) f(x+ h)| = (x, h)
e|f(x) f(x)| = (x, 0) ,
onde f(x+ h) e f(x) so as representao em ponto utuante dos nmeros f(x+ h) e f(x), respectivamente.A diferena do valor da derivada e sua aproximao representada em ponto utuante pode ser estimada daseguinte forma:f (x)D+,hf(x) =
f (x) f(x+ h) f(x)h (1 + (x, h))
=
f (x)(f(x+ h) f(x)
h+
f(x+ h) f(x+ h)h
+f(x) f(x)
h
)(1 + )
=
f (x) +(f(x+ h) f(x)
h f(x+ h) f(x+ h)
h+
f(x) f(x)h
)(1 + )
f (x) f(x+ h) f(x)h+(f(x+ h) f(x+ h)h
+f(x) f(x)h
)|1 + |
+
f(x+ h) f(x)h
Mh+( h
+ h) |1 + |+ |f (x)|
Mh+(2
h
)|1 + |+ |f (x)|
3
onde
M =1
2max
xyx+h|f (y)|
est relacionado com o erro de truncamento.Esta estimativa mostra que se o valor de h for muito pequeno o erro ao calcular a aproximao numrica
cresce. Isso nos motiva a procurar o valor timo de h que minimiza o erro.
Exemplo 4. Estude o comportamento da derivada de f(x) = ex2no ponto x = 1.5 quando h ca pequeno.
Segue a tabela com os valores da derivada para vrios valores de h.
h 102 104 106 107 108 109
D+,hf(1.5) 0.3125246 0.3161608 0.3161973 0.3161976 0.3161977 0.3161977
h 1010 1011 1012 1013 1014 1015
D+,hf(1.5) 0.3161976 0.3161971 0.3162332 0.3158585 0.3178013 0.3747003
Observe que o valor exato 0.3161977 e o h timo algo entre 108 e 109.
1.4 Frmula de trs e cinco pontos para a derivada primeira
Para aproximar a derivada de uma funo f(x) em x0, x1 ou x2 usaremos os trs pontos vizinhos (x0, f(x0)),(x1, f(x1)) e (x2, f(x2)). Uma interpolao usando polinmios de Lagrange para esses trs pontos da forma:
f(x) = f(x0)(x x1)(x x2)(x0 x1)(x0 x2)
+ f(x1)(x x0)(x x2)(x1 x0)(x1 x2)
+ f(x2)(x x0)(x x1)(x2 x0)(x2 x1)
+f ((x))
6(x x0)(x x1)(x x2).
A derivada de f(x)
f (x) = f(x0)2x x1 x2
(x0 x1)(x0 x2)+ f(x1)
2x x0 x2(x1 x0)(x1 x2)
+ f(x2)2x x0 x1
(x2 x0)(x2 x1)
+f ((x))
6((x x1)(x x2) + (x x0)(2x x1 x2))
+ Dx
(f ((x))
6
)(x x0)(x x1)(x x2). (1)
Trocando x por x0, temos
f (x0) = f(x0)2x0 x1 x2
(x0 x1)(x0 x2)+ f(x1)
2x0 x0 x2(x1 x0)(x1 x2)
+ f(x2)2x0 x0 x1
(x2 x0)(x2 x1)
+f ((x0))
6((x0 x1)(x0 x2) + (x0 x0)(2x0 x1 x2))
+ Dx
(f ((x0))
6
)(x0 x0)(x0 x1)(x0 x2).
Considerando uma malha equiespaada onde x1 = x0 + h e x2 = x0 + 2h, temos:
f (x0) = f(x0)3h
(h)(2h)+ f(x1)
2h(h)(h)
+ f(x2)h
(2h)(h)+
f ((x0))
6((h)(2h))
=1
h
[32f(x0) + 2f(x1)
1
2f(x2)
]+ h2
f ((x0))
3
4
Similarmente, trocando x por x1 ou trocando x por x2 na expresso (1), temos outras duas expresses
f (x1) =1
h
[12f(x0) +
1
2f(x2)
]+ h2
f ((x1))
6
f (x2) =1
h
[1
2f(x0) 2f(x1) +
3
2f(x2)
]+ h2
f ((x2))
3
Podemos reescrever as trs frmulas da seguinte forma:
f (x0) =1
h
[32f(x0) + 2f(x0 + h)
1
2f(x0 + 2h)
]+ h2
f ((x0))
3
f (x0 + h) =1
h
[12f(x0) +
1
2f(x0 + 2h)
]+ h2
f ((x0 + h))
6
f (x0 + 2h) =1
h
[1
2f(x0) 2f(x0 + h) +
3
2f(x0 + 2h)
]+ h2
f ((x0 + 2h))
3
ou ainda
f (x0) =1
2h[3f(x0) + 4f(x0 + h) f(x0 + 2h)] + h2
f ((x0))
3(2)
f (x0) =1
2h[f(x0 + h) f(x0 h)] + h2
f ((x0))
6(3)
f (x0) =1
2h[f(x0 2h) 4f(x0 h) + 3f(x0)] + h2
f ((x0))
3(4)
Observe que uma das frmulas exatamente as diferenas centrais obtida anteriormente.Analogamente, para construir as frmulas de cinco pontos tomamos o polinmio de Lagrange para cinco
pontos e chegamos a cinco frmulas, sendo uma delas a seguinte:
f (x0) =1
12h[f(x0 2h) 8f(x0 h) + 8f(x0 + h) f(x0 + 2h)] +
h4
30f (5)((x0)) (5)
Exemplo 5. Calcule a derivada numrica de f(x) = ex2em x = 1.5 pela frmula de trs e cinco pontos
para h = 0.1, h = 0.01 e h = 0.001.
A tabela mostra os resultados:
h h = 0.1 h = 0.01 h = 0.001diferenas progressivas 0.2809448 0.3125246 0.3158289diferenas regressivas 0.3545920 0.3199024 0.3165667trs pontos usando (2) 0.3127746 0.3161657 0.3161974trs pontos usando (3) 0.3177684 0.3162135 0.3161978trs pontos usando (4) 0.3135824 0.3161665 0.3161974cinco pontos usando (5) 0.3162384 0.316197677 0.3161976736860
O valor exato da derivada f (1.5) = 0.3161976736856.
1.5 Aproximao para a derivada segunda por diferenas centrais
Para aproximar a derivada segunda, considere as expanses em srie de Taylor
f(x0 + h) = f(x0) + hf(x0) +
h2
2f (x0) +
h3
6f (x0) +O(h
4)
5
f(x0 h) = f(x0) hf (x0) +h2
2f (x0)
h3
6f (x0) +O(h
4).
Somando as duas expresses, temos:
f(x0 + h) + f(x0 h) = 2f(x0) + h2f (x0) +O(h4)
ou seja, uma aproximao de segunda orde