Derivação Numérica

Em muitas situações, o cálculo analítico da derivada revela-se moroso ou mesmo impraticável, surgindo a necessidade de considerar uma aproximação numérica.
Um exemplo simples de derivação numérica consiste numa aproximação do tipo
 

f '(x) ~   f(x+h) - f(x)
h
mas podemos considerar aproximações mais eficazes.

Método dos Coeficientes Indeterminados
O método dos coeficientes indeterminados permite a aproximação no cálculo de derivadas, usando apenas os valores da função em certos pontos.
Tal como no caso da integração numérica, iremos definir o grau da aproximação através da sua exactidão para polinómios.
Assim, designando Dz( f ) = f '(z), Dz2( f ) = f ''(z), Dz3( f ) = f '''(z), etc. procuramos aproximar as derivadas de várias ordens, num certo ponto z, através de regras de derivação numérica da forma

Rz ( f ) =  N
S
k=1
w f (xk)

Consideremos a aproximação da primeira derivada no ponto z, definida por Dz.
Para obter uma regra com pelo menos grau m, devemos impor as equações

Dz(1) = Rz(1), Dz(x) = Rz(x), Dz(x2) = Rz(x2), ..., Dz(xm) = Rz(xm).

Tal como no caso da integração, o objectivo é determinar os pesos wk e os nós xk pela resolução do sistema de equações.
Se estabelecermos quais são os nós xk resta obter os pesos de derivação wk pela resolução de um sistema linear.



Exemplo 1. Diferenças Progressivas/Regressivas.
Consideramos x1= z, x2= z+h, com h não nulo (positivo ou negativo).
Os nós estão bem determinados, resta obter os pesos w1, w2, através da resolução do sistema linear:

Dz(1) = Rz(1)  <=>  0 = w1 + w2  <=>  w1 = - w2
Dz(x) = Rz(x)  <=>   1 = w1 x1 + w2 x2 <=> 1 = w1 z + w2 (z+h) = -w2 z + w2 (z+h) = w2 h <=> w2 =1/h

Portanto, w1 = - 1/h, w2 = 1/h, e obtemos

Rz(f ) =   f(z+h) - f(z) 
h
 = f [z,z+h]

que é exactamente a aproximação que apresentámos inicialmente.
Esta aproximação tem pelo menos grau 1, por construção, e é fácil ver que não tem grau 2, porque
 Dz(x2) = Rz(x2)  <=> 2 z = ((z+h)2-z2) / h  <=> 2 z h = 2 z h + h<=> h = 0, o que é falso.

No caso em que h>0, dizemos que se trata de uma aproximação com uma diferença progressiva,
e no caso em que h<0, dizemos que é uma aproximação com uma diferença regressiva.



Exemplo 2. Diferenças Centradas.
Vamos agora tentar obter uma fórmula de grau 3, usando 2 nós. Como os nós são desconhecidos, o sistema não será linear

Dz(1) = Rz(1)  <=>  0 = w1 + w2  <=>  w1 = - w2
Dz(x) = Rz(x)  <=>   1 = w1 x1 + w2 x2  <=>  1 = w2(x2 - x1)
Dz(x2) = Rz(x2)  <=> 2z = w1 x12 + w2 x22  <=>  2z = w2 (x22 -x12 ) = w2 (x2 - x1)(x2 + x1) = x2 + x1
Dz(x3) = Rz(x3)  <=> 3z2 = w1 x13 + w2 x23  <=>  3z2 = w2 (x23 - x13) = w2 (x2 - x1)(x2 2+ x2 x1+ x12) = x2 2+ x2 x1+ x12

Da 3ª.equação, 4z2 = (x2 +x1)2 = x2 2+ 2 x2 x1+ x12, e obtemos (subtraindo da 4ª), z2 = x2 x1.
Ainda pela 4ª.equação, 3 x2 x1 = x2 2+ x2 x1+ x12 implica  0 = x2 2 - 2x2 x1+ x12  = (x2 - x1)2, ou seja x2 = x1.
Conclui-se, pela 2ª.equação,  1 = w2(x2 - x1) = 0, uma impossibilidade!
Assim, não é possível obter uma fórmula de grau 3 com apenas 2 nós.
Apenas será possível encontrar uma fórmula de grau 2, desde que se verifique

w1 = - w2 , 1 = w2(x2 - x1), z = (x2 + x1)/2
Em particular, designando x2 = z+h, x1 = z-h, as três equações são verificadas com w2=1/(2h), w1= -1/(2h), e a fórmula de grau 2 fica
 
Rz(f ) =   f(z+h) - f(z-h) 
2h
 = f [z-h, z+h] 

Neste caso temos uma aproximação com uma diferença centrada.



