Introduzione a Matlab - mate.unipv.itmate.unipv.it/gualandi/metodi/slides/matlab.pdf · Ambiente...

37
Ambiente Matlab Tipi di dati Operatori e Funzioni Introduzione a Matlab Stefano Gualandi Università di Pavia, Dipartimento di Matematica email: [email protected] twitter: @famo2spaghi, @famo2conti blog: http://stegua.github.com

Transcript of Introduzione a Matlab - mate.unipv.itmate.unipv.it/gualandi/metodi/slides/matlab.pdf · Ambiente...

Ambiente Matlab Tipi di dati Operatori e Funzioni

Introduzione a Matlab

Stefano GualandiUniversità di Pavia, Dipartimento di Matematica

email: [email protected]: @famo2spaghi, @famo2contiblog: http://stegua.github.com

Ambiente Matlab Tipi di dati Operatori e Funzioni

Installazione Matlab

Per poter installare Matlab sul vostro computer personale doveteseguire le istruzioni descritte in questo documento:

http://mate.unipv.it/gualandi/metodi/UNIPV_quickstart_campus.pdf

Se non avete un computer personale, potete sempre studiare nelleaule informatiche di ateneo. Nelle aule B1, B2, C2, C3 e nella aulea matematica è sicuramente installato anche Matlab:

https://laboratori.unipv.it/

Ambiente Matlab Tipi di dati Operatori e Funzioni

Attivazione e gestione licenze

Ambiente Matlab Tipi di dati Operatori e Funzioni

Ambiente Matlab

Ambiente Matlab Tipi di dati Operatori e Funzioni

Eseguire uno script salvato in una cartella

Ambiente Matlab Tipi di dati Operatori e Funzioni

Leggere l’output dell’esecuzione nella shell Matlab

Ambiente Matlab Tipi di dati Operatori e Funzioni

IMPARARE A LEGGERE I MESSAGGI DI ERRORE !

Ambiente Matlab Tipi di dati Operatori e Funzioni

Tipi di dati

Numeri in virgola mobile (double, 64 bits), numeri complessi» a = 1; (senza il “;” stampa l’assegnamento a video)» b = 3 + 4i; (numero complesso)

Valori logici» a = true (’true’ viene valutato come ’1’)» b = false (’false’ viene valutato come ’0’)

Stringhe» msg = "Ottimo trovato"; (esempio di messaggio)

Vettori (1D array)» v1 = [1,-1,2] (vettore riga)» v2 = [1;-1;2] (vettore colonna)

Matrici (2D array)» A = [[1, -1]; [2,3]]; (matrice quadrata)» B = [[1,2,3]; [-1,2,-3]]; (matrice rettangolare)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Tipi di dati

Numeri in virgola mobile (double, 64 bits), numeri complessi» a = 1; (senza il “;” stampa l’assegnamento a video)» b = 3 + 4i; (numero complesso)

Valori logici» a = true (’true’ viene valutato come ’1’)» b = false (’false’ viene valutato come ’0’)

Stringhe» msg = "Ottimo trovato"; (esempio di messaggio)

Vettori (1D array)» v1 = [1,-1,2] (vettore riga)» v2 = [1;-1;2] (vettore colonna)

Matrici (2D array)» A = [[1, -1]; [2,3]]; (matrice quadrata)» B = [[1,2,3]; [-1,2,-3]]; (matrice rettangolare)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Tipi di dati

Numeri in virgola mobile (double, 64 bits), numeri complessi» a = 1; (senza il “;” stampa l’assegnamento a video)» b = 3 + 4i; (numero complesso)

Valori logici» a = true (’true’ viene valutato come ’1’)» b = false (’false’ viene valutato come ’0’)

Stringhe» msg = "Ottimo trovato"; (esempio di messaggio)

Vettori (1D array)» v1 = [1,-1,2] (vettore riga)» v2 = [1;-1;2] (vettore colonna)

Matrici (2D array)» A = [[1, -1]; [2,3]]; (matrice quadrata)» B = [[1,2,3]; [-1,2,-3]]; (matrice rettangolare)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Tipi di dati

