evaLEs
Un pacchetto Python, pubblicato su PyPI, che calcola lo spettro di Lyapunov di un sistema dinamico descritto da equazioni differenziali o da mappe discrete.
Stack: Python, NumPy, Numba, SciPy, Sphinx.
Perché
Per capire se un sistema è caotico si guardano gli esponenti di Lyapunov, che misurano quanto in fretta due traiettorie vicine si allontanano. Calcolarli in Python puro è lento. Ho scritto il pacchetto durante gli studi di fisica a Pisa, tra luglio 2021 e agosto 2022, e l'ho pubblicato perché potesse servire ad altri studenti.

Come funziona
- 01
Il metodo
Il metodo di Benettin, nella forma descritta da Sandri (1996), con la matrice variazionale.
- 02
L'interfaccia
Si chiama computeLE passando la funzione, la sua jacobiana e la condizione iniziale. Per il tempo continuo usa Runge-Kutta di ordine 4, per le mappe il passo della funzione; una fase transitoria è opzionale. Restituisce lo spettro nel tempo e la soluzione.
- 03
Una versione con Numba
Accanto a quella in Python c'è una versione compilata con Numba. Nel repository non ho misurato quanto sia più veloce, quindi non riporto numeri.
Cosa ho fatto io
Tutto il pacchetto, da solo: circa 300 righe di Python, 50 commit, la documentazione con Sphinx su Read the Docs, un notebook di esempio e i test automatici su Travis CI.
Stato
Concluso nell'agosto 2022. Pubblico su GitHub, con 5 stelle. Non conosco utenti reali oltre a me.