Corso di Fisica computazionale
Programmi svolti durante il corso
Sistemi lineari di equazioni:
Programmi sulla risoluzione dei sistemi lineari di
equazioni: sistemi_lineari.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Sistema.cpp: inverte un sistema 3x3 di equazioni lineari utilizzando l'algoritmo della fattorizzazione LU della matrice;
Programma Sis_scal.cpp: inverte un sistema NxN di equazioni lineari utilizzando l'algoritmo della fattorizzazione LU della matrice per analizzare la complessità computazionale dell'algoritmo;
Programma Sis_ndd.cpp: inverte un sistema NxN di equazioni lineari in cui la matrice dei coefficienti NON è diagonalmente dominante, utilizzando l'algoritmo della fattorizzazione LU della matrice, per vedere la propagazione degli errori di troncamento nei calcoli;
Programma Inversa.cpp: calcola la matrice inversa di una matrice NxN data invertendo N sistemi tramite la fattorizzazione LU;
Programma Tridiag.cpp: inverte un sistema tridiagonale di ordine 3 tramite
l'algoritmo di Thomas per la fattorizzazione LU;
Files LUmat.h ed LUmat.cpp: classe per l'inversione di sistemi NxN;
Files LUtrid.h ed LUtrid.cpp: classe per l'inversione di sistemi tridiagonali;
File makefile: makefile per tutti i programmi della directory.
Integrazione di funzioni:
Programmi per l'integrazione di funzioni: integrali.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Trapezi.cpp: calcola l'integrale di una funzione data su N intervalli tramite la regola dei trapezi;
Programma Simpson.cpp: calcola l'integrale di una funzione data su N intervalli tramite la regola di Simpson;
Files Integrali.h ed Integrali.cpp: contengono le funzioni Trapezi e Simpson da compilare con i programmi Trapezi.ccp e Simpson.cpp;
File makefile: makefile per tutti programmi della directory.
Trasformate di Fourier:
Programmi per l'analisi di Fourier di un segnale periodico: fourier.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Funzione.cpp: scrive i valori di una funzione opportuna (un dente di sega o un impulso rettangolare) su un file per la successiva analisi di Fourier del segnale;
Programma DFT.cpp: calcola i coefficienti dello sviluppo di Fourier e lo spettro di un segnale letto da file (generato eventualmente da Funzione.cpp);
Programma IDFT.cpp: ricostruisce i valori della funzione di partenza con M armoniche di Fourier, a partire dai coefficienti dello sviluppo di Fourier calcolati da DFT.cpp;
Files Integrali.h ed Integrali.cpp: contengono le funzioni Trapezi e Simpson da compilare con i programmi DFT.cpp e IDFT.cpp, per il calcolo dell'integrale dei coefficienti di Fourier con la regola dei trapezi;
Programma DFFT.cpp: come DFT.cpp, ma il calcolo dei coefficienti viene realizzato con la trasformata di Fourier "veloce" (FFT), tramite la classe FFT (definizioni contenute in FFT.h e FFT.cpp);
Programma IDFFT.cpp: come IDFT.cpp, ma il calcolo della funzione a partire dai coefficienti viene realizzato con la trasformata di Fourier "veloce" (FFT), tramite la classe FFT (definizioni contenute in FFT.h e FFT.cpp);
Files FFT.h e FFT.cpp: contengono le definizioni della classe FFT, utilizzata da DFFT.cpp e IDFFT.cpp. Nota che la trasformata viene calcolata utilizzando la libreria FFTW (http://www.fftw.org);
File makefile: makefile per tutti programmi della directory.
Equazione lineare:
Programmi per l'integrazione dell'equazione lineare: dy/dt=-ky.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Eq_lin.cpp: calcola la soluzione di una equazione del tipo: dy/dt=-ky utilizzando uno dei seguenti schemi: Eulero Forward, Eulero Backward, Runge-Kutta al secondo ordine;
File makefile: makefile per tutti programmi della directory.
Equazione dell'oscillatore armonico:
Programmi per l'integrazione dell'equazione dell'oscillatore armonico: d^2 x / dt^2 + w^2 x = 0.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Osc_armonico.cpp: calcola la soluzione dell'equazione dell'oscillatore armonico utilizzando uno dei seguenti schemi: Eulero Forward, schema simplettico, Runge-Kutta al secondo ordine;
File makefile: makefile per tutti programmi della directory.
Pendolo:
Programmi per l'integrazione dell'equazione del pendolo semplice: d^2 x / dt^2 + w^2 sin(x) = 0.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Pendolo.cpp: calcola la soluzione della equazione del pendolo semplice utilizzando uno dei seguenti schemi: Eulero Forward, schema simplettico, Runge-Kutta al secondo ordine;
File makefile: makefile per tutti programmi della directory.
Moto dei pianeti:
Programmi per l'integrazione delle equazioni del moto di un pianeta intorno al sole: pianeti.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Pianeti.cpp: calcola la soluzione dell'equazione del moto di un pianeta intorno al sole con un metodo di Runge-Kutta al secondo ordine;
Files RK2.h ed RK2.cpp: contengono le definizioni della classe RK2, che implementa un singolo step Runge-Kutta al secondo ordine;
File makefile: makefile per tutti programmi della directory.
Preda-Predatore:
Programmi per l'integrazione delle equazioni del sistema di Lotka-Volterra: preda_predatore.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Preda_predatore.cpp: calcola la soluzione del sistema di equazioni di Lotka-Volterra con un metodo di Runge-Kutta al secondo ordine;
Files RK2.h ed RK2.cpp: contengono le definizioni della classe RK2, che implementa un singolo step Runge-Kutta al secondo ordine;
Files Integrali.h ed Integrali.cpp: contengono le funzioni Trapezi e Simpson da compilare con i programmi DFT.cpp e IDFT.cpp, per il calcolo dell'integrale dei coefficienti di Fourier con la regola dei trapezi;
File makefile: makefile per tutti programmi della directory.
Oscillatore smorzato e forzato:
Programmi per l'integrazione dell'equazione del moto di un oscillatore smorzato e forzato: osc_forzato.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Osc_forzato.cpp: calcola la soluzione dell'equazione del moto di un oscillatore forzato e smorzato con un metodo di Runge-Kutta al secondo ordine;
Files RK2.h ed RK2.cpp: contengono le definizioni della classe RK2, che implementa un singolo step Runge-Kutta al secondo ordine;
File makefile: makefile per tutti programmi della directory.
Problema ai limiti:
Programmi per l'integrazione di una equazione di Poisson in una dimensione spaziale con condizioni ai bordi del dominio: problema_ai_limiti.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Problema_ai_limiti.cpp: calcola la soluzione dell'equazione di Poisson con un metodo alle differenze finite al secondo ordine;
Files LUtrid.h ed LUtrid.cpp: classe per l'inversione di sistemi tridiagonali;
File makefile: makefile per tutti programmi della directory.
Problema ai limiti in 2 dimensioni con un metodo di rilassamento:
Programmi per l'integrazione di una equazione di Poisson in 2 dimensioni spaziali con condizioni ai bordi del dominio con un metodo di rilassamento (Metodo di Jacobi) per l'inversione del sistema sparso di equazioni lineari: rilassamento.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Rilassamento.cpp: calcola la soluzione dell'equazione di Poisson in 2D con un metodo alle differenze finite al secondo ordine invertendo il sistema sparso generato con un Metodo di Jacobi;
Files Jacobi.h e Jacobi.cpp: classe per l'inversione di un sistema sparso col metodo di Jacobi;
File makefile: makefile per tutti programmi della directory.
Equazione parabolica:
Programmi per l'integrazione di una equazione di diffusione in una dimensione spaziale con condizioni ai bordi del dominio: eq_parabolica.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Eq_parabolica.cpp: mostra l'evoluzione temporale della soluzione dell'equazione di diffusione con un metodo alle differenze finite al secondo ordine nello spazio e un metodo Runge-Kutta al secondo ordine nel tempo;
Files VarX.h e VarX.cpp: classe per il calcolo delle derivate prime e seconde di un campo con condizioni al bordo di tipo Dirichlet o Neumann;
File input.data: esempio di file di input per il programma;
File makefile: makefile per tutti programmi della directory.
Equazione iperbolica:
Programmi per l'integrazione di una equazione di trasporto-diffusione in una dimensione spaziale con condizioni ai bordi del dominio: eq_iperbolica.tar.gz.
L'archivio .tar.gz contiene i seguenti programmi:
Programma Eq_iperbolica.cpp: mostra l'evoluzione temporale della soluzione dell'equazione di trasporto-diffusione con un metodo alle differenze finite al secondo ordine nello spazio e un metodo Runge-Kutta al secondo ordine nel tempo;
Files VarX.h e VarX.cpp: classe per il calcolo delle derivate prime e seconde di un campo con condizioni al bordo di tipo Dirichlet o Neumann;
File input.data: esempio di file di input per il programma;
File makefile: makefile per tutti programmi della directory.
Ultime prove d'esame
Ritorna alla pagina precedente