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