LABORATORIO DI FISICA COMPUTAZIONALE I
(obiettivi)
L'obiettivo del corso è quello di fornire le nozioni di base necessarie per la comprensione dei metodi di calcolo numerico tipici della fisica e per la redazione di semplici programmi. L'apprendimento del particolare linguaggio (C) è soprattutto funzionale allo sviluppo delle capacità dello studente in termini di analisi e di descrizione degli algoritmi risolutivi di un problema di fisica. E' dunque l'aspetto metodologico dello sviluppo del software e non la componente tecnica, la caratteristica principale di questo corso. Ovviamente una conoscenza critica di un linguaggio di programmazione come il C non può che portare ad una migliore comprensione dell'oggetto.
|
Codice
|
1012086 |
Lingua
|
ITA |
Tipo di attestato
|
Attestato di profitto |
Crediti
|
6
|
Settore scientifico disciplinare
|
INF/01
|
Ore Aula
|
24
|
Ore Laboratorio
|
36
|
Ore Studio
|
-
|
Attività formativa
|
Attività formative affini ed integrative
|
Canale: 2
Docente
|
PANI PAOLO
(programma)
https://elearning.uniroma1.it/course/view.php?id=2315
Programma dettagliato LFC1
MODULO EQUAZIONI DIFFERENZIALI ORDINARIE (30 ore)
Integrazione di equazioni differenziali con condizioni iniziali. Metodo di Eulero. Errore locale e errore globale. Oscillatore armonico.
Metodo di Eulero-Cromer. Studio dell'errore di integrazione.
Il prototipo della funzione main e gli argomenti da linea di comando. La gestione dell’input/output: stdin, stdout, stderr. Redirezione di input e output dalla linea di comando. Trasferimento dei file tra macchine in remoto. Uso di gnuplot per la generazione di grafici di dati.
Stabilità: il caso delle oscillazioni e crescita/decrescita esponenziale. Proprietà di stabilità dei metodi di Eulero e Eulero-Cromer. Importanza delle scale di tempo caratteristiche. Metodi di integrazione: Reversibilità nel metodo di Eulero-Cromer e metodo di Verlet. Leggi di conservazione lungo le traiettorie approssimate dell'oscillatore armonico.
Pendolo semplice. Misura del periodo e studio delle piccole oscillazioni. Oscillazioni con smorzamento lineare. Calcolo del tempo di dimezzamento e dello smorzamento critico.
Uso delle macro del precompilatore per la compilazione condizionale: #if, #elif, #else, #endif, #ifdef. L'opzione -D del compilatore gcc.
Compilazione condizionale e funzioni macro. Approfondimenti sull’uso di gnuplot: grafici in scala bilogaritmica ("set log”), definizione di funzioni di una variabile indipendente, aggiustare i parametri delle funzioni con gnuplot ("fit via”).
Metodi di Runge-Kutta del II e IV ordine. Strutture C: struct, puntatori a struct. Pendolo forzato. Cenni sul caos. Sezione di Poincaré. Bacini di attrazione. Diagrammi di biforcazione.
Moto in un piano. Equazioni accoppiate. Moto di pianeti intorno a stella fissa. Unità di misura astronomiche. Calcolo del periodo di un'orbita chiusa nello spazio delle fasi. Considerazioni sulla precisione del calcolo floating-point nella scelta del passo di integrazione.
Grafici tridimensionali con gnuplot. Stabilità per oscillazioni ed errore relativo sul calcolo dell'energia con i metodi di Runge-Kutta.
MODULO CAMMINI ALEATORI (20 ore)
Allocazione dinamica di memoria: malloc(), calloc(), realloc(), free(), sizeof().
Moto browniano. Random Walk in una dimensione. Generazione di numeri pseudocasuali con il metodo delle congruenze lineari. Generazione di numeri casuali con distribuzione qualunque: inversione della cumulativa, metodo "accetta o rifiuta” e trasformazione di Box-Müller.
Generatori notevoli (nel bene e nel male) e di uso comune: Minimal Standard, Randu, puramente moltiplicativi di l’Ecuyer. Funzioni di libreria del C: rand(), lrand48(), drand48()
Costruzione dell'istogramma dei valori di un random walk unidimensionale a tempo fisso. Binning di un istogramma. Random walk in più dimensioni spaziali. Probabilità di ritorno.
Richiami sui sistemi numerici posizionali. Sistema esadecimale. Rappresentazione dei numeri interi sul calcolatore. Operatori bitwise "&","|", "^","~". Operatori di scorrimento di bit "", "
Maggiori informazioni qui: https://elearning.uniroma1.it/course/view.php?id=2315
“Programmazione Scientifica”, Barone, Marinari, Organtini, Ricci-Tersenghi “Numerical Recipes in C”, Press, Teukolsky, …
|
Date di inizio e termine delle attività didattiche
|
28/09/2020 - 22/01/2021 |
Date degli appelli
|
Date degli appelli d'esame
|
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Non obbligatoria
|
Docente
|
CAMMAROTA CHIARA
(programma)
La prima parte del corso è dedicata alla risoluzione numerica delle equazioni differenziali ordinarie e all’introduzione di elementi avanzati di programmazione C [15 ore circa]. Nella seconda parte del corso viene illustrata la generazione dei numeri pseudo aleatori e il loro uso nella simulazione di alcuni processi stocastici, che sono quindi studiati in dettaglio: random walk, gas reticolare e percolazione [15 ore circa]. Il corso prevede attività di laboratorio in cui gli studenti scrivono dei propri codici in linguaggio C per studiare i problemi discussi a lezione, implementando gli algoritmi descritti dal docente [30 ore circa].
“Programmazione Scientifica” (Seconda Edizione) Luciano Barone, Enzo Marinari, Giovanni Organtini e Federico Ricci-Tersenghi Pearson Italia (2019)
|
Date di inizio e termine delle attività didattiche
|
28/09/2020 - 22/01/2021 |
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Obbligatoria
|
Metodi di valutazione
|
Prova scritta
|
Canale: 1
Docente
|
RICCI TERSENGHI FEDERICO
(programma)
MODULO EQUAZIONI DIFFERENZIALI ORDINARIE (30 ore)
Integrazione di equazioni differenziali con condizioni iniziali. Metodo di Eulero. Errore locale e errore globale. Oscillatore armonico.
Metodo di Eulero-Cromer. Studio dell'errore di integrazione.
Il prototipo della funzione main e gli argomenti da linea di comando. La gestione dell’input/output: stdin, stdout, stderr. Redirezione di input e output dalla linea di comando. Trasferimento dei file tra macchine in remoto. Uso di gnuplot per la generazione di grafici di dati.
Stabilità: il caso delle oscillazioni e crescita/decrescita esponenziale. Proprietà di stabilità dei metodi di Eulero e Eulero-Cromer. Importanza delle scale di tempo caratteristiche. Metodi di integrazione: Reversibilità nel metodo di Eulero-Cromer e metodo di Verlet. Leggi di conservazione lungo le traiettorie approssimate dell'oscillatore armonico.
Pendolo semplice. Misura del periodo e studio delle piccole oscillazioni. Oscillazioni con smorzamento lineare. Calcolo del tempo di dimezzamento e dello smorzamento critico.
Uso delle macro del precompilatore per la compilazione condizionale: #if, #elif, #else, #endif, #ifdef. L'opzione -D del compilatore gcc.
Compilazione condizionale e funzioni macro. Approfondimenti sull’uso di gnuplot: grafici in scala bilogaritmica ("set log”), definizione di funzioni di una variabile indipendente, aggiustare i parametri delle funzioni con gnuplot ("fit via”).
Metodi di Runge-Kutta del II e IV ordine. Strutture C: struct, puntatori a struct. Pendolo forzato. Cenni sul caos. Sezione di Poincaré. Bacini di attrazione. Diagrammi di biforcazione.
Moto in un piano. Equazioni accoppiate. Moto di pianeti intorno a stella fissa. Unità di misura astronomiche. Calcolo del periodo di un'orbita chiusa nello spazio delle fasi. Considerazioni sulla precisione del calcolo floating-point nella scelta del passo di integrazione.
Grafici tridimensionali con gnuplot. Stabilità per oscillazioni ed errore relativo sul calcolo dell'energia con i metodi di Runge-Kutta.
MODULO CAMMINI ALEATORI (20 ore)
Allocazione dinamica di memoria: malloc(), calloc(), realloc(), free(), sizeof().
Moto browniano. Random Walk in una dimensione. Generazione di numeri pseudocasuali con il metodo delle congruenze lineari. Generazione di numeri casuali con distribuzione qualunque: inversione della cumulativa, metodo "accetta o rifiuta” e trasformazione di Box-Müller.
Generatori notevoli (nel bene e nel male) e di uso comune: Minimal Standard, Randu, puramente moltiplicativi di l’Ecuyer. Funzioni di libreria del C: rand(), lrand48(), drand48()
Costruzione dell'istogramma dei valori di un random walk unidimensionale a tempo fisso. Binning di un istogramma. Random walk in più dimensioni spaziali. Probabilità di ritorno.
Richiami sui sistemi numerici posizionali. Sistema esadecimale. Rappresentazione dei numeri interi sul calcolatore. Operatori bitwise "&","|", "^","~". Operatori di scorrimento di bit "", "
Maggiori informazioni qui: https://elearning.uniroma1.it/course/view.php?id=2315
“Programmazione Scientifica”, Barone, Marinari, Organtini, Ricci-Tersenghi
|
Date di inizio e termine delle attività didattiche
|
28/09/2020 - 22/01/2021 |
Date degli appelli
|
Date degli appelli d'esame
|
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Non obbligatoria
|
Canale: 3
Docente
|
MARINARI VINCENZO
(programma)
PROGRAMMA: MODULO EQUAZIONI DIFFERENZIALI ORDINARIE (30 ore) Integrazione di equazioni differenziali con condizioni iniziali. Metodo di Eulero. Errore locale e errore globale. Oscillatore armonico.
Metodo di Eulero-Cromer. Studio dell'errore di integrazione. Il prototipo della funzione main e gli argomenti da linea di comando. La gestione dell’input/output: stdin, stdout, stderr. Redirezione di input e output dalla linea di comando. Trasferimento dei file tra macchine in remoto. Uso di gnuplot per la generazione di grafici di dati. Stabilità: il caso delle oscillazioni e crescita/decrescita esponenziale. Proprietà di stabilità dei metodi di Eulero e Eulero-Cromer. Importanza delle scale di tempo caratteristiche. Metodi di integrazione: Reversibilità nel metodo di Eulero-Cromer e metodo di Verlet. Leggi di conservazione lungo le traiettorie approssimate dell'oscillatore armonico. Pendolo semplice. Misura del periodo e studio delle piccole oscillazioni. Oscillazioni con smorzamento lineare. Calcolo del tempo di dimezzamento e dello smorzamento critico.
Uso delle macro del precompilatore per la compilazione condizionale: #if, #elif, #else, #endif, #ifdef. L'opzione -D del compilatore gcc.
Compilazione condizionale e funzioni macro.
Approfondimenti sull’uso di gnuplot: grafici in scala bilogaritmica ("set log”), definizione di funzioni di una variabile indipendente, aggiustare i parametri delle funzioni con gnuplot ("fit via”).
Metodi di Runge-Kutta del II e IV ordine.
Strutture C: struct, puntatori a struct.
Pendolo forzato. Cenni sul caos. Sezione di Poincaré. Bacini di attrazione. Diagrammi di biforcazione.
Moto in un piano. Equazioni accoppiate. Moto di pianeti intorno a stella fissa. Unità di misura astronomiche. Calcolo del periodo di un'orbita chiusa nello spazio delle fasi.
Considerazioni sulla precisione del calcolo floating-point nella scelta del passo di integrazione.
Grafici tridimensionali con gnuplot.
Stabilità per oscillazioni ed errore relativo sul calcolo dell'energia con i metodi di Runge-Kutta.
MODULO CAMMINI ALEATORI (20 ore)
Allocazione dinamica di memoria: malloc(), calloc(), realloc(), free(), sizeof().
Moto browniano. Random Walk in una dimensione.
Generazione di numeri casuali con distribuzione qualunque: inversione della cumulativa, metodo "accetta o rifiuta”. Trasformazione di Box-Müller.
Numeri pseudocasuali uniformemente distribuiti: Generatori Congruenziali Lineari.
Generatori notevoli (nel bene e nel male) e di uso comune: Minimal Standard, Randu, puramente moltiplicativi di l’Ecuyer.
Funzioni di libreria del C: rand(), lrand48(), drand48()
Costruzione dell'istogramma dei valori di un random walk unidimensionale al tempo t fisso. Binning di un istogramma. Random walk in più dimensioni spaziali. Probabilità di ritorno.
Richiami sui sistemi numerici posizionali. Sistema Esadecimale. Rappresentazione dei numeri interi sul calcolatore. Operatori bitwise "&","|", "^","~". Operatori di scorrimento di bit "", "
ITA: L.Barone, E. Marinari, G. Organtini, F. Ricci Tersenghi, "Programmazione scientifica", Pearson Italia (2006)
|
Date di inizio e termine delle attività didattiche
|
28/09/2020 - 22/01/2021 |
Date degli appelli
|
Date degli appelli d'esame
|
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Obbligatoria
|
Docente
|
ANGELINI MARIA CHIARA
(programma)
MODULO EQUAZIONI DIFFERENZIALI ORDINARIE (30 ore)
Integrazione di equazioni differenziali con condizioni iniziali. Metodo di Eulero. Errore locale e errore globale. Oscillatore armonico.
Metodo di Eulero-Cromer. Studio dell'errore di integrazione.
Il prototipo della funzione main e gli argomenti da linea di comando. La gestione dell’input/output: stdin, stdout, stderr. Redirezione di input e output dalla linea di comando. Trasferimento dei file tra macchine in remoto. Uso di gnuplot per la generazione di grafici di dati.
Stabilità: il caso delle oscillazioni e crescita/decrescita esponenziale. Proprietà di stabilità dei metodi di Eulero e Eulero-Cromer. Importanza delle scale di tempo caratteristiche. Metodi di integrazione: Reversibilità nel metodo di Eulero-Cromer e metodo di Verlet. Leggi di conservazione lungo le traiettorie approssimate dell'oscillatore armonico.
Pendolo semplice. Misura del periodo e studio delle piccole oscillazioni. Oscillazioni con smorzamento lineare. Calcolo del tempo di dimezzamento e dello smorzamento critico.
Uso delle macro del precompilatore per la compilazione condizionale: #if, #elif, #else, #endif, #ifdef. L'opzione -D del compilatore gcc.
Compilazione condizionale e funzioni macro. Approfondimenti sull’uso di gnuplot: grafici in scala bilogaritmica ("set log”), definizione di funzioni di una variabile indipendente, aggiustare i parametri delle funzioni con gnuplot ("fit via”).
Metodi di Runge-Kutta del II e IV ordine. Strutture C: struct, puntatori a struct. Pendolo forzato. Cenni sul caos. Sezione di Poincaré. Bacini di attrazione. Diagrammi di biforcazione.
Moto in un piano. Equazioni accoppiate. Moto di pianeti intorno a stella fissa. Unità di misura astronomiche. Calcolo del periodo di un'orbita chiusa nello spazio delle fasi. Considerazioni sulla precisione del calcolo floating-point nella scelta del passo di integrazione.
Grafici tridimensionali con gnuplot. Stabilità per oscillazioni ed errore relativo sul calcolo dell'energia con i metodi di Runge-Kutta.
MODULO CAMMINI ALEATORI (20 ore)
Allocazione dinamica di memoria: malloc(), calloc(), realloc(), free(), sizeof().
Moto browniano. Random Walk in una dimensione. Generazione di numeri pseudocasuali con il metodo delle congruenze lineari. Generazione di numeri casuali con distribuzione qualunque: inversione della cumulativa, metodo "accetta o rifiuta” e trasformazione di Box-Müller.
Generatori notevoli (nel bene e nel male) e di uso comune: Minimal Standard, Randu, puramente moltiplicativi di l’Ecuyer. Funzioni di libreria del C: rand(), lrand48(), drand48()
Costruzione dell'istogramma dei valori di un random walk unidimensionale a tempo fisso. Binning di un istogramma. Random walk in più dimensioni spaziali. Probabilità di ritorno.
Richiami sui sistemi numerici posizionali. Sistema esadecimale. Rappresentazione dei numeri interi sul calcolatore. Operatori bitwise "&","|", "^","~". Operatori di scorrimento di bit "", "
L.Barone, E. Marinari, G. Organtini, F. Ricci Tersenghi, "Programmazione scientifica", Pearson Italia (2006)
Maggiori informazioni qui: https://elearning.uniroma1.it/course/view.php?id=2315
|
Date di inizio e termine delle attività didattiche
|
28/09/2020 - 22/01/2021 |
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Obbligatoria
|
|
|