Sei sulla pagina 1di 7

Diferenças finitas

Uma diferença finita é uma expressão da forma f(x + b) - f(x + a), que ao ser dividida
por (b - a) chama-se um quociente de diferenças. A técnica de diferenças finitas consiste em
aproximar a derivada de uma função via fórmulas discretas que requerem apenas um conjunto
finito de pares ordenados xi, yi i=1n, onde geralmente denotamos yi = f(xi).

Essas fórmulas podem ser obtidas de várias maneiras. Começamos com a fórmula mais
simples que pode ser obtida do cálculo diferencial. Seja f uma função diferenciável, a derivada
de f no ponto x0 é, por definição,

f′(x 0) = lim h→0f(x0 + h) - f(x0) h .

Deste limite, tomando h≠0 pequeno (não muito pequeno para evitar o cancelamento
catastrófico), é esperado que possamos obter uma aproximação razoável para f′(x 0). Assim,
a diferença finita progressiva de ordem 1

D+,hf(x0) := f(x0 + h) - f(x0) h ≈ f′(x 0)

é uma aproximação para f′(x 0).

Exemplo 8.1.1. Usando a diferença finita progressiva de ordem 1, calcule aproximações da


derivada de f(x) = cos(x) no ponto x = 1 usando h = 10-1, 10-2, 10-3,10-4, 10-12 e 10-14.
Calcule o erro |D+,hf(1) - f′(1)| obtido para cada valor de h.

Solução. Usando a diferença progressiva em (8.2), devemos calcular

D+,hf(1) = cos(1 + h) - cos(1) h

Fazendo isso, obtemos:

h D+,hf(1) |f′(1) - D +,hf(1)|

10-1 - 8,67062E -01 2,55909E -02


10-2 - 8,44158E -01 2,68746E -03
10-3 - 8,41741E -01 2,70011E -04
10-4 - 8,41498E -01 2,70137E -05
10-12 - 8,41549E -01 7,80679E -05
10-14 - 8,43769E -01 2,29851E -03
No Scilab, podemos calcular a aproximação da derivada f′(1) com h = 0,1 usando as
seguintes linhas de código:

--> deff(’y = f(x)’,’y = cos(x)’)


--> x0 = 1
--> h = 0.1
--> df = (f(x0+h) - f(x0))/h

E, similarmente, para outros valores de x0 e h.

Figura 8.1: Erro absoluto das derivadas numéricas no Exemplo 8.1.1.

8.1.1 Diferenças finitas via série de Taylor

Podemos construir fórmulas de diferenças finitas para uma função f(x) (suave1 ) no
ponto x = x0 a partir de seu polinômio de Taylor. Em alguns casos, este procedimento acaba
por nos fornecer, também, a ordem de truncamento da fórmula.

Diferença finita progressiva de ordem 1

Podemos obter uma aproximação para f′(x 0) a partir da série de Taylor

f(x0 + h) = f(x0) + hf′(x 0) + h2f″(ξ) 2 ,h > 0,ξ ∈ (x0,x0 + h).


Isolando f′(x 0), obtemos
f′(x 0) = f(x0 + h) - f(x0) h︸ D+,h - hf″(ξ) 2︸ O(h),

o que mostra que o erro de truncamento da diferença finita progressiva2

D+,hf(x0) := f(x0 + h) - f(x0) h


é de ordem h.

Diferença finita regressiva de ordem 1

Outra aproximação para a derivada primeira pode ser obtida da série de Taylor de f em torno
de (x0 - h) dada por

f(x0 - h) = f(x0) - hf′(x 0) + h2f″(ξ) 2 ,h > 0,ξ ∈ (x0,x0 + h).


Isolando f′(x 0), obtemos

f′(x 0) = f(x0) - f(x0 - h) h︸ D-,h + hf″(ξ) 2︸ O(h).

que fornece a diferença finita regressiva3

D-,hf(x0) := f(x0) - f(x0 - h) h ,


que possui erro de truncamento de ordem h.

Diferença finita central de ordem 2

Para obter uma aproximação para a derivada primeira com um erro menor, podemos utilizar as
séries de
Taylor:f(x0 + h) = f(x0) + hf′(x 0) + h2f″(x 0) + h3f‴(ξ+) 3! , (8.10) f(x0 - h) = f(x0) - hf′(x 0)
+ h2f″(x 0) + h3f‴(ξ-) 3! (8.11)

Fazendo a primeira equação menos a segunda, obtemos

f(x0 + h) - f(x0 - h) = 2hf′(x 0) + h3 f‴(ξ +) - f‴(ξ-) 3! .


Dividindo por 2h e isolando f′(x 0) obtemos
f′(x 0) = f(x0 + h) - f(x0 - h) 2h︸ D0,h - h2 f‴(ξ +) - f‴(ξ-) 2 ⋅ 3! ︸ O(h2).

Assim, a diferença finita central4

D0,hf(x0) := f(x0 + h) - f(x0 - h) 2h ,


é uma aproximação para f′(x 0) com erro de truncamento de ordem h2, ou simplesmente
ordem 2.

Exemplo 8.1.2. Calcule a derivada numérica da função f(x) = e1 2x no ponto x = 2 usando a


diferença progressiva, diferença regressiva e diferença central com h= 10-1, h = 10-2 e h = 10-
4. Também, calcule o erro absoluto da aproximação obtida em cada caso.

