Appunti di Laboratorio di Calcolo Numerico con Matlabluca.paulon/matlab.pdf · 50 Ing. Luca...

Post on 21-Jul-2020

3 views 0 download

Transcript of Appunti di Laboratorio di Calcolo Numerico con Matlabluca.paulon/matlab.pdf · 50 Ing. Luca...

Ing. Luca Paulon (paulon@dmmm.uniroma1.it )

Appunti di Laboratorio di Calcolo Numerico

con Matlab

Ing. Luca Paulon (paulon@dmmm.uniroma1.it )

1 Ing. Luca Paulon - Laboratorio di Calcolo Numerico

RiferimentiRiferimentiRiferimentiRiferimenti

� [1] Matlab help

� [2] MathWork web site

� [3] “Manualetto di Matlab”,

� [4] Calcolo Scientifico (Quarteroni, 4a edizione, Springer)

[5] http://www.dmmm.uniroma1.it/~paulon/matlab.pdf

Ing. Luca Paulon - Laboratorio di Calcolo Numerico2

� [5] http://www.dmmm.uniroma1.it/~paulon/matlab.pdf

� [6] http://www.dmmm.uniroma1.it/~paulon/matlab.zip

� [7] http://www.dmmm.uniroma1.it/~paulon/esercizi.pdf

� [8] Esercizi di Calcolo Numerico (Gori, Lo Cascio, Pitolli) –Edizioni Kappa

SommarioSommarioSommarioSommario� Day1Introduzione a Matlab: riferimenti; ambiente di sviluppo (IDE) di script. Tipi di variabili. Variabili predefinite. Variabili complesse.

Esempi.

� Day2Operatori puntuali e funzioni vettoriali. Istruzione linspace. Realizzazione di una function.

Ing. Luca Paulon - Laboratorio di Calcolo Numerico3

una function.Esempi.

� Day3Realizzazione di una function. Output su schermo (disp). Istruzioni condizionali (if-else-end). Operatori relazionali e operatori logici. Cicli enumerativi (do-end). Ciclo while.

Esempi.

� Day4Matrici

� Day5Sistemi Lineari, metodi iterativi di Jacobi e Gauss-Seidel

� Day6

Ing. Luca Paulon - Laboratorio di Calcolo Numerico4

� Day6Compito in classe

� Day7Correzione compiti e illustrazione di alcune domande di esame.

� Day8Applicazioni Matlab: demo e toolbox.

� Day9Integrazione numerica (approssimazione di integrali)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico5

� Day10Differenziazione numerica (approssimazione di derivate)

� Day11Correzione compiti e illustrazione di alcune domande di esame.

� Appendice 0

Concetti fondamentali di Calcolo Numerico

� Appendice 1

Esempio di applicazione in matlab

Ing. Luca Paulon - Laboratorio di Calcolo Numerico6

� Appendice 2

Gpu Computing

Day1: IDE di Day1: IDE di Day1: IDE di Day1: IDE di MatlabMatlabMatlabMatlab

Ing. Luca Paulon - Laboratorio di Calcolo Numerico7

Day1: IDE Day1: IDE Day1: IDE Day1: IDE ���� WorkspaceWorkspaceWorkspaceWorkspace

Ing. Luca Paulon - Laboratorio di Calcolo Numerico8

Day1: Variables Types

Ing. Luca Paulon - Laboratorio di Calcolo Numerico9

Day1: variabili predefinite

Ing. Luca Paulon - Laboratorio di Calcolo Numerico10

Day1: variabili complesse

Esempio

Ing. Luca Paulon - Laboratorio di Calcolo Numerico11

Day2-Day3: figure con grafici di funzioni

N=50;x=linspace(0,1,N);

func1=randn(N,1);func2=randn(N,1);

subplot(2,1,1);title('funzione1');Xlabel('Tempo');

Ing. Luca Paulon - Laboratorio di Calcolo Numerico12

Xlabel('Tempo');Ylabel('Ampiezza ');plot(x, func1);

subplot(2,1,2);title('funzione2');Xlabel('Tempo');Ylabel('Ampiezza ');plot(x, func2);

Day2 - Day3

Ing. Luca Paulon - Laboratorio di Calcolo Numerico13

Day2 - Day3

Ing. Luca Paulon - Laboratorio di Calcolo Numerico14

