Por uma questão de notação, vamos supor que (ou seja, é uma função com valor vetorial que pega um vetor como entrada e gera um vetor do mesmo tamanho). Existem duas preocupações: custo computacional e precisão numérica.f: Rn→ Rn
Calcular a derivada (a matriz jacobiana, ou , ou o que você preferir) usando diferenças finitas, exigirá função avaliações. Se você pudesse calcular a derivada usando aritmética de ponto flutuante diretamente da definição, teria que calcular o quociente de diferençaJ ( x ) ( ∇ f ( x ) ) T nD f( X )J( X )( ∇ f( x ) )Tn
D f( x ) eEu= limε → 0f( x + ε eEu)−f(x)ε
para cada , supondo que você não faça nenhum tipo de "diferenciação finita inteligente" (como Curtis-Powell-Reid) porque você conhece (ou pode detectar) o padrão de esparsidade de . Se for grande, pode haver muitas avaliações de função. Se você tiver uma expressão analítica para , calculá-la pode ser mais barata. Métodos de diferenciação automática (também conhecidos como algorítmicos) também podem ser usados em alguns casos para calcular aproximadamente 3 a 5 vezes o custo de uma avaliação de função.D f n D f D fi=1,…,nDfnD fD f
Existem também preocupações numéricas. Obviamente, em um computador, não podemos levar o limite de um escalar para zero; portanto, quando aproximamos , estamos realmente escolhendo como "pequeno" e calculandoεD fε
D f( x ) eEu≈ f( x + ε eEu) - f( X )ε,
onde significa que é uma aproximação e esperamos que seja uma aproximação realmente boa. Calcular esta aproximação na aritmética de ponto flutuante é difícil porque se você escolher muito grande, sua aproximação poderá ser ruim, mas se você escolher muito pequeno, poderá haver um erro de arredondamento significativo. Esses efeitos são abordados no artigo da Wikipedia sobre diferenciação numérica em detalhes superficiais; referências mais detalhadas podem ser encontradas no artigo.ε ε≈εε
Se o erro na matriz jacobiana não for muito grande, as iterações de Newton-Raphson convergirão. Para uma análise teórica detalhada, consulte o Capítulo 25 de Precisão e estabilidade de algoritmos numéricos de Nick Higham ou o artigo de Françoise Tisseur no qual se baseia.D f
As bibliotecas geralmente cuidam desses detalhes algorítmicos para você e, geralmente, as implementações de bibliotecas do algoritmo Newton-Raphson (ou suas variantes) convergirão bastante bem, mas de vez em quando haverá um problema que causa alguns problemas devido às desvantagens. acima. No caso escalar , eu usaria o método de Brent , devido à sua robustez e boa taxa de convergência na prática.( n = 1 )