Perché i metodi Runge – Kutta di ordine superiore non vengono usati più spesso?


17

Ero solo curioso di sapere perché i metodi Runge – Kutta di alto ordine (cioè maggiori di 4) non sono quasi mai discussi / impiegati (almeno per quanto ne so). Capisco che richiede un tempo di calcolo maggiore per fase (ad esempio RK14 con fase incorporata del 12 ° ordine ), ma ci sono altri aspetti negativi dell'utilizzo dei metodi Runge – Kutta di ordine superiore (ad esempio problemi di stabilità)? Se applicato a equazioni con soluzioni altamente oscillanti su scale temporali estreme, tali metodi di ordine superiore non sarebbero in genere preferiti?


2
Penso che questa sia una domanda molto soggettiva. Il più grande svantaggio, come hai già notato, è il costo del calcolo. Generalmente cerchiamo di bilanciare precisione e tempo di calcolo. Nei PDE, quando le persone parlano di un ordine superiore, generalmente pensano al terzo o al quarto ordine. E anche il passo del tempo viene mantenuto nello stesso ordine.
Vikram,

3
Nella PDE, uno schema di accuratezza di ordine elevato per la dipendenza temporale non ha senso se l'accuratezza spaziale è peggiore. In effetti, l'accuratezza della dipendenza spaziale è principalmente del 2 ° o 3 ° ordine, specialmente quando si lavora su maglie non strutturate. Le persone devono controllare il troncamento dell'errore globale con il minor costo, quindi, considera Runge-Kutta con un ordine di precisione sufficientemente elevato in casi particolari.
tqviet,

@tqviet Se si utilizzano approssimazioni di differenza centrale o all'indietro fino all'ordine 8 per le derivate spaziali, RK8 sarebbe adatto, no? In generale, ci sono problemi di accuratezza o stabilità nell'uso di approssimazioni di differenze finite di così alto ordine dei derivati ​​spaziali?
Mathews24,

1
@ Mathews24: non ho menzionato la stabilità, che dipende fortemente dall'equazione. Quando uno schema altamente accurato viene applicato alla dipendenza spaziale, adottiamo RK alla dipendenza temporale con almeno lo stesso ordine di precisione, ma la condizione di stabilità può richiedere un valore inferiore di . Δt
tqviet,

Risposte:


17

Ci sono migliaia di articoli e centinaia di codici là fuori che usano metodi Runge-Kutta di quinto ordine o superiore. Si noti che l'integratore esplicito più comunemente usato in MATLAB è ODE45, che fa avanzare la soluzione utilizzando un metodo Runge-Kutta del 5 ° ordine.

Esempi di metodi Runge-Kutta di alto ordine ampiamente utilizzati

Il documento di Dormand & Prince che fornisce un metodo del 5 ° ordine contiene oltre 1700 citazioni secondo Google Scholar . La maggior parte di questi sono documenti che utilizzano il loro metodo per risolvere alcuni problemi. Il documento sul metodo Cash-Karp ha oltre 400 citazioni . Forse il metodo di ordinamento più ampiamente utilizzato superiore a 5 è il metodo di ottavo ordine di Prince-Dormand che ha oltre 400 citazioni su Google Scholar . Potrei fare molti altri esempi; e tieni presente che molte (se non la maggior parte) delle persone che usano questi metodi non citano mai i documenti.

Si noti inoltre che l' estrapolazione di alto ordine e i metodi di correzione differita sono metodi di Runge-Kutta .

Metodi di ordine elevato ed errore di arrotondamento

Se la precisione è limitata da errori di arrotondamento, è necessario utilizzare un metodo di ordine superiore . Questo perché i metodi di ordine superiore richiedono meno passaggi (e meno valutazioni delle funzioni, anche se ci sono più valutazioni per passaggio), quindi commettono meno errori di arrotondamento. Puoi facilmente verificarlo tu stesso con semplici esperimenti; è un buon problema a casa per un primo corso di analisi numerica.

