Seguici su
Cerca

CALCOLO NUMERICO

Anno accademico 2018/2019 - 2° anno
Docente: Giovanni RUSSO
Crediti: 6
SSD: MAT/08 - Analisi numerica
Organizzazione didattica: 150 ore d'impegno totale, 103 di studio individuale, 35 di lezione frontale, 12 di esercitazione
Semestre:

Obiettivi formativi

Il corso rappresenta una breve introduzione ai metodi numerici per la risoluzione di problemi di base. Indirizzato a studenti del secondo anno di Matematica, ha l'obiettivo di presentare alcune idee fondamentali dell'arte dell'approssimazione numerica, quali accuratezza, robustezza ed efficienza dei metodi, e le tecniche fondamentali per la soluzione di sistemi lineari, interpolazione e approssimazione di funzioni, soluzione di equazioni non lineari e calcolo di integrali. Durante il corso viene fornita un'introduzione all'uso di Python (in particolare la versione Enthought Canopy) per il calcolo numerico. Gli aspetti implementativi dei metodi illustrati in parte durante il corso, ed in parte durante l'attività integrativa pomeridiana (tutorato) legata al corso.

In maggiore dettaglio, vengono considerati i seguenti punti:

Conoscenza e capacità di comprensione (knowledge and understanding): uno degli obiettivi fondamentali del corso è l'apprendimento delle metodolodie di base per la risoluzione numerica di alcuni problemi di matematica quali la soluzione di sistemi lineari, l'approssimazione di dati e fuzioni, la soluzione di equazioni non lineari, l'approssimazione di integrali. Si mira ad una comprensione attiva e critica della disciplina, non limitata al mero apprendimento delle metodologie, ma anche e soprattutto ad una profonda comprensione delle idee di base che permeano trasversalmente le tecniche relative ai vari problemi considerati.

Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): gli strumenti computazionali appresi dovranno essere padroneggiati ed applicati a problemi concreti. La verifica dell'apprendimento e della comprensione delle metodologie, infatti, si può effettuare solamente medante l'applicazione pratica delle stesse a svariati problemi che vengono in parte assegnati per casa ed in parte svolti in classe.

Autonomia di giudizio (making judgments): gli studenti devono essere in grado di confrontare i diversi metodi appresi durante il corso, e capire quale sia il più indicato per svolgere un particolare probelma, tenendo presente sia le caratteristiche del problema stesso (o della classe di problemi che si intende affrontare) sia le risorse dispoibili o che si decide di impiegare (probelma della efficienza computazionale)

Abilità comunicative (communication skills): i ragazzi sono invitati ad esporre con chiarezza gli argomenti trattati durante il colloquio orale, e ad illustrare esplicitamente i vari passaggi nella soluzione dei problemi. Anche a livello di programmazione, la chiarezza della scrittura dei codici è tenuta in conto nella valutazione degli elaborati.

Capacità di apprendimento (learning skills): l'apprendimento viene stimolato già durante le lezioni frontali mediante domande dirette da parte del docente. Tali domande hanno il triplice scopo di richiamare l'attenzione del discente, costringerlo a pensare rapidamente ad una risposta, e sondare il livello della classe, in modo da poter meglio regolare i ritmi della esposizione del docente, o da identificare ed affrontare insieme eventuali criticità.


Modalità di svolgimento dell'insegnamento

L'attività didattica consiste principalmente in lezioni frontali tenute dal docente, durante le quali vengono esposti gli argomenti del corso. Durante le ore di lezione il docente illustrerà implementazioni in Python di alcuni dei metodi esposti a lezione. Il corso è complementato da attività integrative di tutorato.

Si invitano gli studenti a chiarire eventuali dubbi durante la lezione o durante l'orario di ricevimento. Meglio chiarire i dubbi prima di sostenere l'esame che dopo.


Prerequisiti richiesti

Viene richiesra una conoscenza dei concetti elementari di analisi (numeri reali e complessi, limiti, derivate e integrali di funzioni di una variabile, funzioni di più variabili, serie) e di algebra lineare (spazi vettoriali, algebra delle matrici). Per poter sostenere l'esame è necessario aver già superato Analisi 1 e Geometria 1.