Day2 - Day3 (versione di matlab 2008 o superiore)

ESECUZIONE DELLO SCRIPT –OPZIONE2 (dall’editor di matlab)

1: richiamare il seguente menu a discesa dalla toolbar dell’editor di matlab

2: clicca su ‘Edit Run config….’

Ing. Luca Paulon - Laboratorio di Calcolo Numerico15

0 100 200 300 400 500 600 700 800 900 1000-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

3: inserisci il codice per il test dello script

4: esegui lo script

Day2-Day3

Dalla CommandWindow…

ESECUZIONE DELLO SCRIPT – OPZIONE1(dalla command window di matlab)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico16

Day3

Esempio. Il metodo di bisezione [4]

Algoritmo

Ripeti il seguente ragionamento fino a che le condizioni di arresto non sono

soddisfatte:

Ing. Luca Paulon - Laboratorio di Calcolo Numerico17

Day3

Esempio. Il metodo di bisezione [4]. L’errore (di troncamento)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico18

Day3

del metodo di bisezione [4]

Ing. Luca Paulon - Laboratorio di Calcolo Numerico19

Implementazionedel metodo di bisezione [4]

Day3

del metodo di bisezione [4]

Ing. Luca Paulon - Laboratorio di Calcolo Numerico20

Implementazionedel metodo di bisezione [4]

Day3

Implementazione del metodo di bisezione [4]

Ing. Luca Paulon - Laboratorio di Calcolo Numerico21

Day3 Esempio. Il metodo di bisezione [4]. Applicazione ad un caso specifico

Ing. Luca Paulon - Laboratorio di Calcolo Numerico22

Day3 Esempio. Il metodo di bisezione [4]. Applicazione ad un caso specifico

Ing. Luca Paulon - Laboratorio di Calcolo Numerico23

Day3 Esercizio per casa. Eseguire il debug dell’implementazione del metodo di bisezione per correggere errori o apportare modifiche. Infine realizzare il profiling temporale del metodo di bisezione usando i comandi tic e toc.

Esempio di uso di tic e toc

Ing. Luca Paulon - Laboratorio di Calcolo Numerico24

Esempio di uso di tic e toc

Dal prompt dei comandi:

>> tic; surf(peaks(40)); toc

Day4

Verifica dell’ ‘Esercizio per casa’ relativo all’implementazione del metodo di bisezione.

Esercizio: scrivere uno script per il test della funzione bisection per il caso specifico f(x) in figura 2.2 tale da graficare in uscita gli andamenti

Ing. Luca Paulon - Laboratorio di Calcolo Numerico25

caso specifico f(x) in figura 2.2 tale da graficare in uscita gli andamenti dell’ errore relativo e assoluto per tolleranze diverse.

Day4 - Matrici

Definizione di matrici1. ‘manuale’2. attraverso i comandi zeros, ones, diag

Salvataggio/caricamento matrice di dati

Ing. Luca Paulon - Laboratorio di Calcolo Numerico26

Definizione di matrici in singola precisione

Day4

% Esempio:

clear;n=10;B = 2*diag(ones(1,n));

Ing. Luca Paulon - Laboratorio di Calcolo Numerico27

B = 2*diag(ones(1,n));C =diag(ones(1,n-1),1);D = diag(ones(1,n-1),-1);

A = B – C – D

Day4

% Calcolo del determinante

det (A)

% Calcolo della norma 1, 2, infinito

Ing. Luca Paulon - Laboratorio di Calcolo Numerico28

nrm1 = norm (A,1)nrm2 = norm (A,2)nrmInf = norm (A,inf)

Day4 % Calcolo dei numeri di condizionamento 1,2, infinito

C1 = cond (A,1)C2 = cond (A,2)Cinf = cond (A,inf)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico29

% Calcolo degli autovalori e degli autovettori

[ V, W ] = eig(A);

% Calcolo del raggio spettrale

rho = max (abs(W))

Day4 % Calcolo del terzo autovalore e del corrispondente autovettore

lambda3 = W(3,3)v3 = V(:,3)

% Verifica che la matrice degli autovettori diagonalizza A

Ing. Luca Paulon - Laboratorio di Calcolo Numerico30

% Verifica che la matrice degli autovettori diagonalizza A

Vinv = inv(V);e = W–Vinv *A*VnormErr = norm ( e, 2)

