Box counting in Cython
Un'estensione Cython che stima la dimensione frattale di un insieme di punti contando le celle occupate, senza creare la griglia intera. L'ho scritta da solo in un mese, tra novembre e dicembre 2022.
Il problema
Per misurare la dimensione di un attrattore con il box counting si conta quante celle di lato ε contengono almeno un punto. Con molti punti o molte dimensioni la griglia intera occupa troppa memoria. Ho usato un albero che si ramifica solo dove ci sono punti.

Come funziona
- 01
L'albero
Un albero N-ario ricorsivo scritto in C dentro Cython: ogni livello dimezza il lato delle celle e si creano solo i rami occupati. La memoria dell'albero si libera a mano con free().
- 02
Il fit
occupation conta le celle per ogni livello; fit_show fa il fit lineare con SciPy e mostra i grafici.
- 03
Prove
Sugli attrattori di Hénon e di Lorenz, con figure salvate nel repository.
Cosa ho fatto io
Tutto il codice, 19 commit, circa 530 righe tra Cython e Python.
Limiti
README di una riga, nessuna documentazione, prove fatte con script lanciati a mano. Non ho misurato quanto sia più veloce di una griglia, quindi non lo dichiaro.
Stack: Python, Cython, C, NumPy, SciPy, Matplotlib.