Numeri in virgola mobile (double, 64 bits), numeri complessi» a = 1; (senza il “;” stampa l’assegnamento a video)» b = 3 + 4i; (numero complesso)

Valori logici» a = true (’true’ viene valutato come ’1’)» b = false (’false’ viene valutato come ’0’)

Stringhe» msg = "Ottimo trovato"; (esempio di messaggio)

Vettori (1D array)» v1 = [1,-1,2] (vettore riga)» v2 = [1;-1;2] (vettore colonna)

Matrici (2D array)» A = [[1, -1]; [2,3]]; (matrice quadrata)» B = [[1,2,3]; [-1,2,-3]]; (matrice rettangolare)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Tipi di dati

Numeri in virgola mobile (double, 64 bits), numeri complessi» a = 1; (senza il “;” stampa l’assegnamento a video)» b = 3 + 4i; (numero complesso)

Valori logici» a = true (’true’ viene valutato come ’1’)» b = false (’false’ viene valutato come ’0’)

Stringhe» msg = "Ottimo trovato"; (esempio di messaggio)

Vettori (1D array)» v1 = [1,-1,2] (vettore riga)» v2 = [1;-1;2] (vettore colonna)

Matrici (2D array)» A = [[1, -1]; [2,3]]; (matrice quadrata)» B = [[1,2,3]; [-1,2,-3]]; (matrice rettangolare)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Notazione Esponenziale (Normalizzata)La notazione in virgola mobile (floating points) si basa sullaNotazione Esponenziale (Normalizzata) di un numero x in baseβ, che è:

x = (−1)sd0.d1d2d3 . . . dt−1βe

= (−1)s(∑

i=0,...,t−1diβ−i)βe

= (−1)smβe

s è il segno di xβ è un intero > 1 e corrisponde alla basee è l’esponentem è la mantissa m = d0.d1d2d3 . . . dt−1, in cui 0 ≤ di ≤ β − 1

Esempio: La rappresentazione esponenziale normalizzata in basedieci di 0.00078391 è 7.8391e−4

Ambiente Matlab Tipi di dati Operatori e Funzioni

Insieme dei numeri in virgola mobile

Dati due numeri L e U entro cui è compreso l’esponente, possiamodefinire il seguente insieme di numeri:

F (β, t, L,U) := {0} ∪ {x | (−1)s(∑

i=0,...,t−1diβ−i)βe , L ≤ e ≤ U}

Si osservi che:Si ha che x ∈ F se e solo se −x ∈ FPer ogni x ∈ F , x 6= 0, si ha che:

xmin = βL ≤ |x | ≤ βU(2− β−t+1) = xmax

Ambiente Matlab Tipi di dati Operatori e Funzioni

Esempio: F (β = 2, t = 3, L = −1, L = 2)

Rappresentazione grafica dei numeri 16 (più lo 0) normalizzati(ovvero con d0 > 0) contenuti nell’insieme:

F (β = 2, t = 3, L = −1, L = 2)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Standard IEEE 754Sui calcolatori esistono due notazioni standard per i numeri invirgola mobile:

1 Singola precisione (float in C), usa t = 32 bits: 1 bit disegno, 8 bits per l’esponente, e 23 per la mantissa

2 Doppia precisione (double in C), usa t = 64 bits: 1 bit disegno, 11 bits per l’esponente, e 52 per la mantissa

Ambiente Matlab Tipi di dati Operatori e Funzioni

Standard IEEE 754: Esempio

Ambiente Matlab Tipi di dati Operatori e Funzioni

Numeri in virgola mobile in Matlab

Matlab usa lo standard IEEE 754, con numeri in doppiaprecisione (double)

Esistono due variabili predefinite per il minimo e massimonumero (in valore assoluto) rappresentabile in doppiaprecisione:» realmin (sul mio desktop vale 2.2251e-308)» realmax (sul mio desktop vale 1.7977e+308)

Ogni operazione che produca un risultato:maggiore di realmax genera un overflow e assume il valore Infminore del minimo valore denormalizzato genera un underflowe assume il valore 0indefinito (p.e. 0/0, Inf/Inf, Inf-Inf), il risultato assumeil valore NaN (Not A Number)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Numeri in virgola mobile in Matlab

