Molti problemi scientifici vengono modellizzati attraverso l'uso di equazioni differenziali, talvolta tali equazioni non hanno una soluzione analitica e per conoscerne il loro andamento è necessario integrarle numericamente.
Gli algoritmi di integrazione qui presentati non saranno trattati approfonditamente a livello analitico (vedi il libro Programmazione scientifica) ma saranno analizzati gli aspetti più interessanti a livello di implementazione del codice. Gli algoritmi presentati sono:
Ciascuno di essi presenta pregi e difetti, c'è da dire che nessuno dei tre raggiunge un ottimo livello di accuratezza, quale ad esempio quello dell'algoritmo di Runge-Kutta. In particolare, fra i tre il più stabile per una forza oscillante è quello di Eulero-Cromer, seppure quello di Eulero sembra convergere più rapidamente alla soluzione, non dà valori corretti dell'energia.
Il problema da risolvere è quello newtoniano per cui l'equazione del moto è descritta da:
Nel nostro caso ci occuperemo di risolvere il problema di un oscillatore armonico, ovvero date le condizioni iniziali:


L'equazione:
fornisce il numero di passi dell'integrazione Ponendo il tempo iniziale
, si ha che
. Vedremo come l'uso di differenti algoritmi influenzi la correttezza del risultato.
Luca Cipriani