% Verifica che la matrice degli autovettori diagonalizza A

ordineErr = normErr / eps

Day5 – Sistemi Lineari

Il metodo di Jacobi (vedi script jacobi.m)

Esercizio: test del metodo di jacobi (vedi jacobi_test.m)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico31

Esercizio: realizzare un test più articolato

Day5 – Sistemi Lineari

il metodo di Gauss-Seidel (vedi script gaussseidel.m)

Esercizio: realizzare un test semplice del metodo di Gauss Seidel

Ing. Luca Paulon - Laboratorio di Calcolo Numerico32

Esercizio: confrontare i due metodi

Day6 – Compito in classe sui sistemi lineari

Tradurre in linguaggio matlab le soluzioni degli esercizi 2.20 e 2.30 riportate nel file “esercizi.pdf ”. Scrivere ogni soluzione in script diversi.

NB: la teoria è fondamentale … , ad esempio sapere per i metodi iterativi di Jacobi e Gauss-Seidel:

Ing. Luca Paulon - Laboratorio di Calcolo Numerico33

Day 7 – Correzione compiti e

illustrazione delle domande di esame

� http://www.dmmm.uniroma1.it/~paulon/matlabesame.pdf

Ing. Luca Paulon - Laboratorio di Calcolo Numerico34

GUI = Graphics UserInterface

Day8 – Applicazioni Matlab

SCRIPT

CommandWindow

35

SCRIPT

Dettaglio per una applicazione Matlab

Modello a “strati” (layers) di un sistema composto da utente, hardware e software

Day8 – Applicazioni Matlab - DemoEsempio: Discrete Time Fourier transform. Nella command window digitare sigdemo1

36

Day8 – Applicazioni Matlab - DemoEsempio: Discrete Time Fourier transform.

37

Day8 – Applicazioni Matlab - Toolbox

Esempio: Signal Processing (SP) Toolbox. Digitare SPtool nella command line

38

MainWindow (finestra principale) della GUI del toolbox SPtool

Day8 – Applicazioni Matlab - ToolboxEsempio di elaborazione di un segnale con il toolbox SPTool

INPUTELABORAZIONE (FILTRAGGIO) OUTPUT

39

Filtro “passa basso”

Day8 - Applicazioni Matlab - ToolboxEsempio2: il toolbox symbolic

Ing. Luca Paulon - Laboratorio di Calcolo Numerico40

Polinomio di Taylor

Day 9 – Integrazione numerica

Ing. Luca Paulon - Laboratorio di Calcolo Numerico41

Day 9 – Integrazione numericaEsempio 1: distribuzione di probabilità normale (o gaussiana)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico42

L’area rappresenta la probabilità che il numero S (per esempio si pensi ad S come l’altezza in metri di una persona) sia compreso nell’intervallo [1.8, 1.9].

Problema: calcolare la suddetta probabilità (risolvendo numericamente l’integrale definito)

Day 9 – Integrazione numerica Il metodo dei trapezi Il metodo dei trapezi Il metodo dei trapezi Il metodo dei trapezi (semplice e composito)

cioè

Ing. Luca Paulon - Laboratorio di Calcolo Numerico43

Day 9 – Integrazione numerica Il metodo dei trapezi Il metodo dei trapezi Il metodo dei trapezi Il metodo dei trapezi (semplice e composito)

Implementazione in matlab (vedi [4]) del metodo dei trapezi

Ing. Luca Paulon - Laboratorio di Calcolo Numerico44

Day 9 – Integrazione numerica Il metodo del punto medio o rettangoli Il metodo del punto medio o rettangoli Il metodo del punto medio o rettangoli Il metodo del punto medio o rettangoli (semplice e composito)

cioè

Ing. Luca Paulon - Laboratorio di Calcolo Numerico45

Day 9 – Integrazione numerica

Implementazione in matlab (vedi [4]) del metodo composito del punto medio (rettangoli)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico46

Day 9 – Integrazione numerica Il metodo diIl metodo diIl metodo diIl metodo di Simpson Simpson Simpson Simpson (semplice e composito)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico47

Day 9 – Integrazione numerica

Implementazione in matlab del metodo di Simpson ( vedi [4] )

Ing. Luca Paulon - Laboratorio di Calcolo Numerico48

Day 9 – Integrazione numerica

