66736 - METODI NUMERICI

Anno Accademico 2023/2024

  • Docente: Damiana Lazzaro
  • Crediti formativi: 6
  • SSD: MAT/08
  • Lingua di insegnamento: Italiano
  • Moduli: Damiana Lazzaro (Modulo 1) Guido Borghi (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Cesena
  • Corso: Laurea in Ingegneria e scienze informatiche (cod. 8615)

Conoscenze e abilità da conseguire

Conoscenza degli aspetti fondamentali di metodologie dell'algebra lineare numerica e dell'analisi numerica utilizzabili nei sistemi informatici. Particolare attenzione sarà rivolta all'acquisizione di strumenti di base matematicocomputazionali tipici di alcune applicazioni come l'elaborazione di segnali ed immagini e l'analisi di dati strutturati.

Contenuti

1. Il Calcolo Numerico - Obiettivi e problemi nella risoluzione di problemi pratici al calcolatore.

2. Introduzione all'Intelligenza Artificiale -  Cenni ad applicazioni di Intelligenza Artificiale (IA), Machine Learning (ML)  e Deep Learning (DL)-  Impatto dell’AI nell’Economia- Breve storia dell’evoluzione dell’AI -Definizioni e paradigma generale del ML e DL.

3. Introduzione alle Reti Neurali: Task del ML (classificazione, regressione e clustering) - Apprendimento (supervisionato, non supervisionato, self-supervised) -Definizione di Artificial Neuron e Multi-Layer Perceptron (MLP) - Definizione di Convolutional Neural Network (CNN) - Funzione obiettivo (Loss Function). Forward Propagation e Backward Propagation.

4. Numeri Finiti - Rappresentazione dei numeri reali. I numeri finiti. Errori di rappresentazione. Aritmetica floating point. Analisi dell’errore nelle operazioni aritmetiche elementari. Propagazione degli errori: condizionamento di un problema e stabilità dell'algoritmo risolutivo.

5. Richiami di Algebra Lineare - Richiami su vettori, matrici e spazi vettoriali. Norme di vettori e norme di matrici.

6. Zeri di Funzioni - Formulazione del problema. Tecniche di Risoluzione. Metodi iterativi, convergenza e ordine dei metodi. Metodi a convergenza locale e a convergenza globale. Metodo di bisezione e altri metodi del primo ordine. Un metodo del secondo ordine: il metodo di Newton. Metodi quasi-Newton: il metodo delle secanti. 

7. Soluzione numerica di Sistemi Lineari: Metodi diretti - Indice di condizionamento di una matrice e condizionamento del problema. Algoritmo di eliminazione Gaussiana e fattorizzazione LU di una matrice. Stabilità della fattorizzazione LU. Strategie pivotali. Fattorizzazione di Cholesky per matrici simmetriche e definite positive. Fattorizzazione QR e fattorizzazione SVD di matrici rettangolari. Proprietà.

8. Soluzione numerica di Sistemi Lineari: Metodi iterativi - Metodi iterativi basati sullo splitting della matrice.  Condizione necessaria e sufficiente per la convergenza. Metodo di Jacobi, Gauss-Seidel- Metodi di rilassamento (Gauss-Seidel Sor) - Condizioni sufficienti per la convergenza. Metodi di discesa per la soluzione di un sistema lineare con matrice simmetrica e definita positiva. Condizione per l'ammissibilità della direzione di discesa. Metodo del gradiente e Metodo del gradiente coniugato. Influenza del malcondizionamento della matrice sulla elocità di convergenza dei metodi di discesa.

9. Approssimazione ai minimi quadrati - Metodo delle equazioni normali, metodo QRLS (risoluzione del problema ai minimi quadrati utilizzando la fattorizzazione QR), metodo basato sulla fattorizzazione SVD della matrice.

10. Interpolazione - Interpolazione polinomiale. Esistenza ed unicità del polinomio interpolatore. Forma di Lagrange e forma di Newton. Espressione dell'errore nell'interpolazione polinomiale. Problemi di convergenza. Condizionamento del problema di interpolazione polinomiale.

11.  Ottimizzazione della loss function per il training di una rete neurale. Non convessità della loss-function - Calcolo delle derivate parziali della funzione loss rispetto a tutti i pesi della rete e conseguente aggiornamento mediante algoritmo di backpropagation. Metodo di discesa del gradiente, metodo stocastico del gradiente, metodo del gradiente minibatch.   Iperparametri di una rete neurale. Learning rate scheduling: step decay, decadimento esponenziale, decadimento dipendente dal tempo. Learning rate adattivo: Adagrad, RMSProp, Adadelta, Adam.


Testi/Bibliografia

Fondamentale sarà l’utilizzo degli appunti presi a lezione e del materiale informatico reso disponibile all'indirizzo https://virtuale.unibo.it/

Per ulteriori approfondimenti si consigliano:

[1] R. Johansson: Numerical Python - Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib (2nd edition), Apress, 2019

[2] J. Kiusalaas: Numerical Methods in Engineering with Python 3, Cambridge University Press, 2013

[3] A. Quarteroni, R. Sacco, F. Saleri, P. Gervasio: Matematica Numerica (4a edizione), Springer Verlag, 2014

[4] R. Bevilacqua, D. Bini, M. Capovani, O. Menchi: Metodi Numerici, Zanichelli, Bologna, 1992

[5] D. Bini, M. Capovani, O. Menchi: Metodi numerici per l'algebra lineare, Zanichelli, Bologna, 1996

Metodi didattici

Il corso è strutturato in lezioni frontali ed esercitazioni in laboratorio. Più precisamente, alle lezioni frontali in aula in cui vengono presentati i metodi numerici di base per risolvere problemi classici della matematica mediante l'uso di un calcolatore, fanno seguito esercitazioni in laboratorio che mirano all'implementazione di tali metodi in Python e allo sviluppo di un'adeguata sensibilità e consapevolezza del loro utilizzo.

Modalità di verifica e valutazione dell'apprendimento

La prova d'esame mira a verificare il raggiungimento dei seguenti obiettivi didattici:

- conoscenza degli elementi fondamentali del calcolo numerico, illustrati durante le lezioni frontali;

- capacità di impiegare i metodi numerici di base per risolvere problemi reali mediante calcolatore.

L'esame di fine corso (la cui valutazione è in trentesimi) si svolgerà in un'unica prova che comprende, sia la realizzazione al calcolatore di codici Python per la risoluzione di problemi numerici, che la risposta scritta a domande teoriche sugli argomenti trattati nelle lezioni frontali.

Strumenti a supporto della didattica

Il corso prevede un'attività di laboratorio in cui si utilizzerà il linguaggio di programmazione Python. Il relativo materiale didattico verrà messo a disposizione dello studente in formato elettronico e sarà reperibile all'indirizzo https://virtuale.unibo.it/

Orario di ricevimento

Consulta il sito web di Damiana Lazzaro

Consulta il sito web di Guido Borghi