I metodi del decimo ordine sono estremamente utili nell'aritmetica a doppia precisione. Al contrario, se tutto ciò che avessimo era il metodo di Eulero, allora l'arrotondamento sarebbe un grosso problema e avremmo bisogno di numeri in virgola mobile di altissima precisione per molti problemi in cui i solutori di alto ordine vanno bene.

I metodi di ordine elevato possono essere altrettanto stabili

UNB

Metodi di alto ordine nella meccanica celeste

Tu chiedi

Se applicato a equazioni con soluzioni altamente oscillanti su scale temporali estreme, tali metodi di ordine superiore non sarebbero generalmente preferiti?

Hai esattamente ragione! Un primo esempio di ciò è la meccanica celeste. Non sono un esperto in quella zona. Ma questo documento , ad esempio, confronta i metodi per la meccanica celeste e non considera nemmeno un ordine inferiore a 5. Conclude che i metodi dell'ordine 11 o 12 sono spesso i più efficienti (con il metodo Prince-Dormand dell'ordine 8 spesso anche molto efficiente).


Ketchson: potresti fornire qualche prova o spiegazione su questa affermazione: "L'estrapolazione di alto ordine e i metodi di correzione differita sono metodi di Runge-Kutta"? Soprattutto i "metodi di correzione differiti". Grazie.
tqviet,

@David Ketcheson Puoi discutere su come cambierebbe la tua risposta se utilizzassi tecniche di calcolo convalidate (verificate), come l'intervallo arrotondato verso l'esterno o l'aritmetica radiale? Che ne dici se sono stati usati intervalli arrotondati verso l'esterno superiori alla doppia precisione o aritmetica radiale? Cosa accadrà con il wrapping e la dipendenza man mano che l'ordine di Runge-Kutta è aumentato e, solo per divertimento, diciamo che l'ODE è molto rigido.
Mark L. Stone,

@ MarkL.Stone È una serie di domande completamente diversa. Se si desidera chiedere loro, si prega di pubblicarli come domande separate. Tuttavia, non sono un esperto di queste cose e non sarò in grado di rispondere.
David Ketcheson,

1
@tqviet Dai un'occhiata a questo documento per una spiegazione.
David Ketcheson,

12

Finché si utilizza l'aritmetica standard a virgola mobile a doppia precisione, non sono necessari metodi di ordine molto elevato per ottenere una soluzione con elevata precisione in un numero ragionevole di passaggi. In pratica, trovo che l'accuratezza della soluzione sia normalmente limitata a un errore relativo di 1,0e-16 dalla rappresentazione in virgola mobile a doppia precisione piuttosto che dal numero / lunghezza dei passi che vengono effettuati con RKF45.

Se passi a uno schema aritmetico in virgola mobile superiore alla doppia precisione, vale la pena usare un metodo del decimo ordine.


5
Penso che questa risposta sia fuorviante. I metodi di ordine superiore portano a un errore di arrotondamento molto inferiore, mentre i metodi di ordine inferiore soffrono dell'errore di arrotondamento dominante quando l'accuratezza richiesta è elevata o l'intervallo di tempo è lungo; vedi la mia risposta qui sotto.
David Ketcheson,

2
Il punto è che in virgola mobile a precisione doppia non è nemmeno possibile rappresentare una soluzione con una precisione relativa superiore a 1,0e-16. In molte situazioni pratiche, il buon vecchio RKF45 ti porterà a quel livello di precisione nel periodo che ti interessa senza richiedere piccoli passi. Potrebbe non essere una buona scelta per sistemi rigidi o situazioni in cui è richiesto un integratore simplettico, ma un metodo Runge Kutta di ordine superiore non è un'ottima soluzione in quelle situazioni. Concordo sul fatto che per periodi molto lunghi i metodi Runge Kutta di ordine superiore possono avere un senso.
Brian Borchers,