Ing. Luca Paulon - Laboratorio di Calcolo Numerico49

Day 10 – Differenziazione numerica(approssimazione delle derivate)

Ing. Luca Paulon - Laboratorio di Calcolo Numerico50

In generale, e quindi anche nel caso della differenziazione numerica, ci possono essere diversi metodi che si possono usare per i calcoli, ciascuno con le proprie ipotesi di applicabilità e i propri vantaggi e svantaggi, che occorre conoscere bene. Sperimentalmente (cioè attraverso le implementazioni, per esempio in matlab) si procede, fissata una applicazione da sviluppare, nel confronto di essi considerando tempi di esecuzione, errore di approssimazione, etc. Infine si decide il migliore, se ne esiste uno, da utilizzare.

Day 10 – Differenziazione numerica(approssimazione delle derivate)

Esempio 1

Ing. Luca Paulon - Laboratorio di Calcolo Numerico51

Day 10 – Differenziazione numericaIl metodo della differenza finita in avanti.Il metodo della differenza finita in avanti.Il metodo della differenza finita in avanti.Il metodo della differenza finita in avanti.

Ing. Luca Paulon - Laboratorio di Calcolo Numerico52

Implementazione in matlab (realizzare uno script per esercizio)

Day 10 – Differenziazione numericaIl metodo della differenza finita all’indietro.Il metodo della differenza finita all’indietro.Il metodo della differenza finita all’indietro.Il metodo della differenza finita all’indietro.

Ing. Luca Paulon - Laboratorio di Calcolo Numerico53

Implementazione in matlab (realizzare uno script per esercizio)

Day 10 – Differenziazione numericaIl metodo della differenza finita Il metodo della differenza finita Il metodo della differenza finita Il metodo della differenza finita intermedia.intermedia.intermedia.intermedia.

Ing. Luca Paulon - Laboratorio di Calcolo Numerico54

Implementazione in matlab (realizzare uno script per esercizio)

Day 10 – Differenziazione numerica(approssimazione delle derivate)

Esempio 2

Ing. Luca Paulon - Laboratorio di Calcolo Numerico55

Day 10 – Differenziazione numerica(approssimazione delle derivate)

Svolgimento

Ing. Luca Paulon - Laboratorio di Calcolo Numerico56

(usare gli script realizzati)

Day 11 – Correzione compiti e

illustrazione delle domande di esame

� http://www.dmmm.uniroma1.it/~paulon/matlabesame.pdf

Ing. Luca Paulon - Laboratorio di Calcolo Numerico57

Appendice 0 [vedi 4]

Ing. Luca Paulon - Laboratorio di Calcolo Numerico58

Appendice 0 [vedi 4]

Ing. Luca Paulon - Laboratorio di Calcolo Numerico59

Appendice 0 [vedi 4]

Ing. Luca Paulon - Laboratorio di Calcolo Numerico60

Appendice 0

Ing. Luca Paulon - Laboratorio di Calcolo Numerico61

Appendice 0

Ing. Luca Paulon - Laboratorio di Calcolo Numerico62

Appendice 0

Ing. Luca Paulon - Laboratorio di Calcolo Numerico63

Appendice 0

Ing. Luca Paulon - Laboratorio di Calcolo Numerico64

Appendice 0

Ing. Luca Paulon - Laboratorio di Calcolo Numerico65

Appendice 0

Ing. Luca Paulon - Laboratorio di Calcolo Numerico66

Appendice 1: un semplice esperimento con Matlab

spike1

Realizzazione di uno script per la simulazione di una tensione sinusoidale disturbata dalla presenza di due o più “spike”

spike2

5

10

15

Matlab

Ing. Luca Paulon - Laboratorio di Calcolo Numerico67

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-15

-10

-5

0

Appendice 2: GPU computing

Ing. Luca Paulon - Laboratorio di Calcolo Numerico68

Appendice 3

Ing. Luca Paulon - Laboratorio di Calcolo Numerico69

Ringraziamenti

% Il dipartimento Me.Mo.Mat. , il Laboratorio di Informatica ed in particolare la Prof.ssa F. Pitolli

% Tutti gli studenti del corso ( per la pazienza e la dedizione dimostrate durante le lezioni in laboratorio )

Ing. Luca Paulon - Laboratorio di Calcolo Numerico70

durante le lezioni in laboratorio )