Matlab usa lo standard IEEE 754, con numeri in doppiaprecisione (double)

Esistono due variabili predefinite per il minimo e massimonumero (in valore assoluto) rappresentabile in doppiaprecisione:» realmin (sul mio desktop vale 2.2251e-308)» realmax (sul mio desktop vale 1.7977e+308)

Ogni operazione che produca un risultato:maggiore di realmax genera un overflow e assume il valore Infminore del minimo valore denormalizzato genera un underflowe assume il valore 0indefinito (p.e. 0/0, Inf/Inf, Inf-Inf), il risultato assumeil valore NaN (Not A Number)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Numeri in virgola mobile in Matlab

Matlab usa lo standard IEEE 754, con numeri in doppiaprecisione (double)

Esistono due variabili predefinite per il minimo e massimonumero (in valore assoluto) rappresentabile in doppiaprecisione:» realmin (sul mio desktop vale 2.2251e-308)» realmax (sul mio desktop vale 1.7977e+308)

Ogni operazione che produca un risultato:maggiore di realmax genera un overflow e assume il valore Infminore del minimo valore denormalizzato genera un underflowe assume il valore 0indefinito (p.e. 0/0, Inf/Inf, Inf-Inf), il risultato assumeil valore NaN (Not A Number)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Precisione Macchina

Ambiente Matlab Tipi di dati Operatori e Funzioni

Operatori su scalari e vettori

Operatori numerici su semplici numeri» a = 7; b = 3;» ((a + b)*a/b-3)∧3;

Operatori su vettori» v1 = [1, -1, 2]’ (vettore trasporto)» 2+v1; 2*v1; v1/2» v1 * v1 (cosa dice il messaggio di errore?)» v1 * v1’ (il risultato è uno scalare o un vettore?)» v1’ * v1 (il risultato è uno scalare o un vettore?)» v1∧2 (cosa dice il messaggio di errore?)» v1.∧2 (operatore applicato per componente)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Operatori su scalari e vettori

Operatori numerici su semplici numeri» a = 7; b = 3;» ((a + b)*a/b-3)∧3;

Operatori su vettori» v1 = [1, -1, 2]’ (vettore trasporto)» 2+v1; 2*v1; v1/2» v1 * v1 (cosa dice il messaggio di errore?)» v1 * v1’ (il risultato è uno scalare o un vettore?)» v1’ * v1 (il risultato è uno scalare o un vettore?)» v1∧2 (cosa dice il messaggio di errore?)» v1.∧2 (operatore applicato per componente)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Operatori su matrici

Operatori su matrici. Provare i comandi seguenti e ragionaresui eventuali messaggi di errore:» A = [[1, -1]; [2,3]];» At = A’» 2+A; 3*A;» v1 = [2,-1]; v1*A» A*v1’» B = [[2,3,1];[-1,1,-1]]» B*A» A*B» B’*A» A+v1» B’+v1

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni

Su scalari» a=16; b = sqrt(a)» a=pi; b = sin(a); c = cos(a)» a=10; b = log(exp(10))

Su vettori» v1 = [2, -1]» sqrt(v1)» sin(v1)» exp(sin(v1))» v2 = zeros(10,1)» v2 = ones(1,10)» sum(v1) (sommatoria degli elementi del vettore)» prod(v1) (produttoria degli elementi del vettore)» norm(v1) (norma 2 di un vettore)» size(v1) (dimensione del vettore)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni

Su scalari» a=16; b = sqrt(a)» a=pi; b = sin(a); c = cos(a)» a=10; b = log(exp(10))

Su vettori» v1 = [2, -1]» sqrt(v1)» sin(v1)» exp(sin(v1))» v2 = zeros(10,1)» v2 = ones(1,10)» sum(v1) (sommatoria degli elementi del vettore)» prod(v1) (produttoria degli elementi del vettore)» norm(v1) (norma 2 di un vettore)» size(v1) (dimensione del vettore)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni su matrici