10

Solo per aggiungere all'eccellente risposta di Brian Borcher, molte applicazioni nella vita reale ammettono ODE o DAE molto rigidi. Intuitivamente, questi problemi subiscono cambiamenti bruschi e improvvisi nel tempo, quindi sono meglio modellati utilizzando polinomi di ordine basso distribuiti finemente su dimensioni di passo brevi, al contrario di polinomi di ordine elevato allungati su dimensioni di passo lunghi. Inoltre, la stabilità richiede spesso l'uso di metodi impliciti , per i quali la penalità computazionale dei metodi di ordine superiore è molto più severa.

Più rigorosamente, i metodi di ordine superiore sono meno stabili dei metodi di ordine inferiore per problemi rigidi. Ad esempio, abbiamo le barriere Dahlquist per i metodi lineari a più fasi.

r2 . Tra tutti i metodi multistep di ordine 2, la regola trapezoidale ha la costante di errore più piccola.

Dichiarazioni simili (ma molto più complicate) possono essere fatte per la stabilità L nelle formule RK. In tutti i casi, l'aumento nell'ordine spesso non porta sempre a soluzioni più accurate. Quello che segue è un estratto del seminario del 1974 di Prothero e Robinson:

Nell'utilizzare i metodi A-step a stabilità stabile per risolvere grandi sistemi di equazioni differenziali non lineari rigide, abbiamo scoperto che
(a) alcuni metodi A-stable forniscono soluzioni altamente instabili e
(b) l'accuratezza delle soluzioni ottenute quando le equazioni sono rigido sembra spesso non correlato all'ordine del metodo utilizzato.

Per trattamenti ancora più rigorosi di questo argomento, vedi il classico testo di Hairer & Wanner, "Risolvere equazioni differenziali ordinarie II: rigido e differenziale - problemi algebrici", 1991.

In pratica, le equazioni rigide sono quasi sempre risolte usando la regola trapezoidale o la formula TR-BDF2 (funzioni ode23t e ode23tb in MATLAB). Entrambi sono metodi impliciti del secondo ordine. Ovviamente, laddove la stabilità non è un problema (cioè nelle equazioni non rettificate) siamo liberi di scegliere tra una serie di opzioni; RK45 è la scelta più comune.


Molto interessante. C'è qualche spiegazione (intuitiva) per cui l'ordine deve essere minore o uguale a 2 perché sia ​​un metodo multistep stabile? E solo per chiarire, quando dici che affermazioni simili possono essere fatte per le formule RK, è di nuovo dell'ordine 2?
Mathews24,

Ma per i metodi di Runge-Kutta, ci sono metodi A-stabile di ordine arbitrario.
David Ketcheson,

@DavidKetcheson Sì, ma non sono fortemente A-stable (cioè L-stable). Hanno molti problemi quando vengono utilizzati per risolvere i DAE, ad esempio simulare semplici circuiti a transistor. Infatti, TR è tristemente noto per aver provocato lo squillo artificiale in SPICE, che è ciò che ha motivato lo sviluppo di TR-BDF2.
Richard Zhang,

@DavidKetcheson Per riferimento, vedere doi.org/10.1090/S0025-5718-1974-0331793-2 . La nozione di stabilità A non è abbastanza forte per i DAE e i metodi di stabilità A di ordine elevato spesso producono risultati strani quando vengono utilizzati per risolvere i DAE.
Richard Zhang,

Certo, ma la domanda non riguarda i DAE o i metodi a più fasi.
David Ketcheson,

9

L'impostazione del benchmark

