Svantaggi dell'approssimazione di Newton-Raphson con derivata numerica approssimativa


17

Supponiamo di avere una funzione f e di voler trovare X tale che . Potrei usare il metodo Newton-Raphson. Ma questo richiede che conosca la funzione derivata . Un'espressione analitica per potrebbe non essere disponibile. Ad esempio, f può essere definito da un pezzo complicato di codice informatico che consulta un database di valori sperimentali.f ( x ) f ff(X)0f'(X)ff

Ma anche se f' è complicato, posso approssimare f'(un') per ogni particolare un' scegliendo un piccolo numero ε e calcolando f'(un')f(un'+ε)-f(un')ε .

Ho sentito che ci sono svantaggi distinti in questo approccio, ma non so quali siano. Wikipedia suggerisce che "L'uso di questa approssimazione si tradurrebbe in qualcosa di simile al metodo secante la cui convergenza è più lenta di quella del metodo di Newton".

Qualcuno può approfondire questo argomento e fornire un riferimento che discute in particolare i problemi con questa tecnica?


5
Il metodo secante è un'ottima alternativa quando il derivato è costoso da calcolare. Tre passaggi secanti sono generalmente equivalenti all'incirca a due passi Newton e i passi sono più economici.

1
Ogni volta che calcoli una derivata numericamente per differenza finita (come stai suggerendo), qualsiasi rumore nella funzione viene amplificato, quindi devi scegliere il tuo epsilon con attenzione. Una possibilità è, quando ti avvicini alla soluzione, passare a un metodo di suddivisione binaria, che è garantito per convergere finché f è monotonico localmente.
Mike Dunlavey,

2
Come accennato da André, le derivate numeriche a due punti, come suggerisci, sono equivalenti a un metodo Secant riavviato . Per una convergenza più rapida, tuttavia, suggerirei il cosiddetto algoritmo Illinois , che è un parente stretto del metodo Secant e utilizzerà solo un punto per passaggio, rispetto a due nel tuo caso, e non rimarrà bloccato come il Metodo di falsa posizione.
Pedro,

Qual è la dimensione di ? Maggiore è la dimensione, più prezioso diventa un derivato. Newton-Krylov privo di Jacobiani è un'opzione che non ha bisogno di derivati ​​espliciti (sebbene il precondizionamento sia importante per i sistemi mal condizionati). X
Jed Brown,

Risposte:


12

Per motivi di notazione, supponiamo che (ovvero, è una funzione con valori vettoriali che accetta un vettore come input e genera un vettore delle stesse dimensioni). Ci sono due preoccupazioni: costo computazionale e precisione numerica.f:RnRn

Calcolare la derivata (la matrice giacobina, J ( x ) o ( f ( x ) ) T , o qualunque cosa tu preferisca) usando differenze finite richiederà n valutazioni di funzione. Se è possibile calcolare la derivata utilizzando l'aritmetica in virgola mobile direttamente dalla definizione, è necessario calcolare il quoziente di differenzaDf(x)J(x)(f(X))Tn

Df(X)eio=limε0f(X+εeio)-f(X)ε

per ogni , supponendo che tu non faccia alcun tipo di "differenziazione finita intelligente" (come Curtis-Powell-Reid) perché conosci (o riesci a rilevare) il modello di scarsità di D f . Se n è grande, potrebbero essere molte le valutazioni delle funzioni. Se hai un'espressione analitica per D f , calcolarla potrebbe essere più economico. In alcuni casi è anche possibile utilizzare metodi di differenziazione automatici (anche noti come algoritmi) per calcolare D f approssimativamente da 3 a 5 volte il costo di una valutazione della funzione.io=1,...,nDfnDfDf

Ci sono anche preoccupazioni numeriche. Ovviamente, su un computer, non possiamo prendere il limite di uno scalare in quanto va a zero, quindi quando approssimiamo , stiamo davvero scegliendo ε per essere "piccolo" e calcolandoDfε

Df(X)eiof(X+εeio)-f(X)ε,

dove significa che è un'approssimazione e speriamo che sia un'approssimazione davvero buona. Calcolare questa approssimazione nell'aritmetica in virgola mobile è difficile perché se si seleziona ε troppo grande, l'approssimazione potrebbe essere errata, ma se si seleziona ε troppo piccolo, si potrebbe verificare un errore di arrotondamento significativo. Questi effetti sono trattati nell'articolo di Wikipedia sulla differenziazione numerica in dettaglio superficiale; riferimenti più dettagliati sono disponibili all'interno dell'articolo.εε

Se l'errore nella matrice Jacobiana non è troppo grande, le iterazioni di Newton-Raphson convergeranno. Per un'analisi teorica dettagliata, vedere il capitolo 25 di Precisione e stabilità degli algoritmi numerici di Nick Higham o l'articolo di Françoise Tisseur su cui si basa.Df

Le biblioteche generalmente si prendono cura di questi dettagli algoritmici per te, e di solito, le implementazioni delle librerie dell'algoritmo Newton-Raphson (o sue varianti) convergeranno abbastanza bene, ma ogni tanto ci sarà un problema che causa qualche problema a causa degli svantaggi sopra. Nel caso scalare , userei il metodo di Brent , grazie alla sua robustezza e al buon tasso di convergenza nella pratica.(n=1)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.