REGISTRO DELLE LEZIONI DI
LABORATORIO DI CALCOLO NUMERICO

CORSO DI LAUREA IN INGEGNERIA AMBIENTALE PER LO SVILUPPO SOSTENIBILE
3
CFU - A.A. 2023/2024
DOCENTE: PROF. GIUSEPPE RODRIGUEZ
ULTIMO AGGIORNAMENTO:
19. dicembre 2023

1.          Martedì 3/10/2023, 8–11.         ore: 3(3)

Introduzione a Matlab. Cenni sulle librerie numeriche contenute in Matlab. Tipi di costanti e variabili: double, complex. Variabili predichiarate. Operatori aritmetici e funzioni elementari. Funzioni per numeri complessi. Gestione della sessione di lavoro, editing della linea di comando. Documentazione in linea. La funzione diary. Misura del tempo di esecuzione: tic e toc. Formato di visualizzazione dei numeri. Controllo del workspace. Memorizzazione e caricamento di dati con le istruzioni save e load. Documentazione e help in linea. Errori di arrotondamento e loro propagazione nei calcoli, smearing, overflow e underflow.

2.          Martedì 10/10/2023, 8–11.         ore: 3(6)

Programmazione mediante scripts. Uso dell'editor. Commenti e help in linea. Cicli for e while. Controllo del flusso: if, elseif, else. Allocazione di un array con zeros e rand. L'istruzione round. Esempio sulla propagazione degli errori di arrotondamento: implementazione con un ciclo for e implementazione vettoriale. Programmazione del Gioco della Vita (Game of Life). Le istruzioni grafiche imagesc e axis.

3.          Martedì 17/10/2023, 8–11.         ore: 3(9)

Creazione di una table a partire da variabili vettoriali o da una matrice. Modifica del programma Game of Life. Le istruzioni input, disp, warning, error e fprintf. Estrazione di sottomatrici da una matrice medante subindexing. Le istruzioni sum e num2str. Concatenazione di stringhe e uso di fprintf. Pausa temporizzata in un programma. Il metodo di Newton per la soluzione di un'equazione nonlineare. Puntatori a funzione. Iterazione controllata mediante l'istruzione while. L'istruzione switch per effettuare scelte multiple. Sperimentazione numerica su due equazioni nonlineari.

4.          Martedì 24/10/2023, 8–11.         ore: 3(12)

Introduzione all'uso delle functions. Creazione di una function per il metodo di Newton. Comunicazione tra uno script e una function. La funzione nargin per verificare il numero dei parametri in ingresso e assegnare valori di default. Sperimentazione numerica al variare dei parametri del metodo. Calcolo dei coefficienti di Fourier. Campionamento di una variabile mediante linspace. Calcolo vettoriale per valutare una funzione su una discretizzazione. Grafico di una funzione. Annotazione dei grafici: title. Modifica dello stile delle linee col comando set. Apertura di più finestre grafiche con figure. Cenni sul sistema handle graphics. Differenze tra operatori matriciali e operatori che agiscono componente per componente (dot-operators). Creazione di matrici con zeros. Calcolo del grafico di un polinomio trigonometrico e sua visualizzazione. Sperimentazione numerica.

5.          Martedì 7/11/2023, 8–11.         ore: 3(15)

Riepilogo serie di Fourier. Funzioni definite in modo diverso su diversi intervalli. Annotazione dei grafici: xlabel, ylabel, etc. Composizione di stringhe con sprintf. Creazione di matrici e vettori. Calcolo vettoriale e matriciale. Costruttori di matrici: ones, zeros, rand, randn, etc. Funzioni per matrici: det, inv, rank, sum, prod, etc. Risoluzione di sistemi lineari. L'operatore di divisione matriciale. Calcolo di autovalori e autovettori.

6.          Martedì 21/11/2023, 8–11.         ore: 3(18)

Esercitazione su norme matriciali, matrici strutturate, calcolo di autovalori, costruzione di matrici simmetriche, definite positive, triangolari, diagonali e ortogonali. Costruzione di un sistema lineare test con matrice diagonalmente dominante. Condizioni di stop per metodi iterativi. Implementazione del metodo iterativo di Jacobi. Creazione di una function per il metodo di Jacobi. Sperimentazione numerica al variare dei parametri del problema test e del metodo. Cenni sull'implementazione del metodo di Gauss–Seidel.

7.          Martedì 28/11/2023, 8–11.         ore: 3(21)

Problemi di Cauchy: creazione e memorizzazione di un problema test. Implementazione del metodo di Eulero per l'approssimazione della soluzione e realizzazione di una funzione. Risoluzione con la funzione ode23. Visualizzazione dei risultati e degli errori. Implementazione del metodo di Heun. Sistemi di equazioni differenziali e notazione vettoriale. Il metodo di Eulero per i sistemi. Il modello preda-predatore di Lotka–Volterrra. Realizzazione di una funzione che calcoli il modello differenziale di Lotka–Volterra. Risoluzione del problema mediante la funzione ode23 e il metodo di Eulero. Visualizzazione dei risultati. Sperimentazione numerica sul problema preda-predatore.

8.          Martedì 5/12/2023, 8–11.         ore: 3(24)

Risoluzione numerica di un problema differenziale ai limiti mediante differenze finite. Implementazione del metodo, manipolazione di vettori e matrici, visualizzazione grafica dei risultati e sperimentazione numerica. Verifica dell'ordine di convergenza. Risoluzione del sistema lineare mediante metodi iterativi. Cenni sulle matrici sparse.

9.          Martedì 12/12/2023, 8–11.         ore: 3(27)

Risoluzione di un problema differenziale ellittico in due variabili mediante differenze finite del secondo ordine: prima fase. Definizione del problema. Scrittura di un problema modello con soluzione nota. Puntatori a funzioni in due variabili. Creazione e manipolazione di una discretizzazione per un dominio piano (griglia). Scrittura e calcolo di funzioni di due variabili. Visualizzazione di superfici. Calcolo sulla griglia delle funzioni coefficienti del problema differenziale. Differenze tra le griglie create da Matlab e quelle usate a lezione. Vettorializzazione di una matrice e riordinamento lessicografico di un vettore in una matrice e viceversa. Matrici sparse in Matlab.

10.          Martedì 19/12/2023, 8–11.         ore: 3(30)

Riepilogo sulle formule a differenze finite per problemi ellittici. Struttura della matrice associata al problema. Preparazione ed allineamento delle cinque diagonali della matrice. Creazione di una matrice sparsa mediante la funzione spdiags. L'istruzione grafica spy. Risoluzione del sistema lineare e ricostruzione della soluzione del problema, mediante l'uso della funzione reshape e l'aggiunta delle condizioni al contorno. Visualizzazione della soluzione approssimata e dell'errore. Costruzione del termine noto del sistema lineare derivante dalla discretizzazione di una PDE ellittica. Esperimenti numerici.

Totale ore: 30



Giuseppe Rodriguez
rodriguez@unica.it