Nel software Julia DifferentialEquations.jl abbiamo implementato molti metodi di ordine superiore, inclusi i metodi Feagin. Puoi vederlo nel nostro elenco di metodi , e poi ce ne sono molti altri che puoi usare come tableau forniti . Poiché tutti questi metodi sono messi insieme, è possibile eseguire facilmente il benchmark tra di loro. Puoi vedere i benchmark che ho online qui e vedere che è molto semplice confrontare molti algoritmi diversi. Quindi, se vuoi dedicare qualche minuto per eseguire i benchmark, provaci. Ecco un riassunto di ciò che viene fuori.

Prima di tutto è importante notare che, se guardi ciascuno dei benchmark, vedrai che i nostri DP5(Ordine 5 di Dormand-Prince) e i DP8metodi sono più veloci dei codici Hairer Fortran ( dopri5e dop853), e quindi queste implementazioni sono ottimizzate molto bene . Questi mostrano che, come notato in un altro thread, l'uso eccessivo dei metodi Dormand-Prince è dovuto al fatto che i metodi sono già scritti, non perché sono ancora i migliori. Quindi il vero confronto tra le implementazioni più ottimizzate è tra i metodi Tsitorous, i metodi Verner e i metodi Feagin di DifferentialEquations.jl.

I risultati

In generale, i metodi di un ordine superiore a 7 hanno un costo computazionale aggiunto che di solito non è superato dall'ordine, date le tolleranze scelte. Uno dei motivi è che le scelte dei coefficienti per i metodi di ordine inferiore sono più ottimizzate (hanno piccoli "coefficienti di errore di troncamento di principio", che contano di più quando non si è asintopicamente piccoli). Puoi vedere che in molti problemi come qui i metodi Verner Efficient 6 e 7 funzionano molto bene, ma metodi come Verner Efficient 8 possono avere una pendenza inferiore. Questo perché i "guadagni" di ordine superiore si combinano con tolleranze inferiori, quindi c'è sempre una tolleranza in cui i metodi di ordine superiore saranno più efficienti.

Tuttavia, la domanda è allora, quanto in basso? In un'implementazione ben ottimizzata, questo diventa piuttosto basso per due motivi. Il primo motivo è perché i metodi di ordine inferiore implementano qualcosa chiamato FSAL (il primo uguale all'ultimo). Questa proprietà significa che i metodi di ordine inferiore riutilizzano una valutazione della funzione dal passaggio precedente al passaggio successivo e quindi hanno effettivamente una valutazione della funzione in meno. Se questo viene usato correttamente, allora qualcosa come un metodo del 5 ° ordine (Tsitorous o Dormand-Prince) sta effettivamente prendendo 5 valutazioni delle funzioni invece delle 6 suggerite dai tableau. Questo vale anche per il metodo Verner 6.

L'altro motivo è dovuto alle interpolazioni. Uno dei motivi per utilizzare un metodo di ordine molto elevato è prendere meno passaggi e semplicemente interpolare i valori intermedi. Tuttavia, al fine di ottenere i valori intermedi, la funzione di interpolazione potrebbe richiedere più valutazioni delle funzioni rispetto a quelle utilizzate per eseguire il passaggio. Se guardi i metodi di Verner, sono necessarie 8 valutazioni di funzioni extra per il metodo Ordine 8 per ottenere un interpolante Ordine 8. Molte volte i metodi di ordine basso forniscono un'interpolazione "libera", ad esempio la maggior parte dei metodi di ordine 5 ha un'interpolazione di ordine 4 libera (nessuna valutazione di funzione extra). Quindi questo significa che se hai bisogno di valori intermedi (di cui avrai bisogno per una buona trama se stai usando un metodo di ordine elevato), ci sono alcuni costi nascosti extra. Tieni conto del fatto che questi valori interpolati sono davvero importanti per la gestione degli eventi e la risoluzione delle equazioni differenziali di ritardo e capisci perché i costi di interpolazione extra influiscono.

E i metodi Feagin?