Frequenza lezioni

La frequenza a lezione è di fondamentale importanza per la comprensione dei concetti di base del corso. Non c'è uno stretto obbligo di frequenza (non viene presa la presenza), ma la frequenza è fortemente consigliata. Si asuspica una attiva partecipazione attiva in classe: un maggiore coinvolgimento da parte degli studenti facilita l'assimilazione della materia. Collaborazioni fra studenti nello studio della materia sono consigliate.


Contenuti del corso

Introduzione all'uso del calcolatore.

Introduzione all'uso del linguaggio Python. Enthought Canopy. Variabili ed istruzioni elementari. Cicli. Strutture dati. Moduli. Uso dei pacchetti matplotlib e numpy.

Rappresentazione in virgola mobile. I numeri di macchina. Troncamento ed arrotondamento. Operazioni di macchina. Cancellazione numerica. Ordine di accuratezza.

Algebra lineare numerica.

Richiami di algebra lineare: vettori, matrici, determinanti, matrice inversa. Norme di vettore e norme di matrice. Norme naturali e loro rappresentazione. Autovalori. Raggio spettrale e sue proprietà. Alcune matrici particolari. Metodi diretti per la risoluzione dei sistemi lineari: sistemi triangolari, metodo di eliminazione di Gauss, pivoting. Fattorizzazioni A=LU e PA=LU. Metodi compatti, fattorizzazione di Choleski e loro implementazione in python. Condizionamento di un sistema lineare. Numeri di condizionamento. Matrici sparse e loro rappresentazione. Autovalori ed autovettori: richiami. Metodi iterativi per la soluzione di sistemi lineari: metodi di Jacobi, metodo di Gauss-Siedel e metodo SOR. Criteri d'arresto. Metodi per punti e per blocchi (cenni). Decomposizione in valori singolari (cenni). Localizzazione degli autovalori: i teoremi di Gershgorin-Hadamard. Calcolo degli autovalori: il metodo delle potenze, ed il metodo delle potenze inverse.

Approssimazione di funzioni e dati.

Interpolazione polinomiale. Forma di Lagrange. Operatore lineare di interpolazione. Calcolo del polinomi di interpolazione. Formula di Newton delle differenze divise. Il resto dell'interpolazione. Polinomi di Chebyshev: formula ricorsiva, zeri, proprietà di minima norma. Teorema di Weierstrass sulla approssimazione di una funzione continua mediante polinomi (enunciato). Polinomi di Bernstein. Problema della convergenza di una successione di schemi interpolatori. Interpolazione mediante polinomi a tratti. Funzioni spline. Calcolo delle spline cubiche. Metodo dei minimi quadrati e applicazioni. Equazioni normali e loro interpretazione geometrica.

Soluzione di equazioni non lineari.

Concetti generali. Metodi di bisezione, delle secanti e di Newton. Teoria generale dei metodi iterativi per equazioni non lineari e problemi di punto fisso. Ordine di convergenza. Criteri d'arresto. Metodo di Aitken per metodi di ordine di convergenza uno e due.

Formule di quadratura.

Integrali pesati. Forma generale di una formula di quadratura. Ordine polinomiale. Formule interpolatorie. Teorema di convergenza. Formule di Newton-Cotes. Formule Gaussiane. Formule composite: trapezi e Simpson. Metodo di Romberg. Quadratura adattiva (cenni).


Testi di riferimento

Libri consigliati:

Il libro di testo consigliato per il corso di Calcolo Numerico è il seguente:

G.Naldi, L.Pareschi, G.Russo, Introduzione al calcolo scientifico, McGraw-Hill, 2001.

