Panoramica
Buona domanda. C'è un documento intitolato "Migliorare l'accuratezza del metodo di differenziazione della matrice per i punti di collocazione arbitrari" di R. Baltensperger. A mio avviso non è un grosso problema, ma ha un punto (che era già noto prima dell'apparizione nel 2000): sottolinea l'importanza di una rappresentazione accurata del fatto che la derivata della funzione costante f(x)=1 dovrebbe essere zero (questo vale esattamente in senso matematico, ma non necessariamente nella rappresentazione numerica).
È semplice vedere che ciò richiede che le somme delle righe delle n-esime matrici derivate D(n) siano zero. È comune applicare questo vincolo regolando la diagonale, ovvero impostando D(n)jj:=−∑i=1i≠jNDij.(1)
È chiaro che questa funzione non è valida quando si lavora su un computer a causa di errori di arrotondamento nei calcoli in virgola mobile. La cosa più sorprendente è che questi errori sono ancora più gravi quando si usano le formule analitiche per la matrice derivativa (che sono disponibili per molti punti di collocazione classici, ad esempio Gauss-Lobatto).
Ora, il documento (e i riferimenti in esso) afferma che l'errore della derivata è nell'ordine della deviazione della riga somma da zero. L'obiettivo è quindi di renderli numericamente i più piccoli possibili.
Test numerici
Il punto positivo è che la procedura di Fornberg sembra essere abbastanza buona in questo senso. Nell'immagine seguente ho confrontato il comportamento della prima matrice derivativa, analitica, esatta e quella derivata dall'algoritmo di Fornberg, per un numero variabile di punti di collocazione di Chebyshev-Lobatto.
Ancora una volta, credendo alla dichiarazione nel documento citato, questo implica che l'algoritmo di Fornberg produrrà risultati più accurati per il derivato.
f(x)=11+x2.(2)
En=maxi∈{0,…,n}∣∣∣f′(xi)−∑j=1nDijf(xj)∣∣∣.(3)
D~jj=Djj−(∑i=1nDji),for all j.(4)
Conclusione
In conclusione, il metodo di Fornberg sembra essere abbastanza accurato, nel caso anche di circa 3 ordini di grandezza più accurati dei risultati delle formule analitiche. Questo dovrebbe essere abbastanza preciso per la maggior parte delle applicazioni. Inoltre, questo è notevole perché Fornberg non sembra includere esplicitamente questo fatto nel suo metodo (almeno non c'è menzione nei due articoli di Fornberg).N=512
Un altro ordine di grandezza può essere ottenuto per questo esempio attraverso una semplice inclusione dell'Eq. (4). Poiché si tratta di un approccio abbastanza semplice e applicato una sola volta per ogni derivata, non vedo alcun motivo per non utilizzarlo.
Il metodo dal documento Baltensperger - che utilizza un approccio più sofisticato per valutare la somma nell'Eq. (1) al fine di ridurre gli errori di arrotondamento - produce circa lo stesso ordine di grandezza per l'errore. Quindi, almeno per questo esempio, è approssimativamente equivalente al metodo "Adjusted Fornberg" sopra.