Come posso differenziare numericamente una funzione campionata in modo non uniforme?


21

Le formule standard delle differenze finite sono utilizzabili per calcolare numericamente una derivata nell'aspettativa che tu abbia valori di funzione in punti equidistanti, in modo che sia una costante. Cosa succede se ho punti spaziati in modo non uniforme, in modo che ora varia da una coppia di punti adiacenti a quella successiva? Ovviamente posso ancora calcolare una prima derivata come , ma ci sono formule di differenziazione numerica a ordini superiori e precisioni che possono adattarsi alle variazioni delle dimensioni della griglia?f(xk)hxk+1xkhf(x)1hk[f(xk+1)f(xk)]


7
Puoi sempre costruire un interpolante polinomiale (a tratti) che passa attraverso i tuoi punti e quindi differenziarlo.
JM,

In alternativa, è possibile ricostruire le formule delle differenze finite senza la semplificazione . Spesso ciò deve essere fatto per l'integrazione, ma è probabile che il suggerimento di JM sia più stabile. h=xk+1xk
rcollyer,

Che tipo di funzione è quella?
mbq

L'esempio che ha posto questa domanda è una funzione campionata con valori spaziati logaritmicamente , ma il calcolo della seconda derivata dei dati trasformati nel registro dà risultati divertenti e volevo verificarlo. Inoltre ho pensato di porre una domanda il più generale possibile. xk=x0δK
David Z,

1
Per quanto mi riguarda, qualcosa che funziona solo per il primo e il secondo derivato sarebbe una risposta perfettamente valida alla domanda. Ho scritto la domanda come ho fatto per consentire una risposta generale se qualcuno ne avesse una, ma ovviamente in pratica è il primo e il secondo derivato che sono più utili.
David Z,

Risposte:


21

Il commento di JM è giusto: puoi trovare un polinomio interpolante e differenziarlo. Esistono altri modi per derivare tali formule; tipicamente, portano tutti a risolvere un sistema van der Monde per i coefficienti. Questo approccio è problematico quando lo stencil a differenza finita include un gran numero di punti, perché le matrici Vandermonde diventano mal condizionate. Un approccio più numericamente stabile è stato ideato da Fornberg , e viene spiegato più chiaramente e in generale in un suo secondo documento .

Ecco un semplice script MATLAB che implementa il metodo di Fornberg per calcolare i coefficienti di un'approssimazione di differenza finita per qualsiasi derivato di ordine con qualsiasi set di punti. Per una bella spiegazione, consultare il capitolo 1 del testo di LeVeque sui metodi delle differenze finite .

Un po 'di più sulle formule FD: supponiamo di avere una griglia 1D. Se si utilizza l'intera serie di punti della griglia per determinare una serie di formule FD, il metodo risultante equivale a trovare un polinomio interpolante attraverso l'intera griglia e differenziarlo. Questo approccio viene definito collocazione spettrale. In alternativa, per ciascun punto della griglia è possibile determinare una formula FD utilizzando solo alcuni punti vicini. Questo è ciò che viene fatto nei metodi tradizionali a differenza finita.

Come menzionato nei commenti seguenti, l'uso di differenze finite di ordine molto elevato può portare a oscillazioni (il fenomeno Runge) se i punti non sono scelti con cura.


3
D'altra parte, quando si utilizzano i polinomi interpolati, si deve sempre ricordare cose come il fenomeno di Runge che potrebbe accadere con i dati, se i dati sono configurati in modo perversamente sufficiente. Direi che i polinomi a tratti potrebbero essere meno sensibili a questo ...
JM,

1
Mi chiedo se il lavoro di Koev e la tecnica di Fornberg potrebbero essere correlati?
David Ketcheson,

1
È interessante notare che sembra esserci una somiglianza tra le formule di Fornberg e le formule precedenti sviluppate da Lyness e Moler basate sul metodo Neville classico per generare il polinomio interpolante. In effetti potrebbero essere le stesse formule in notazione diversa, ma non ho verificato a fondo.
JM,

2
L'interpolazione polinomiale con molti punti richiede che le distribuzioni di punti speciali siano ben condizionate. In generale, per distribuzioni puntuali non uniformi non è consigliabile eseguire l'interpolazione e quindi differenziare il polinomio di interpolazione perché può essere altamente oscillatorio (si pensi a "fenomeno Runge" come menzionato da JM). A seconda delle esigenze, potrebbe essere una buona idea usare solo spline cubiche che per molti scopi pratici possono fornire buone risposte al problema di approssimazione dei derivati ​​approssimativi.
Allan P. Engsig-Karup,

