SOFTWARE
I programmi del corso di Analisi Numerica. Anno 2006-2007.
Nota. I programmi sono scritti per il compilatore ifort, perche'
possano essere compilati da un altro compilatore potrebbe essere necessario
modificare alcune parti.
Ad esempio potrebbe essere necessario sostituire nella dichiarazione delle
variabili la scritta REAL(8) con
REAL(KIND(0.d0))
Nota 2. Per compilare i programmi Fortran sulle macchine dell'aula M, seguite le seguenti istruzioni.
Alcuni soluzioni degli esercizi tratte dai testi d'esame (che trovate su
questa pagina).
- esami0102.f90 Gli esercizi degli appelli
dell'anno accademico 2001-02.
- esami0405.f90 Gli esercizi degli appelli
dell'anno accademico 2004-05, in un programma funzionante.
Argomenti e programmi svolti a lezione
- ciao.f90 - Il primo programma.
Scrive su output "Ciao mondo!" o quasi.
- gamma.f90 - Approssima la costante
gamma di Eulero-Mascheroni con la serie armonica troncata.
L'esecuzione mette in evidenza il fatto che avere una formula
non basta per approssimare in modo soddisfacente una quantita.
Lucidi (pdf).
- exp.f90 - Un programma che
calcola il valore numerico di exp(x) con due algoritmi
differenti. Evidenzia l'importanza della scelta del
metodo di valutazione in aritmetica finita.
Lucidi (pdf).
- laplace.f90 - Un programma che calcola
il determinante di una matrice quadrata tramite la regola di
Laplace. Esempio di algoritmo ad alto costo computazionale.
Lucidi (pdf).
- triangolare.f90 - Un programma che
calcola la soluzione di un sistema triangolare inferiore (o
superiore e verifica l'accuratezza della soluzione.
Lucidi (pdf).
- pagerank.f90 - Un programma che preleva
dal file matrice.ful
la matrice associata a una rete e ne calcola il pagerank (autovettore
destro normalizzato) con il metodo delle potenze.
Data una rete si associa ad ogni pagina un numero intero positivo e
si costruisce una matrice i cui indici di riga e colonna sono le
pagine, la matrice avra` 1 nell'elemento (i,j) se la pagina i ha un
link verso la pagina j, il resto degli elementi è nullo.
Lucidi (pdf).
- pagerank_s.f90 - Un programma che preleva
dal file matrice.spa la matrice associata a una
rete e ne calcola il pagerank (autovettore destro normalizzato) con il
metodo delle potenze.
La matrice sparsa è realizzata mediante un vettore di caselle
e ciascuna casella è contiene tre campi: gli indici di riga e
colonna e il valore.
- julia.f90 - Un programma che permette di
visualizzare l'insieme di Julia "pieno" relativo all'iterazione razionale
x_k=x_k^2+c al variare del punto iniziale. L'immagine viene scritta in
formato testo .pnm . Tra i parametri del programma c'è la risoluzione
dell'immagine, il punto centrale, il lato e il valore di c.
Lucidi (pdf).
- mandelbrot.f90 - Un programma che permette di
visualizzare l'insieme di Mandelbrot, cioè l'insieme dei punti c del
piano complesso tali che l'orbita di 0 attraverso l'iterazione x_k=x_k^2+c
non tenda a infinito. Lucidi (pdf).
- zeri.f90 - Implementazione di alcuni
semplici metodi numerici per la risoluzione di un'equazione
polinomiale.
Il polinomio viene letto da un file esterno pol.dat, che contiene il grado e i coefficienti a
partire dal termine noto, nel nostro esempio x^2=2.
Sono implementati i metodi di bisezione, secanti, Newton e Halley. I
risultati sono in quadrupla precisione per apprezzare meglio l'ordine
di convergenza del metodo. La valutazione del polinomio e delle sue
derivate è effettuata in modo efficiente mediante il metodo di
Horner. Lucidi (pdf).
- jgs.f90 - Un programma che implementa i metodi
di Jacobi e Gauss-Seidel tramite due subroutine.
Il programma principale dà la possibilit&agrve; di scegliere
tra 4 esempi in cui i due metodi si comportano in modo diverso.
Lucidi (pdf).
- aberth.f90 - Implementazione del metodo di
Aberth per l'approssimazione simultanea di tutti gli zeri di un polinomio.
Il punto iniziale sono le radici dell'unità ruotate di un piccolo
angolo e il polinomio test è x^n-1.
Lucidi (pdf).
- strassen.f90 - Implementazione del metodo di
Strassen per il calcolo del prodotto tra due matrici con un costo
computazionale dell'ordine di O(n^(log_2 7)) anziché O(n^3) che
è il costo dell'algoritmo tradizionale (prodotto righe per
colonne).
Vengono effettuati confronti tra i due metodi che evidenziano un vantaggio,
in termini di tempo di esecuzione, per il metodo più costoso in
termini di costo asintotico (questo è dovuto al fatto che il tempo
di esecuzione non è proporzionale al numero di operazioni aritmetiche
elementari, ma è influenzato anche da tutte le operazioni di
contorno, come la gestione della memoria).
Lucidi (pdf).
- stereogrammi.f90 - Il programma
genera uno stereogramma (immagine percepita come tridimensionale) a partire
da un file contenente le profondità dei singoli punti.
Lucidi (pdf).
Alcuni files di input sono:
conoellittico.dat Genera un piccolo cono
ellittico in un punto dello schermo (Visualizza)
mandelbrot.dat Genera un insieme di Mandelbrot
tridimensionale (Visualizza)
|