Il corso presenta i concetti principali del calcolo numerico, analizzando i più comuni modelli numerici per la risoluzione di classi di problemi matematico-applicativi.
Contenuti: errori e aritmetica finita, soluzione numerica di sistemi lineari, approssimazione numerica di dati e funzioni, soluzione numerica di problemi differenziali ordinari. Illustrazione e utilizzo del linguaggio Matlab per l'implementazione e la sperimentazione dei principali metodi numerici trattati.
S. Chapra, R. Canale, Numerical methods for engineers, Mc-Graw Hill.
D. Kahaner, C.,Moler, S. Nash, Numerical methods and software, Prentice Hall.
W. J. Palm III, Introduction to Matlab for engineers, Mc-Graw Hill, 2005.
Materiale integrativo messo a disposizione alla pagina e-learning Moodle del corso (https://e-l.unifi.it).
Obiettivi Formativi
Conoscenza e comprensione delle definizioni degli oggetti matematici trattati nel corso e delle loro proprietà.
Conoscenza e comprensione dei concetti fondamentali dell’analisi numerica e delle problematiche connesse all’aritmetica finita.
Conoscenza e comprensione delle caratteristiche di alcune classi di problemi applicativi di base (risoluzione di sistemi lineari, approssimazione di funzioni, risoluzione di equazioni differenziali ordinarie).
Conoscenza e comprensione dei metodi numerici di più comune utilizzo per la risoluzione delle suddette classi di problemi.
Conoscenza e comprensione del linguaggio Matlab per il calcolo scientifico.
Saper formulare matematicamente i problemi affrontati.
Saper enunciare e dimostrare i risultati teorici presentati.
Saper esporre, argomentare e applicare le principali strategie numeriche presentate, contestualizzandole sulla base delle loro aderenza al problema continuo di riferimento, delle loro funzionalità e proprietà teoriche.
Saper implementare efficientemente in Matlab i principali metodi numerici studiati, anche mediante il ricorso alle funzioni Matlab predefinite e tenendo conto delle specificità del linguaggio.
Saper presentare efficacemente i risultati numerici ottenuti, commentando il funzionamento del metodo e interpretandone la soluzione.
Acquisire l'abilità di sperimentare e confrontare diversi metodi numerici per la risoluzione del problemi trattati, sia per trovare riscontro delle loro caratteristiche teoriche, che per conoscerne le peculiarità sperimentali, allo scopo di proporre criticamente il modello numerico più opportuno.
Prerequisiti
Fondamenti di algebra lineare: calcolo vettoriale, matriciale, determinanti e risoluzione di sistemi lineari.
Fondamenti di analisi matematica: successioni e loro convergenza, continuità e limiti di funzioni reali, concetti di base del calcolo differenziale e integrale per funzioni in una e più variabili.
Metodi Didattici
Lezioni frontali partecipate, esercitazioni interattive di programmazione Matlab.
Altre Informazioni
La frequenza alle lezioni è fortemente raccomandata.
Comunicazioni e materiali a supporto della didattica sono forniti mediante la pagina e-learning Moodle del corso (https://e-l.unifi.it/enrol/index.php?id=37406).
L’orario di ricevimento è consultabile alle pagine web https://www.unifi.it/p-doc2-0-0-A-3f2b3d2b352b30-0.html (Gianmarco Gurioli, DIMAI, stanza 205), sezione “Orario di ricevimento” o contattare Francesco Patrizi.
Modalità di verifica apprendimento
Esercizi a scadenza da risolvere individualmente in Matlab e da consegnare prima della prova scritta finale; nello specifico, durante il corso verranno assegnate due esercitazioni Matlab da svolgere (maggiori informazioni sulla piattaforma e-learning Moodle del corso https://e-l.unifi.it/enrol/index.php?id=37406); contattare il docente se non frequentanti. Valutazione minima per poter proseguire l’esame: 15/30. Peso sul voto finale: 1/6.
Prova scritta sommativa da sostenere il giorno dell’appello d’esame, al fine di accertare l’acquisizione degli obiettivi formativi e degli aspetti metodologico-applicativi della disciplina. Peso sul voto finale: 5/6.
La valutazione terrà particolare conto della capacità di organizzare efficacemente la conoscenza, dell’accuratezza dei contenuti, della capacità di ragionamento critico e di motivare quanto asserito, del livello d’esposizione formale e dell’impiego di lessico specifico.
Programma del corso
Errori e aritmetica finita: sorgenti di errore nei modelli computazionali, errore assoluto e relativo, rappresentazione degli interi in macchina ("signed magnitude method") e relativo intervallo, rappresentazione floating point dei numeri non interi in macchina, range dei numeri di macchina e non rappresentabilità, rappresentazione per arrotondamento e troncamento, standard IEEE double-precision, operazioni in aritmetica finita tra numeri di macchina e possibili fonti d'errore, condizionamento di un problema, stabilità di un algoritmo, concetto di velocità e complessità computazionale di un algoritmo.
Soluzione numerica di sistemi lineari: richiami di algebra lineare per la formalizzazione e la risoluzione di sistemi lineari, il metodo di sostituzione/eliminazione delle incognite come preambolo alla tecnica di eliminazione gaussiana, il metodo di Gauss senza pivoting, motivazioni per il passaggio alla tecnica del pivoting, metodo di Gauss con pivoting parziale e totale, fattorizzazione LU di una matrice e suo utilizzo nella risoluzione di sistemi lineari, estrazione dei fattori L ed U mediante l'applicazione del metodo di Gauss senza pivoting, matrici di permutazione, modifica della fattorizzazione LU nel caso del ricorso alla tecnica del pivoting parziale e suo utilizzo nella risoluzione di sistemi lineari, applicazione del metodo di Gauss con/senza pivoting per il calcolo del determinante della matrice dei coefficienti, esistenza e unicità della fattorizzazione LU, criteri per l'applicabilità del metodo di Gauss con/senza pivoting parziale, analisi di complessità del metodo di Gauss in termini di numero (asintotico) di operazioni elementari ed estensione al caso del pivoting parziale, condizionamento del problema, richiami sul calcolo dell'inversa di matrici quadrate nonsingolari di particolare struttura, sulle principali norme vettoriali e matriciali e loro proprietà, fattorizzazione di Cholesky per matrici quadrate simmetriche e definite positive: motivazioni, derivazione delle formule e suo utilizzo nella risoluzione di sistemi lineari.
Approssimazione di dati e funzioni: introduzione, confronto di modelli differenti di data fitting mediante "basic fitting" di Matlab, derivazione del sistema di equazioni normali per la determinazione della retta di regressione ai minimi quadrati, richiami di statistica descrittiva per l'analisi della qualità del modello ai minimi quadrati (media aritmetica, mediana, moda, intervallo di variazione e deviazione standard, deviazione standard per la retta di regressione, coefficiente di determinazione e sua interpretazione), derivazione del sistema di equazioni normali per la determinazione della parabola di migliore approssimazione ai minimi quadrati e sua generalizzazione nel caso di approssimazione ai minimi quadrati polinomiali di grado generico, derivazione del sistema di equazioni normali nel caso di approssimazione ai minimi quadrati mediante funzioni scalari linearmente indipendenti (non necessariamente polinomiali) col ricorso alla matrice di collocazione, casi particolari, estensione della retta di regressione al piano di regressione. Interpolazione polinomiale: definizione, esistenza e unicità del polinomio interpolante, polinomio interpolante nella base delle potenze, costo computazionale della valutazione del polinomio interpolante nella base delle potenze e alternativa dell'algoritmo di Horner, polinomi di base di Lagrange e loro proprietà, polinomio interpolante nella base di Lagrange, costo computazionale della valutazione del polinomio interpolante mediante la base di Lagrange, condizionamento del problema e costante di Lebesgue, polinomi della base di Newton e loro proprietà, differenze finite, polinomio interpolante nella base di Newton, costo per la valutazione del polinomio interpolante nella base di Newton e algoritmo di Horner generalizzato, cenni alla stima dell'errore d'interpolazione nel caso del polinomio interpolante nella base di Newton.
Equazioni differenziali: generalità, classificazione, esempi; distinzione tra problemi ai valori iniziali e al contorno. Metodi numerici per problemi differenziali ordinari (primo ordine) ai valori iniziali: teorema di esistenza e unicità (locale) della soluzione, condizionamento, derivazione dei metodi di Taylor, metodo di Eulero esplicito (e sua applicazione al caso di equazioni di secondo grado), concetto di errore di troncamento locale e cumulativo nei metodi di Taylor, analisi dell'errore di troncamento locale del metodo di Eulero, regione di assoluta stabilità del metodo, raffinamenti del metodo di Eulero: i metodi di Heun e del midpoint (espliciti); metodi Runge-Kutta, relativi tableau di Butcher e condizioni sull'ordine al crescere del numero di stadi, esempi di metodi di Runge-Kutta a 2 stadi (Heun, midpoint, Ralston) e a 4 stadi, cenni all'utilizzo dei Runge-Kutta nella definizione di metodi adattivi e alla strategia dello step halving, i metodi multistep e il metodo del non-self-starting Heun, metodi impliciti, il metodo di Eulero implicito e la sua analisi di stabilità, strategie predictor-evaluation-corrector e problemi stiff. Metodi numerici per problemi differenziali ordinari del secondo ordine ai valori al contorno con condizioni di Neumann omogenee: riduzione del problema a un sistema di equazioni differenziali ordinarie del primo ordine ai valori iniziali e illustrazione del funzionamento generale del metodo di shooting lineare e non lineare, approssimazioni della derivata prima alle differenze finite (in avanti, all'indietro e centrata) e formulario su approssimazione derivate di ordine superiore mediante differenze finite, derivazione di metodi alle differenze finite per una famiglia di equazioni differenziali ordinarie d'interesse applicativo (modellizzazione della variazione di temperatura di un fluido che scorre in un tubo, con condizioni al contorno di Dirichlet e miste a Neumann).
Introduzione al linguaggio di programmazione Matlab: guida all'installazione e caratteristiche di base, interfaccia, funzionalità di "help", definizioni matriciali (elemento per elemento e a blocchi), salvataggio/cancellazione di variabili, registrazione della sessione di lavoro, operatori aritmetici, espressioni e operazioni elemento per elemento, operatori relazionali e logici, comandi e funzioni predefinite (scalari, vettoriali e matriciali), principali messaggi di errore su forme indeterminate, definizione e valutazione di funzioni in una e più variabili, classi di variabili e formato di visualizzazione, lettura e stampa dei dati su video e su files, introduzione alle istruzioni per il controllo del flusso esecutivo, files script e function, istruzioni per il controllo del flusso esecutivo (if, switch, cicli for e while), comandi per la gestione grafica 2D, istruzioni per la gestione grafica in 3D. Implementazioni di base per la sperimentazione e il confronto dei principali metodi numerici affrontati durante le lezioni teoriche.