Derivada Numérica

De Física Computacional
Revisão de 14h35min de 19 de setembro de 2011 por Tekkito (discussão | contribs) (Criou página com ''''A derivada numérica''' permite estimar a derivada de uma função matemática usando os valores da função. O método numérico se baseia na própria definição de derivad...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

A derivada numérica permite estimar a derivada de uma função matemática usando os valores da função.

O método numérico se baseia na própria definição de derivada: o limite do quociente incremental da função quando o incremento tende a zero. Matematicamente é mais claro:

Se nessa expressão não tomamos o limite podemos obter uma estimativa numérica da derivada que dependerá do valor do incremento :

A expressão a direita é chamada de quociente diferencial de Newton.

Ao usá-la para calcular a derivada numericamente devemos ser cientes de que não é um cálculo exato. Existem duas fontes de erro nessa expressão, o erro de truncamento e o erro de arredondamento. Para estimar o erro de truncamento recorremos a Formula de Taylor:

Por tanto:

Se o for pequeno podemos dizer que o erro ao usar a quociente de Newton para calcular a derivada é proporcional a . De maneira geral o erro cresce linearmente com . Por tanto devemos usar valores pequenos do incremento. No entanto ao fazer a conta numérica temos precisão finita (o numero de casas dos números). Não é possível levar a expressão ao limite teórico . Então pelo outro extremo aparece o segundo tipo de erro, o de arredondamento. Quando é muito pequeno, ao fazer a diferença ente os dois valores da função, podemos ter esse erro que vai ser relativamente maior quanto menor for , piorando a estimativa da derivada. Isso coloca um limite inferior para o incremento e assim para a precisão da estimativa numérica da derivada.
Resumindo, por um lado temos o erro de truncamento e pelo outro o de arredondamento, a valor ótimo será uma solução de compromisso entre os dois tipos de erro.

Outro cálculo numérico da derivada pode ser feito baseado na declividade de dois pontos próximos, um antes e outro depois do ponto onde queremos avaliar a derivada: (x-h,f(x-h)) e (x+h,f(x+h)).
A declividade da linha definida por esses dois pontos é;

que é chamada de derivada centrada.
O erro desta estimativa é menor que na estimativa para frente (ou para atrás).

Existem formas de contornar o problema do valor ótimo de incremento podendo ir a valores menores dele e sim melhorar a estimativa da derivada numérica.

Programa

Implementar a derivada numérica em FORTRAN é apenas uma linha de código:

...
Df = (f(x+h) - f(x))/h
...

Onde f(x) deve ser definida num bloco FUNCTION F(x) ... END FUNCTION F.
O resto depende de onde e para que queremos calcular a derivada.

Exemplos

Com a função f(x) abaixo, a modo de exemplo, a questão do compromisso entre o erro de truncamento e o erro de arredondamento deve-se esclarecer.
A função é:

Com o método descrito acima vamos avaliar numericamente (para frente) a derivada num ponto qualquer, digamos x=3. A continuação figuras mostrando o resultado para vários valores de decrescentes num fator 2 partindo de 2. Ou seja {2, 1, 1/2, 1/4, ...}

Der.pngderivada x dx

A esquerda a derivada em x=3 numérica em função do utilizado. O valor exato da derivada em é
Vemos que em volta de começa a convergir, piorando a partir de .
Na figura a direita vemos ampliada a região de convergência, onde o valor de parece ser o ótimo.
NOTA: os programa FORTRAN usado para o calculo da derivada esta em Real (ou Real*4, ou seja ponto flutuante em representação de 32 bits).
Como seria em dupla precisão (Real*8)?

Links Externos