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.

  • Lucidi introduttivi - prima parte (pdf). Una breve introduzione ai comandi shell necessari a compilare ed eseguire programmi Fortran e una introduzione ai principali costrutti del linguaggio Fortran.
  • Lucidi introduttivi - seconda parte (pdf). La seconda parte dell'introduzione al Fortran con un richiamo dei principali costrutti riguardanti subroutine e funzioni, tipi strutturati e utilizzo di file esterni.

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)