Use o botão abaixo para reportar erros ou dar sugestões.

Cálculo Numérico - Versão GNU Octave

8.3 Obtenção de fórmulas por polinômios interpoladores


Para aproximar a derivada de uma função f(x) em x0, x1 ou x2 usaremos os três pontos vizinhos (x0,f(x0)), (x1,f(x1)) e (x2,f(x2)). Uma interpolação usando polinômios de Lagrange para esses três 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). (8.49)

A derivada de f(x) é

f(x) = f(x 0) 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). (8.50)

Trocando x por x0, temos

f(x 0) = 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). (8.51)

Considerando uma malha equiespaçada onde x1 = x0 + h e x2 = x0 + 2h, temos:

f(x 0) = f(x0) - 3h (-h)(-2h) + f(x1) - 2h (h)(-h) + f(x2) - h (2h)(h) + f(ξ(x0)) 6 (-h)(-2h) = 1 h -3 2f(x0) + 2f(x1) - 1 2f(x2) + h2f(ξ(x 0)) 3 (8.52)

Similarmente, trocando x por x1 ou trocando x por x2 na expressão (8.50), temos outras duas expressões f(x 1) = 1 h -1 2f(x0) + 1 2f(x2) + h2f(ξ(x 1)) 6 (8.53) f(x 2) = 1 h 1 2f(x0) - 2f(x1) + 3 2f(x2) + h2f(ξ(x 2)) 3 (8.54)

Podemos reescrever as três fórmulas da seguinte forma: f(x 0) = 1 h -3 2f(x0) + 2f(x0 + h) - 1 2f(x0 + 2h) + h2f(ξ(x 0)) 3 (8.55) f(x 0 + h) = 1 h -1 2f(x0) + 1 2f(x0 + 2h) + h2f(ξ(x 0 + h)) 6 (8.56) f(x 0 + 2h) = 1 h 1 2f(x0) - 2f(x0 + h) + 3 2f(x0 + 2h) + h2f(ξ(x 0 + 2h)) 3 (8.57)

ou ainda f(x 0) = 1 2h -3f(x0) + 4f(x0 + h) - f(x0 + 2h) + h2f(ξ(x 0)) 3 (8.58) f(x 0) = 1 2h f(x0 + h) - f(x0 - h) + h2f(ξ(x 0)) 6 (8.59) f(x 0) = 1 2h f(x0 - 2h) - 4f(x0 - h) + 3f(x0) + h2f(ξ(x 0)) 3 (8.60)

Observe que uma das fórmulas é exatamente as diferenças centrais obtida anteriormente.

Observação 8.3.1. O pacote symbolic do GNU Octave permite-nos fazermos computação simbólica. Por exemplo, podemos obter a fórmula de diferenças finitas progressiva de ordem 2 computando

#carrega o pacote symbolic  
pkg load symbolic;  
#variáveis simbólicas  
syms x x1 x2 x3 y1 y2 y3 h;  
#polinômios de Lagrange  
L1 = (x-x2)*(x-x3)/((x1-x2)*(x1-x3));  
L2 = (x-x1)*(x-x3)/((x2-x1)*(x2-x3));  
L3 = (x-x1)*(x-x2)/((x3-x1)*(x3-x2));  
#polinômio interpolador  
f = y1*L1 + y2*L2 + y3*L3;  
#derivada do polinômio interpolador  
df = diff(f,x);  
#substituições de variáveis  
dfp = subs(df,x,x1);  
dfp = subs(dfp,{x1,x2,x3},{x,x+h,x+2*h})

o que produz

    3·y1   2·y2    y3  
  - ____ + ____ - ____  
    2·h     h     2·h

Agora, basta observar que, neste caso, y1f(x), y2 = f(x + h) e y3 = f(x + 2h). Logo, temos obtido a fórmula desejada, veja a equação (8.58).

Analogamente, para construir as fórmulas de cinco pontos tomamos o polinômio de Lagrange para cinco pontos e chegamos a cinco fórmulas, sendo uma delas a seguinte:

f(x 0) = 1 12h f(x0 - 2h) - 8f(x0 - h) + 8f(x0 + h) - f(x0 + 2h)+h4 30f(5)(ξ(x 0)) (8.61)

Exemplo 8.3.1. Calcule a derivada numérica de f(x) = e-x2 em x = 1,5 pelas fórmulas de três e cinco pontos para h = 0,1, h = 0,01 e h = 0,001.

Solução. No GNU Octave, podemos computar estas derivadas numéricas com h = 0.1 da seguinte forma:

f = @(x) exp(-x^2);  
x=1.5;  
h=0.1;  
#progressiva de ordem 1  
dp1 = (f(x+h)-f(x))/h  
#regressiva de ordem 1  
dr1 = (f(x)-f(x-h))/h  
#central de ordem 2  
dc2 = (f(x+h)-f(x-h))/(2*h)  
#progressiva de ordem 2  
dp2 = (-3*f(x)+4*f(x+h)-f(x+2*h))/(2*h)  
#regressiva de ordem 2  
dr2 = (f(x-2*h)-4*f(x-h)+3*f(x))/(2*h)  
#central de ordem 4  
dc4 = (f(x-2*h)-8*f(x-h)+8*f(x+h)-f(x+2*h))/(12*h)

e, análogo, para h = 0.01 e h = 0.001. O valor analítico da derivada é f(1,5) -0,3161976736856. A Tabela 8.1 mostra os resultados computados com as derivadas numéricas.


Diferenças Finitas h = 0,1 0,01 0,001




Progressiva O(h) - 0,2809448 - 0,3125246 - 0,3158289
Regressiva O(h) - 0,3545920 - 0,3199024 - 0,3165667
Progressiva O(h2) - 0,3127746 - 0,3161657 - 0,3161974
Central O(h2) - 0,3177684 - 0,3162135 - 0,3161978
Regressiva O(h2) - 0,3135824 - 0,3161665 - 0,3161974
Central O(h4) - 0,3162384 - 0,3161977 - 0,31619767





Tabela 8.1: Derivadas numéricas de f(x) = e-x2 em x = 1,5. Veja o Exemplo 8.3.1.

8.3.1 Exercícios resolvidos


Esta seção carece de exercícios resolvidos. Clique em e inicie a editá-la agora mesmo. Veja outras formas de participar clicando aqui.

Exercícios


Esta seção carece de exercícios. Clique em e inicie a editá-la agora mesmo. Veja outras formas de participar clicando aqui.

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 15/5/2019 às 15:24:49.

Informe erros ou edite você mesmo!