Scheda insegnamento

Laboratorio di Programmazione e Calcolo                  

anno accademico:   2015/2016
docente:  Biancamaria Della Vecchia
corso di laurea:  Matematica - DM 270/04 (triennale), I anno
tipo di attività formativa:  di base
crediti formativi:  9 (72 ore di lezione)
raggruppamento disciplinare:  MAT/08 Analisi numerica
lingua di insegnamento:  italiano
canale:   A-H
periodo:  I sem (28/09/2015 - 15/01/2016)

Frequenza: consigliata

Obiettivi del corso: L'obiettivo principale del corso è quello di avviare gli studenti ad un approccio costruttivo nella matematica anche attraverso l'uso dei personal computers. Da questo punto di vista, il corso è complementare agli altri corsi del primo anno nei quali è maggiormente enfatizzato l'approccio logico/deduttivo. La maggior parte del corso sarà dedicata alla soluzione di problemi, all'analisi degli algoritmi di base ed alla loro implementazione in C.

Programma completo del corso: Introduzione al linguaggio C++: tipi di variabili, conversione di tipo, variabili array, operatori logici (or, and, not), istruzioni di lettura e scrittura, istruzioni condizionali (if-else) e istruzioni di ciclo (for, while, do-while). Funzioni matematiche. Struttura di un programma C++. Funzioni. Passaggio delle variabili. Cenni all'uso dei puntatori. Rappresentazione dei numeri interi e reali nel calcolatore. Propagazione degli errori nelle operazioni aritmetiche. Algoritmi stabili e algoritmi instabili:calcolo di pigreco. Calcolo del polinomio in un punto (algoritmo di Horner). Matrici, vettori e sistemi di equazioni lineari. Risoluzione numerica di sistemi di equazioni lineari: metodi di Gauss e di Jacobi. Uso della libreria grafica Gnuplot: grafico di una funzione. Metodi numerici per il calcolo degli zeri di una equazione non lineare: metodi della bisezione, di Newton e delle secanti. Uso della formula di Taylor per il calcolo di alcune funzioni matematiche. Interpolazione polinomiale. Metodi numerici per il calcolo di integrali definiti.

Contenuti svolti nella I settimana: Introduzione al corso. Rappresentazione dei numeri al calcolatore. Rappresentazione in virgola mobile. Approssimazione di un numero reale, precisione macchina, overflow, underflow. Singola e doppia precisione. Introduzione alla programmazione. Introduzione al linguaggio C. Primi esercizi su operatori logici. Foglio di esercizi N. 1

Contenuti svolti nella II settimana: Primi esercizi in C++; uso di printf, scanf; scambio tra due variabili; istruzioni condizionali; esercizi sul massimo tra più numeri, sui numeri pari, sulle classi resto, sulle equazioni di secondo grado. Foglio di esercizi N. 2

Contenuti svolti nella III settimana: Istruzioni condizionali e cicli (for, while, do while, switch). Algoritmi per il calcolo del fattoriale, per il calcolo del binomiale, per il calcolo della somma di n numeri. Algoritmo per il riconoscimento di un numero primo. Algoritmo euclideo per il calcolo del minimo comune multiplo. Foglio di esercizi N. 3

Contenuti svolti nella IV settimana: Algoritmo euclideo per il calcolo del massimo comun divisore. Analisi dell’errore propagato. Un algoritmo stabile per la risoluzione di un’equazione di secondo grado. Algoritmo per la scomposizione di un numero in fattori primi. Introduzione agli array. Algoritmo per il calcolo della somma di n numeri mediante array. Foglio di esercizi N. 4

Contenuti svolti nella V settimana: Algoritmo per trovare la massima componente di un vettore fornito in lettura. Algoritmo per trovare la massima componente di un vettore fornito in lettura e il relativo indice. Algoritmo di selection sort. Algoritmo per la trasformazione di un numero da base b a base 10. Tecniche per trovare gli errori in un programma. Algoritmo per trasformare un numero dalla base 10 alla base b. Allocazione statica e dinamica della memoria. Array a due dimensioni. Successioni definite per ricorrenza. Algoritmo di Erone. Algoritmo bubble sort. Foglio di esercizi N. 5

Contenuti svolti nella VI settimana: Algoritmo del crivello di Eratostene. Introduzione alle function. Algoritmo per il calcolo del valore assoluto e della norma. L’istruzione void. Algoritmo per la stampa di n numeri su c colonne. Passaggio delle variabili per valore e per indirizzo. Algoritmo per lo scambio tra 2 variabili, per la stampa e lettura di n dati. Discussione sulla prova di esonero. Foglio di esercizi N. 6