Exemplo 3. Aplicação a derivadas de ordem superior. Diferenças centradas.
Consideramos agora, como exemplo, a aproximação de Dz2(f ) = f ''(z), com uma fórmula com 3 nós
x1 = z, x2 = z-h, x3 = z+h. Vamos determinar os pesos, resolvendo o sistema linear

Dz2(1) = Rz(1)  <=>  0 = w1 + w2 + w3
Dz2(x) = Rz(x)  <=>   0 = w1 x1 + w2 x2 + w3 x3 = w1 z+ w2(z-h) + w3 (z+h) = - w2 + w3  <=>   w2 = w3
Dz2(x2) = Rz(x2)  <=> 2 = w1 x12 + w2 x22 + w3 x32 = -2w2 z2+ w2 (z-h)2 + w2 (z+h)2 = 2 w2 h2  <=> w2 = 1/h2

Portanto, w3 = w2 = 1/h2, w1 = -2/h2, e podemos obter uma fórmula com pelo menos grau 2 para aproximar a segunda derivada:

Rz(f ) =   f(z+h) - 2f(z) + f(z-h) 
h2
 = 2 f [z-h, z, z+h]
Repare-se que Rz(f ) = 2 f [z-h, z, z+h] porque
f [z-h, z, z+h] = (f [z, z+h] - f [z-h, z])/(2h) = {(f (z+h)-f (z))/h - (f (z)-f (z-h))/h}/(2h) = {f (z+h)-2f (z) + f (z-h))}/(2h2)
Iremos ver que esta fórmula de aproximação da segunda derivada tem mesmo grau 3.

Esta aproximação da segunda derivada é considerada uma aproximação com diferenças centradas.


Dedução do erro na derivação numérica.
Através da expansão em série de Taylor, podemos obter uma fórmula de erro para as aproximações que obtivémos anteriormente.
(1) Começamos pela fórmula do Exemplo 1, que é uma fórmula de grau 1, que aproxima a primeira derivada.
Como habitualmente, o erro é definido por

E(f ) = Dz(f )-Rz(f ).

Admitindo que f ÎC2, pela série de Taylor com resto de Lagrange obtemos
f (z+h) = f (z) +  f '(z) h + f ''(x) h2/2
e portanto dividindo por h,
(f (z+h) - f (z))/h - f '(z) =  f ''(x) h/2, ou seja,

E(f ) = Dz(f )-Rz(f ) = f '(z) - f [z, z+h] = - f ''(x) h/2 .

De facto, através da expansão em série de Taylor podemos deduzir as fórmulas, e obter imediatamente uma estimativa de erro, através do resto de Lagrange.
Repare-se que f '' = 0 garante erro nulo, ou seja, a fórmula é exacta para polinómios de grau 1.


(2) De forma semelhante para a fórmula do Exemplo 2, uma fórmula de grau 2 que aproxima a primeira derivada, obtemos para f ÎC3,
f (z+h) = f (z) +  f '(z) h + f ''(z) h2/2 + f '''(x+) h3/6
f (z-h) = f (z) - f '(z) h + f ''(z) h2/2 - f '''(x-) h3/6
e subtraindo
f (z+h) - f (z-h) =  2 f '(z) h + f '''(x+) h3/6 + f '''(x-) h3/6.
Pelo Teorema do Valor Intermédio, existe x tal que (f '''(x+)+f '''(x-))/2 = f '''(x).
Logo, dividindo por 2h,
(f (z+h) - f (z-h)) / (2h) =  f '(z) + f '''(x) h2/6, ou seja,

E(f ) = Dz(f )-Rz(f ) = f '(z) - f [z-h, z+h] = - f '''(x) h2/6 .

Também aqui podemos reparar que f ''' = 0 garante erro nulo, ou seja, a fórmula é exacta para polinómios de grau 2.


(3) Terminamos com o erro para a fórmula do Exemplo 3, a fórmula com pelo menos grau 2 que aproxima a segunda derivada.
Obtemos para f ÎC4,
f (z+h) = f (z) +  f '(z) h + f ''(z) h2/2 + f '''(z) h3/6 + f (4)(x+) h4/24
f (z-h) = f (z) - f '(z) h + f ''(z) h2/2 - f '''(z) h3/6 + f (4)(x-) h4/24
e somando ambas,
f (z+h) + f (z-h) = 2 f (z) +  f ''(z) h2 + ( f (4)(x+) + f (4)(x-)) h4/24.
Aplicando o T. V. Intermédio e dividindo por h2, obtemos
(f (z+h) + f (z-h) - 2 f (z))/ h2 = f ''(z) + f (4)(x) h2/12, ou seja,

E(f ) = Dz(f )-Rz(f )  = f ''(z) -2 f [z-h, z, z+h] = - f (4)(x) h2/12.

Repararamos agora que f (4) = 0 garante erro nulo, ou seja, a fórmula é exacta mesmo para polinómios de grau 3.