Quindi vedrai che i metodi Feagin mancano sospettosamente dai parametri di riferimento. Stanno bene, i test di convergenza funzionano su numeri di precisione arbitrari, ecc., Ma per farli funzionare bene bisogna chiedere tolleranze piuttosto assurde. Ad esempio, ho scoperto in benchmark non pubblicati che Feagin14supera le prestazioni Vern9(metodo Verner Efficient del 9 ° ordine) a tolleranze simili 1e-30. Per applicazioni con dinamiche caotiche (come nei pleidi o problemi di astrofisica a 3 corpi), potresti volere questa quantità di precisione a causa della dipendenza sensibile (errori nei sistemi caotici composti velocemente). Tuttavia, la maggior parte delle persone sta probabilmente calcolando con numeri in virgola mobile a precisione doppia e non ho trovato un punto di riferimento in cui superino in questo dominio di tolleranza.

Inoltre, non esiste alcun interpolante da associare ai metodi Feagin. Quindi quello che faccio è semplicemente mettere un'interpolazione eremita del terzo ordine su di loro in modo che uno esista (e funzioni sorprendentemente bene). Tuttavia, se non esiste una funzione di interpolazione standard, è possibile eseguire il metodo ricorsivo Hermite (utilizzare questa interpolazione per ottenere il punto medio, quindi eseguire un'interpolazione del 5 ° ordine, ecc.) Per ottenere un'interpolazione di ordine elevato, ma questo è molto costoso e il risultato l'interpolazione non ha necessariamente un termine di errore di troncamento a basso principio (quindi va bene solo quando dtè veramente piccolo, che è esattamente l'opposto del caso che vogliamo!). Quindi, se mai hai bisogno di un'interpolazione davvero buona per abbinare la tua precisione, devi almeno tornare a qualcosa del genere Vern9.

Nota sull'estrapolazione

Si noti che i metodi di estrapolazione sono semplicemente algoritmi per la generazione di metodi Runge-Kutta di ordine arbitrario. Tuttavia, per il loro ordine prendono più passi del necessario e hanno coefficienti di errore di troncamento ad alto principio, e quindi non sono così efficienti come un metodo RK ben ottimizzato in un dato ordine. Ma data l'analisi precedente, ciò significa che esiste un dominio di tolleranza estremamente bassa in cui questi metodi faranno meglio dei metodi "noti" RK. Ma in ogni benchmark che ho eseguito, sembra che non sia diventato così basso.

Nota sulla stabilità

La scelta non ha davvero nulla a che fare con i problemi di stabilità. In effetti, se passi attraverso i tab DifferusEquations.jl (puoi solo plot(tab)per le regioni di stabilità) vedrai che la maggior parte dei metodi ha regioni di stabilità sospettosamente simili. Questa è in realtà una scelta. Di solito quando si derivano i metodi, l'autore di solito fa quanto segue:

  1. Trova i coefficienti di errore di troncamento del principio più basso (ovvero i coefficienti per i termini del prossimo ordine)
  2. Soggetto ai vincoli dell'ordine
  3. E avvicina la regione di stabilità a quella del metodo Ordine 5 di Dormand-Prince.

Perché l'ultima condizione? Bene, poiché quel metodo tende ad essere sempre stabile con il modo in cui vengono fatte le scelte di misure adattive controllate da PI, quindi è una buona barra per le regioni di stabilità "abbastanza buone". Quindi non è un caso che tutte le regioni di stabilità tendano ad essere simili.

Conclusione

Ci sono compromessi in ogni scelta di metodo. I metodi RK di ordine più alto non sono semplicemente così efficienti con tolleranze più basse sia perché è più difficile ottimizzare la scelta dei coefficienti, sia perché il numero di valutazioni delle funzioni è composto (e aumenta ancora più rapidamente quando sono coinvolte interpolazioni). Tuttavia, se la tolleranza scende abbastanza, vincono, ma le tolleranze richieste possono essere molto al di sotto delle applicazioni "standard" (vale a dire realmente applicabili solo ai sistemi caotici).

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.