1
Bella risposta. A solo scopo informativo, questo documento offre un approccio alternativo a quello di Fornberg. Segue lo stesso principio, ma fornisce un algoritmo diverso.
davidhigh,


2

Le risposte di cui sopra sono ottime in termini di darti un codice da usare, ma non sono altrettanto buone in termini di teoria. Se vuoi approfondire l'interpolazione dei polinomi, dai un'occhiata a questo trattamento teorico con alcuni esempi concreti:

Singh, Ashok K. e BS Bhadauria. "Formule a differenza finita per sottointervalli disuguali usando la formula di interpolazione di lagrange." International Journal of Mathematics and Analysis 3.17 (2009): 815-827. ( Link al PDF )

Gli autori usano l'interpolazione lagrangiana (vedi l' articolo di Wikipedia ) per calcolare i polinomi interpolati a 3, 4 e 5 punti, nonché i loro derivati ​​primo, secondo e terzo. Hanno anche espressioni per l'errore di troncamento, che è importante considerare quando si utilizza uno schema di differenze finite. Hanno anche la formula generica per calcolare i polinomi interpolati usando N punti.

I polinomi interpolanti lagrangiani sono utili perché loro e i loro derivati ​​possono essere molto precisi nel dominio che stai interpolando e non assumono una spaziatura uniforme della griglia. A causa della natura dei polinomi interpolanti lagrangiani, non si possono mai avere più ordini di derivati ​​di quanti ne abbiano i punti della griglia.

Penso che questo risponda bene alla tua domanda perché il documento che ho citato ha formule per schemi di differenza finita arbitrariamente di alto ordine, che per natura sono per griglie irregolari e sono limitati solo dal numero di punti griglia inclusi nello stencil. Il documento ha anche una formula generica per l'errore di troncamento, che ti aiuterà a valutare lo schema polinomiale interpolante lagrangiano rispetto ad altri schemi che potresti prendere in considerazione. L'articolo dell'autore dovrebbe fornire gli stessi risultati del metodo Fornberg. Il loro contributo è in realtà solo una sintesi di alcuni esempi e una stima dell'errore, che potresti trovare utile.

Ho trovato sia il documento che ho citato sia il lavoro di Fornberg utili per le mie ricerche.


1
scusate se devo dichiararlo, ma il vostro riferimento citato sembra strano - usano formule orribili e risolvono solo alcuni casi speciali. Al contrario, Fornberg ha risolto il problema generale fornendo un semplice algoritmo, e già negli anni '80. Vedi qui
davidhigh,

un altro documento che risolve il problema generale è qui
davidhigh,

2
e un ultimo commento per mancare di rispetto a questo documento. In "un eccellente trattamento teorico", non puoi avere 9 riferimenti, in cui 7 si riferiscono al tuo lavoro e uno a un libro di analisi numeriche generale. Almeno non se non hai inventato l'argomento da solo, cosa che quegli autori non hanno.
davidhigh,

Hai assolutamente ragione. Non direi che le formule sono orribili, anche se potrebbero essere migliorate. I casi speciali sono in realtà piuttosto belli come test / confronti, e danno una formula generale, che deve essere la stessa di Fornberg.
jvriesem,

1
@jvriesem Si noti che il documento citato ha il segno sbagliato nel terzo termine in Eqn. (15b)
Tarek,


-4

Il metodo più semplice consiste nell'utilizzare approssimazioni alle differenze finite.

Una semplice stima a due punti è calcolare la pendenza di una linea di secante vicina attraverso i punti (x, f (x)) e (x + h, f (x + h)). [1] Scegliendo un piccolo numero h, h rappresenta un piccolo cambiamento in x, e può essere positivo o negativo. La pendenza di questa linea è

f(X+h)-f(X)h

Questa espressione è il quoziente di differenza di Newton.

La pendenza di questa linea secante differisce dalla pendenza della linea tangente per un importo che è approssimativamente proporzionale a h. Quando h si avvicina a zero, la pendenza della linea di secante si avvicina alla pendenza della linea di tangente. Pertanto, la vera derivata di f at x è il limite del valore del quoziente di differenza man mano che le linee secanti si avvicinano sempre più ad essere una linea tangente


1
Penso che vieni ridimensionato perché David Zaslavsky ha menzionato in modo specifico la formula del quoziente di differenza e la domanda è se ci sono approssimazioni migliori.
Dan,

7
Anche perché è un copia-e-incolla diretto da Wikipedia , ad eccezione del link di spam che originariamente faceva parte della risposta.
David Z,
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.