Equazioni differenziali in C++
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.
La soluzione può essere rappresentata come segue,
Per l' equazione differenziale del secondo ordine , devi aggiungere anche l'equazione, dove risolvi la derivata del primo ordine
La soluzione può essere rappresentata come segue,
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

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