Contenuti svolti nella VII settimana: Successioni definite per ricorrenza Criteri di stop. Approssimazione di pi greco. Algoritmo per il calcolo del prodotto scalare tra due vettori e della norma del massimo ed euclidea. Richiami di algebra lineare. Norma di vettore e matrice. Metodi diretti e iterativi per la risoluzione di sistemi di equazioni lineari. Il metodo di Gauss. Foglio di esercizi N. 7

Contenuti svolti nella VIII settimana: Tecnica del pivot parziale e totale. Algoritmo per il calcolo del prodotto matrice vettore. Metodo di Jacobi. Criteri di stop a posteriori. Calcolo del determinante di un sistema di equazioni lineari. calcolo del rango di un sistema di equazioni lineari. Fattorizzazione LU. Calcolo dell'inversa di una matrice triangolare. Algoritmo di Thomas. Criteri di arresto a priori per il metodo di Jacobi. Confronto tra il metodo di Jacobi e il metodo di Gauss. Il metodo di Gauss-Seidel. Il problema del malcondizionamento. Esempi. Definizione di indice condizionamento. Analisi del comportamento dell'indice di condizionamento. Algoritmo di Horner. Foglio di esercizi N. 8

Contenuti svolti nella IX settimana: Algoritmo per il calcolo del prodotto tra due matrici e del prodotto vettore matrice. Algoritmo di Horner per il calcolo della derivata di un polinomio. Risoluzione numerica di equazioni non lineari. Metodo di bisezione. Metodo di Newton-Raphson. Metodo delle corde. Metodo delle secanti. Foglio di esercizi N. 9

Contenuti svolti nella X settimana: Libreria grafica Gnuplot. Lettura e scrittura su file. Foglio di esercizi N. 10

Contenuti svolti nella XI settimana: Metodo di Newton per il calcolo approssimato della radice di un numero reale. Metodo di Erone. Iterazione di punto fisso. Interpolazione lagrangiana. Metodo dei coefficienti indeterminati. Stime dell’errore. Formule di quadratura. Formula dei trapezi e di Simpson. Stime dell’errore. Formule di quadratura composite. Approssimazione mediante il polinomio di Taylor. Stime dell'errore. Foglio di esercizi N. 11

Contenuti svolti nella XII settimana: Rappresentazione dell'interpolazione Lagrangiana mediante polinomi fondamentali. Rappresentazione del resto dell'interpolazione Lagrangiana. Il problema della convergenza dell'interpolazione Lagrangiana. Il caso dei nodi equidistanti. Applicazione del metodo di Newton al calcolo del reciproco di un numero e al calcolo dell'inversa di una matrice.

Testo consigliato: Dispense in rete fornite dai docenti Luis J. Aguilar, "Fondamenti di programmazione in C++", McGraw-Hill, 2008 o testo equivalente. A. Quarteroni, R. Sacco, F. Saleri, "Matematica numerica", Springer, 2008 In alternativa al precedente puo' essere usato (se gia' posseduto) uno dei testi seguenti: A.Quarteroni , "Elementi di Calcolo Numerico", Progetto Leonardo ,1998 J.F. Epperson, "Introduzione all'analisi numerica", McGraw-Hill, 2003

Dispense:

Modalità di erogazione: convenzionale

Esercitazioni:

Risultati di apprendimento - Conoscenze acquisite: Gli studenti che abbiano superato l'esame saranno in grado di avere una conoscenza di base della programmazione e delle proprietà matematiche di semplici algoritmi. Gli studenti avranno anche acquisito le nozioni fondamentali sulla convergenza, l’ordine di convergenza, l’errore e la complessità di algoritmi elementari.

Risultati di apprendimento - Competenze acquisite: Gli studenti che abbiano superato l'esame saranno in grado di scrivere un semplice codice C per scopi scientifici e di utilizzare alcuni algoritmi numerici di base per la soluzione di problemi. Saranno anche in grado di scegliere l’algoritmo più appropriato per la soluzione di semplici problemi quali la ricerca degli zeri, il calcolo di un integrale e la soluzione di un sistema lineare. Durante le esercitazioni in laboratorio impareranno ad usare un PC, gli strumenti grafici e una rete LAN.

Studio personale: la percentuale prevista di studio personale sul totale dell'impegno richiesto è del 65%

Calendario appelli d'esame su Infostud

Dati statistici relativi ai risultati degli esami

© Università degli Studi di Roma "La Sapienza" - Piazzale Aldo Moro 5, 00185 Roma