B021002 (B058) - Laboratorio di Fisica Computazionale (Curriculum: Fisica della Materia - D34) 2017-2018
Indice degli argomenti
-
Testi interessanti da guardare:
Barone, Marinari, Organtini, Ricci-Tersenghi, Programmazione scientifica, Pearson
Harvey Gould, Jan Tobochnik, and Wolfgang Christian, Introduction to computer simulation methods http://physics.clarku.edu/sip/
Werner Krauth Introduction to Monte Carlo Algorithms https://cel.archives-ouvertes.fr/cel-00092936/document
Wernet Krauth Algorithms and computation Oxford UNiversity press
Mooc course http://www.lps.ens.fr/~krauth/index.php/Main_Page
-
Compilatore c (vedere CYGWIN per windows)
struttura di un programma c
dichiarazione di variabili, strutture di controllo
algoritmo di Eulero per un oscillatore armonico (vedi programma harmonicOscillator.c)
reindirizzamento dell'output in bash
gnuplot (funzioni e dati)
apertura e chiusura di un file
apertura e chiusura di una pipe. Output bufferizzato, comando fflush
(vedi programma harmonicOscillator-file.c)
dare un'occhiata al sito di gnuplot e a bash
-
algoritmi numerici: conservazione dell'energia e simpletticità
algoritmo leap frog e Verlet II ordine
Applicazione all'oscillatore armonico.
gnuplot: manipolazione dei dati nelle colonne
Stringhe in C
argomenti della riga di comando
Equazione del pendolo con Verlet: separatrice
gnuplot: plot di dati provenienti da un programma
plot sprintf("<./pendulum-dumped 1.8 %f",g) u 2:3 w l, sprintf("<./pendulum-dumped 2. %f",g) u 2:3 w l, sprintf("<./pendulum-dumped 2.5 %f",g) u 2:3 w l
-
Modello di Lorenz (integrato con Eulero).
diversi modi di interagire con gnuplot:
1) creare file di dati e dare comandi a mano
2) creare file di dati (dati.dat), scrivere comandi su un altro file (dati.gp) e poi scrivere "gnuplot dati.gp -"
3) Creare file di dati e poi aprire un pipe (popen) con gnuplot e inviargli i comandi
4) creare file di dati (dati.dat), scrivere comandi su un altro file (dati.gp) poi usare system("gnuplot dati.gp -") per lanciare gnuplot dal programma
5) aprire un pipe con gluplot e usare il filename speciale "-" per inviargli anche i dati sullo stesso canale
gp=popen("gnuplot","w");
fprintf(gp, "plot '-' w l\n");
for (t=0....
...
fprintf(gp, "%f %f\n", x, y);
}
fflush(gp);
getchar();
fclose (gp);
vedere i programmi allegati per applicare questo alla visualizzazione del modello di Lorenz
-
oscillante nel tempo. Confronto tra Leapfrog e Runge-Kutta45 di Matlab.Leapfrog, convergenza delle soluzioni. Esempio di carica elementare in moto in campo magneticoIntroduzione a Matlab, operazioni elementari tra matrici, plot di grafici in 2D e 3D,concetto di function in Matlab, interpolazione di funzioni. Cenni a metodi di integrazione numerica: Runge-Kutta,
-
Frattali matematici e dimensione frattale
stima della dimensione frattale di un attrattore con il metodo di box-counting
stima della dimensione frattale di un attrattore con la dimensione di correlazione con il metodo di Grassberger-Procaccia
Applicazione al modello di Lorenz
Vedere "Nonlinear Dynamics and Chaos" di Strogatz cap. 11.
-
(Gianluca Martelloni)Concetti di consistenza, convergenza e stabilità per metodi numerici ad un passoRunge-Kutta 2° ordineIntroduzione al calcolo frazionario e frattale fino ad arrivare all'integrale di Riemann-Liouville (RL) e alla derivata di RL.Cenni alla derivata secondo Caputo.Applicazione alla diffusione anomala (sub e super-diffusione) tramite PDE frazionarie e frattali (cenni a soluzione analitica e a metodi numerici).Cenni alla modellizzazione delle frane e a un algoritmo di simulazione MD per le frane.
-
Prodotto scalare, norma e ortonormalizzazione di vettori con la procedura di Gram-Schmidt
Calcolo dello spettro di Lyapunov del sistema di Lorenz
produzione di un file oggetto, di un header e di una libreria (cenni)
http://www.math.tamu.edu/~mpilant/math614/Matlab/Lyapunov/LorenzSpectrum.pdf
-
Mappa logistica: grafico, biforcazione, esponente di Lyapunov
-
Mezzi eccitabili con automi cellulari
https://en.wikipedia.org/wiki/Excitable_medium#With_cellular_automata
https://en.wikipedia.org/wiki/Greenberg%E2%80%93Hastings_cellular_automaton
occhio alla macro: c'era un errore, dava core dump per x=y=0 e nx=-1
Quella giusta è
#define c(x,y) _c[((y+Y) % Y)*X + ((x+X) % X)]
-
lezione di Giulia Cencetti
Modello di Penney. Rappresentazione come modello di Markov. Trappole assorbenti.
-
-
-
cenni alla reversibilità: lattice cellular automata (HPP, FHP, 9-velocities)
HPP, FHP: https://en.wikipedia.org/wiki/Lattice_gas_automaton
Nell'esempio seguente si vede l'entropia di Boltzmann e l'esponente di Lyapunov (discreto) per un lattice cellular automaton a 9 velocità (vedi allegati) dove al tempo 1000 vengono invertite tutte le velocità. il sistema al tempo 2000 ritorna nello stato iniziale per poi evolvere "indietro nel tempo" come faceva in avanti.
- generazione numeri casuali:
drand48() < p oppure (int) (drand48() + p)
Random walk e diffusione: M camminatori casuali che stanno fermi con prob. 1-q, oppure vanno a dx con prob. qp e a sx con prob q(1-p). Confrontare con la soluzione dell'eq. di diffusione con v = (2p-1)*q e D=q
-
Random walk collettivo
-
Controllo 1 El Yacoubi
-
Controllo 2 El Yacoubi
-
Integrali stocastici, pi, randomwalk
-
Ising Monte Carlo
-
Parallel computing prima parte (Alessio Turchi)
-
Lennard-Jones con Monte Carlo
-
Simulated annealing commesso viaggiatore: versione con possibilità di fare lo scambio di due città o l'inversione di un pezzo di percorso (che funziona meglio).
-
complessità algoritmica
vedere "can't get no satisfaction"
con N=10
con N = 40
-
generazione di reti casuali e scale-free: link casuali tra due nodi scelti a caso o tra un nodo e un nodo già collegato a un altro nodo scelto a caso.