Desvantagens da aproximação de Newton-Raphson com derivada numérica aproximada

17

Suponha que eu tenho alguma função e quero encontrar tal que . Eu poderia usar o método Newton-Raphson. Mas isso requer que eu conheça a função derivada . Uma expressão analítica para pode estar indisponível. Por exemplo, pode ser definido por um código complicado de computador que consulta um banco de dados de valores experimentais.fxf(x)0 0f(x)ff

Mas mesmo se é complicado, eu posso aproximar para qualquer particular, optando por um pequeno número e calculting .ff(uma)umaϵf(uma)f(uma+ϵ)-f(uma)ϵ

Ouvi dizer que existem desvantagens distintas nessa abordagem, mas não sei quais são elas. A Wikipedia sugere que "Usar esta aproximação resultaria em algo como o método secante cuja convergência é mais lenta que a do método de Newton".

Alguém pode, por favor, elaborar isso e fornecer uma referência que discuta particularmente os problemas com essa técnica?

Mark Dominus
fonte
5
O método secante é uma excelente alternativa quando o derivado é caro para calcular. Três etapas secantes são geralmente equivalentes a duas etapas Newton, e as etapas são mais baratas.
11
Sempre que você calcula uma derivada numericamente por diferença finita (como você está sugerindo), qualquer ruído na função é amplificado; portanto, você deve escolher seu epsilon com cuidado. Uma possibilidade é que, quando você se aproxima da solução, mude para um método de subdivisão binária, que garante convergência desde que f seja localmente monotônico.
Mike Dunlavey
2
Como mencionado por André, derivadas numéricas de dois pontos, como você sugere, são equivalentes a um método Secant reiniciado . Para uma convergência mais rápida, no entanto, eu sugeriria o chamado algoritmo de Illinois , que é um parente próximo do método Secant e usará apenas um ponto por etapa, em oposição a dois no seu caso, e não ficará preso como o Método de posição falsa.
Pedro
Qual é a dimensão de ? Quanto maior a dimensão, mais valiosa se torna uma derivada. Newton-Krylov, livre de jacobinos, é uma opção que não precisa de derivadas explícitas (embora o pré-condicionamento seja importante para sistemas mal condicionados). x
Jed Brown

Respostas:

12

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:RnRn

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 nDf(x)J(x)(f(x))Tn

Df(x)ei=limε0f(x+εei)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,,nDfnDfDf

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εDfε

Df(x)eEuf(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.Df

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 1)

Geoff Oxberry
fonte