Solução. Usando a diferença progressiva, devemos calcular

D+,h = f(x + h) - f(x) h = e1 2(x+h) - e1 2x h .


Com a diferença regressiva, calculamos

D-,h = f(x) - f(x - h) h = e1 2x - e1 2(x-h) h .


Por fim, usando a diferença central temos

D0,h = f(x + h) - f(x - h) 2h = e1 2(x+h) - e1 2(x-h) 2h .


As aproximações e os erros absolutos calculados em cada caso estão apresentados na
seguinte tabela:

h D+,hf(2) Erro D-,h Erro D0,h Erro

10-1 1,39369 3,5E -02 1,32572 3,3E -02 1,35971 5,7E -04
10-2 1,36254 3,4E -03 1,35575 3,4E -03 1,35915 5,7E -06
10-4 1,35917 3,4E -05 1,35911 3,4E -05 1,35914 5,7E -10


Figura 8.2: Erro absoluto das derivadas numéricas no Exemplo 8.1.2.

Exemplo 8.1.3. Estime o erro absoluto no cálculo da derivada de f(x) = e-


x para x > 0 utilizando a diferença progressiva.

Solução. Da Equação 8.5, temos:

f′(x) = D +,hf(x) - hf″(ξ) 2 ,ξ > 0,


ou seja:

f′(x) - D +,hf(x)| = f″(ξ) 2 h,ξ > 0.


Agora, como |f″(x)| = |e-x| < 1 para x > 0, concluímos que:

|f′(x) - D +,hf(x)|≤ 1 2h,x > 0.


8.1.2 Erros de arredondamento

Para entender como os erros de arredondamento se propagam ao calcular as derivadas


numéricas vamos analisar a fórmula de diferenças finitas progressiva

D+,hf(x) = f(x + h) - f(x) h .


Nesse contexto temos o valor exato f′(x) para a derivada, a sua aproximação
numérica D+,hf(x) e a representação em número de máquina do operador D+,hf(x)que
denotaremos por D+,hf(x)¯. Denotando por ε(x,h) o erro de arredondamento ao calcularmos a
derivada, vamos assumir que

D+,hf(x)¯ = D+,hf(x)(1 + ε(x,h)) = f(x + h)¯ -f(x)¯ h (1 + ε(x,h)).


Também, consideremos

|f(x + h)¯ - f(x + h)| = δ(x,h) ≤ δ


e

|f(x)¯ - f(x)| = δ(x,0) ≤ δ,


onde f(x + h)¯ e f(x)¯ são as representações em ponto flutuante dos
números f(x + h) e f(x), respectivamente.

Então, da Equação (8.22), a diferença do valor da derivada e sua aproximação representada


em ponto flutuante pode ser estimada por:

f′(x) -D +,hf(x)¯ = f′(x) - f(x + h)¯ -f(x)¯ h (1 + ε(x,h)) .


Podemos reescrever o lado direito desta equação, da seguinte formaf′(x) -
D +,hf(x)¯ = f′(x) - f(x + h)¯ -
f(x)¯ h + f(x + h) - f(x + h) h (8.26) + f(x) - f(x) h (1 + ε) (8.27) = f′(x) + -
f(x + h) - f(x) h - f(x + h)¯ - f(x + h) h (8.28)+ f(x)¯ - f(x) h (1 + ε) . (8.29)

Então, separando os termos e estimando, obtemos:f′(x) -


D +,hf(x)¯ ≤ f′(x) - f(x + h) - f(x) h + f(x + h)¯ - f(x + h) h (8.30) + f(x)¯ - f(x) h |1 + ε| + f(x
+ h) - f(x) h ε (8.31) ≤ Mh + δ h + δ h|1 + ε| + |f′(x)|ε(8.32) ≤ Mh + 2δ h |1 + ε| + |f′(x)|ε (8.33)

onde

M = 1 2 max x≤y≤x+h|f″(y)|
está relacionado com o erro de truncamento.

Por fim, obtemos a seguinte estimativa para o erro absoluto na computação da derivada
numérica:

f′(x) -D +,hf(x)¯ ≤ Mh + 2δ h |1 + ε| + |f′(x)|ε.


Esta estimativa mostra que se o valor de h for muito pequeno o erro ao calcular a
aproximação numérica cresce. Isso nos motiva a procurar o valor ótimo de hque minimiza o
erro.

Exemplo 8.1.4. No Exemplo 8.1.2, computamos a derivada numérica da


função f(x) = e1 2x no ponto x = 2 usando as fórmulas de diferenças finitas progressivas,
regressivas e central. A Figura 8.2, mostra que, para valores h muito pequenos, os erros de
arredondamento passam a dominar os cálculos e, por consequência, o erro da derivada
numérica passa a aumentar. Pela figura, podemos inferir que a escolha ótima de h para as
fórmulas progressiva e regressivas é h ≈ 10-7. Agora, para a fórmula central, h ≈ 10-5 parece
ser a melhor escolha.

Observação 8.1.2. Note que a estimativa (8.35), mostra que o erro na computação da derivada
numérica depende da função que está sendo derivada. Assim, o hótimo depende não somente
da fórmula de diferenças finitas, mas também da função a ser derivada.

Potrebbero piacerti anche