1 derivação numérica - mat.ufrgs.br fabio/der_int.pdf · derivação e integração numérica 1

Download 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

Category:

Documents

0 download

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