Equazioni differenziali in C++

Jan 03 2023
Il seguente articolo descrive uno dei metodi più potenti per risolvere equazioni differenziali. Risolverò semplici equazioni differenziali del primo e del secondo ordine usando il metodo Runge Kutta che ho discusso anche qui.
Google. com

Il seguente articolo descrive uno dei metodi più potenti per risolvere equazioni differenziali .
Risolverò semplici equazioni differenziali del primo e del secondo ordine usando il metodo Runge Kutta che ho discusso anche qui .

Il codice sorgente di questo articolo lo troverai sul mio GitHub .

Metodo Runge-Kutta

Il seguente metodo è il metodo più utilizzato per risolvere equazioni differenziali ordinarie. Il metodo Runge-Kutta supera altri metodi numerici poiché è facile da implementare, accurato e spesso stabile e può essere risolto fornendo un valore iniziale.

Esistono metodi di ordine n, che specificano quante volte calcoliamo la funzione f (t, x(t)). Tuttavia, il metodo più popolare e anche illustrato di seguito è il metodo del quarto ordine .

Come puoi vedere, in ogni passo temporale dobbiamo trovare i coefficienti k1, k2, k3 e k4.

La parte più importante della risoluzione di equazioni differenziali utilizzando il metodo Runge-Kutta è capire come distribuire le equazioni.
Posso illustrare qualche pseudo-codice, che spero possa fornirvi un po' di intuizione.
Come puoi vedere, ci sono due equazioni differenziali del primo ordine. Ora devi creare anche due funzioni che restituiscono il lato SINISTRO dell'equazione differenziale.

Qui risolviamo l'oscillatore di Van der Pol.

Illustrazione di come risolvere l'equazione differenziale (per autore)

La soluzione può essere rappresentata come segue,

Soluzione dell'oscillatore di Van der Pol (per autore)

Per l' equazione differenziale del secondo ordine , devi aggiungere anche l'equazione, dove risolvi la derivata del primo ordine

Illustrazione di come risolvere l'equazione differenziale (per autore)

La soluzione può essere rappresentata come segue,

Soluzione dell'equazione differenziale del secondo ordine (per autore)

La stampa richiede l'incorporazione del file di intestazione che deve trovarsi nella stessa cartella del tuo cpp (un file che puoi clonare dal mio repository).
Il tuo programma può essere compilato come segue,

//compile
g++ my_prog.cpp -o my_prog -I/usr/include/python3.8 -lpython3.8//

 //run
./my_prog

//folder tree

├── my_prog
├── my_prog.cpp
├── matplotlibcpp.h