Funzioni su matrici» A = [[1, 4]; [16, 25]];» sqrt(A)» sin(A)» exp(sin(A))» B = zeros(10)» C = ones(5,10)» [righe, colonne] = size(C)

FUNZIONI PIU’ IMPORTANTI DA RICORDARE» inv(A) (matrice inversa)» det(A) (determinante)» trace(A) (traccia)» eig(A) (autovalori)» (trace(A) == sum(eig(A))) (vedi slides introduzione)» (det(A) == prod(eig(A))) (vedi slides introduzione)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni su matrici

Funzioni su matrici» A = [[1, 4]; [16, 25]];» sqrt(A)» sin(A)» exp(sin(A))» B = zeros(10)» C = ones(5,10)» [righe, colonne] = size(C)

FUNZIONI PIU’ IMPORTANTI DA RICORDARE» inv(A) (matrice inversa)

» det(A) (determinante)» trace(A) (traccia)» eig(A) (autovalori)» (trace(A) == sum(eig(A))) (vedi slides introduzione)» (det(A) == prod(eig(A))) (vedi slides introduzione)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni su matrici

Funzioni su matrici» A = [[1, 4]; [16, 25]];» sqrt(A)» sin(A)» exp(sin(A))» B = zeros(10)» C = ones(5,10)» [righe, colonne] = size(C)

FUNZIONI PIU’ IMPORTANTI DA RICORDARE» inv(A) (matrice inversa)» det(A) (determinante)

» trace(A) (traccia)» eig(A) (autovalori)» (trace(A) == sum(eig(A))) (vedi slides introduzione)» (det(A) == prod(eig(A))) (vedi slides introduzione)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni su matrici

Funzioni su matrici» A = [[1, 4]; [16, 25]];» sqrt(A)» sin(A)» exp(sin(A))» B = zeros(10)» C = ones(5,10)» [righe, colonne] = size(C)

FUNZIONI PIU’ IMPORTANTI DA RICORDARE» inv(A) (matrice inversa)» det(A) (determinante)» trace(A) (traccia)

» eig(A) (autovalori)» (trace(A) == sum(eig(A))) (vedi slides introduzione)» (det(A) == prod(eig(A))) (vedi slides introduzione)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni su matrici

Funzioni su matrici» A = [[1, 4]; [16, 25]];» sqrt(A)» sin(A)» exp(sin(A))» B = zeros(10)» C = ones(5,10)» [righe, colonne] = size(C)

FUNZIONI PIU’ IMPORTANTI DA RICORDARE» inv(A) (matrice inversa)» det(A) (determinante)» trace(A) (traccia)» eig(A) (autovalori)

» (trace(A) == sum(eig(A))) (vedi slides introduzione)» (det(A) == prod(eig(A))) (vedi slides introduzione)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni su matrici

Funzioni su matrici» A = [[1, 4]; [16, 25]];» sqrt(A)» sin(A)» exp(sin(A))» B = zeros(10)» C = ones(5,10)» [righe, colonne] = size(C)

FUNZIONI PIU’ IMPORTANTI DA RICORDARE» inv(A) (matrice inversa)» det(A) (determinante)» trace(A) (traccia)» eig(A) (autovalori)» (trace(A) == sum(eig(A))) (vedi slides introduzione)

» (det(A) == prod(eig(A))) (vedi slides introduzione)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Funzioni su matrici

Funzioni su matrici» A = [[1, 4]; [16, 25]];» sqrt(A)» sin(A)» exp(sin(A))» B = zeros(10)» C = ones(5,10)» [righe, colonne] = size(C)

FUNZIONI PIU’ IMPORTANTI DA RICORDARE» inv(A) (matrice inversa)» det(A) (determinante)» trace(A) (traccia)» eig(A) (autovalori)» (trace(A) == sum(eig(A))) (vedi slides introduzione)» (det(A) == prod(eig(A))) (vedi slides introduzione)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Definizione di nuove funzioni: Norma(X)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Definizione di nuove funzioni: Norma(X) (migliorata)

Ambiente Matlab Tipi di dati Operatori e Funzioni

Plot di una funzione 1D

Ambiente Matlab Tipi di dati Operatori e Funzioni

Esercizio per casa