Ulteriori approfondimenti si trovano sui testi:

  • V.Comincioli, Analisi Numerica: metodi, modelli, applicazioni, McGraw-Hill, Milano, 1990.
  • G. Monegato, Calcolo Numerico, Levrotto e Bella, Torino, 1985.
  • A. Quarteroni, R. Sacco, F. Saleri, Matematica Numerica, Springer Italia, Milano, 1998.


Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione all'uso del calcolatore. Introduzione all'uso del linguaggio Python. Enthought Canopy. Variabili ed istruzioni elementari. Cicli. Strutture dati. Moduli. Uso dei pacchetti matplotlib e numpy.Un'ampia documentazione su Python si trova sia on line che su carta. Si consulti il sito: http://www.python.it/doc/libri/ 
2Rappresentazione in virgola mobile. I numeri di macchina. Troncamento ed arrotondamento. Operazioni di macchina. Cancellazione numerica. Ordine di accuratezza.G.Naldi, L.Pareschi, G.Russo, Introduzione al calcolo scientifico, McGraw-Hill, 2001. 
3Algebra lineare numerica. Richiami di algebra lineare: vettori, matrici, determinanti, matrice inversa. Norme di vettore e norme di matrice. Norme naturali e loro rappresentazione. Autovalori. Raggio spettrale e sue proprietà. Alcune matrici particolari. 
4Metodi diretti per la risoluzione dei sistemi lineari: sistemi triangolari, metodo di eliminazione di Gauss, pivoting. Fattorizzazioni A=LU e PA=LU. 
5Metodi compatti, fattorizzazione di Choleski e loro implementazione in python. Condizionamento di un sistema lineare. Numeri di condizionamento. Matrici sparse e loro rappresentazione. 
6Metodi iterativi per la soluzione di sistemi lineari: metodi di Jacobi, metodo di Gauss-Siedel e metodo SOR. Criteri d'arresto. 
7Metodi iterativi per punti e per blocchi (cenni). Decomposizione in valori singolari (cenni).  
8 Autovalori ed autovettori: richiami. Localizzazione degli autovalori: i teoremi di Gershgorin-Hadamard. Calcolo degli autovalori: il metodo delle potenze, ed il metodo delle potenze inverse. 
9Approssimazione di funzioni e dati. Interpolazione polinomiale. Forma di Lagrange. Operatore lineare di interpolazione. Calcolo del polinomi di interpolazione. Formula di Newton delle differenze divise.  
10Il resto dell'interpolazione nelle forme di Lagrange e di Newton. 
11Polinomi di Chebyshev: formula ricorsiva, zeri, proprietà di minima norma.  
12Teorema di Weierstrass sulla approssimazione di una funzione continua mediante polinomi (enunciato). 
13Polinomi di Bernstein. Problema della convergenza di una successione di schemi interpolatori.  
14 Interpolazione mediante polinomi a tratti. Funzioni spline.  
15Calcolo delle spline cubiche.  
16Metodo dei minimi quadrati e applicazioni. Equazioni normali e loro interpretazione geometrica. 
17Soluzione di equazioni non lineari. Concetti generali. Metodi di bisezione, delle secanti e di Newton. Teoria generale dei metodi iterativi per equazioni non lineari e problemi di punto fisso. Ordine di convergenza. Criteri d'arresto. 
18Metodo di Aitken per metodi di ordine di convergenza uno e due. 
19Formule di quadratura. Integrali pesati. Forma generale di una formula di quadratura. Ordine polinomiale. Formule interpolatorie.  
20Teorema di convergenza. Formule di Newton-Cotes. Formule Gaussiane. 
21Formule composite: trapezi e Simpson. 
22Metodo di Romberg. Quadratura adattiva (cenni). 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame consiste in una prova pratica ed una prova orale.

Si può accedere all'esame orale solo dopo il superalmento della prova pratica.

La prova pratica consiste nella risoluzione al calcolarore di alcuni esercizi proposti entro un tempo stabilito dal docente e comunque non superiore alle tre ore.

Il superamento della prova pratica permette di accedere alla prova orale nella stessa sessione o anche in una sessione successiva, nell'arco di un anno.


Esempi di domande e/o esercizi frequenti

Le prove scritte assegnate negli ultimi appelli possono essere trovate ai seguenti indirizzi:

https://www.dropbox.com/sh/h720qqrnmx62xu2/AAACD3ltNQDU4Q14grvfpVF5a?dl=0

https://www.dropbox.com/sh/gsjcncqfik0yjge/AABUa4NxEgnHT6gfzsb5Txena?dl=0