Introduzione a Matlab -...

25
1 Lucio Zambon ® Introduzione a Matlab Matlab è: Abbreviazione di MATrix LABoratory Ambiente di sviluppo per il calcolo numerico (non indicato per il calcolo simbolico) Linguaggio di programmazione interpretato (non compilato)

Transcript of Introduzione a Matlab -...

1Lucio Zambon

®Introduzione a Matlab

Matlab è: Abbreviazione di MATrix LABoratory Ambiente di sviluppo per il calcolo numerico

(non indicato per il calcolo simbolico) Linguaggio di programmazione interpretato

(non compilato)

2Lucio Zambon

®Introduzione a Matlab

Matlab è inoltre: Prodotto proprietario della MathWorks

Esistono almeno 2 cloni (quasi equivalenti) GNU Octave Scilab

3Lucio Zambon

®Introduzione a MatlabAltre caratteristiche di Matlab Manipolazione di matrici Elaborazione di algoritmi Visualizzazione di funzioni e di dati numerici Creazione di interfacce grafiche

Documentazione (in inglese)http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/getstart.pdf

4Lucio Zambon

®Introduzione a MatlabInterfaccia utente di Matlab Lista variabili Storia comandi Finestra comandi Command Window Current directory Browser

5Lucio Zambon

®Introduzione a Matlab

Primi passi con Matlab help prima di numerose pagine di aiuto demo avvia numerose dimostrazioni introduttive who / whos lista delle variabili utilizzate quit esce da MatlabPrimo programma Matlabdisp('hello world') % questo è un commentos = 'hello world'; % il ; finale sopprime l'eco

6Lucio Zambon

®Introduzione a MatlabVariabiliUna variabile è una locazione di memoria a cui viene assegnato un valore. A questa locazione viene associato un nome key-sensitivea = 5, b = 3, A = a * b, A ~= aans variabile particolare, risultato dell’ultima operazione compiuta= operatore di assegnazione == test di ugualianza ~= test di disegualianza

7Lucio Zambon

®Introduzione a MatlabEspressioniFormule matematiche composte da variabili, costanti numeriche e operatori matematici etc.Alcuni operatori matematici:+ - * / < <= > >= ~= == ^ % elevamento a potenza&& % AND|| % ORCostanti numeriche:4.5, 0.23e-5, pi (==3.14159…), i ==sqrt(-1)

8Lucio Zambon

®Introduzione a MatlabTipi di variabiliLe variabili sono di default di tipo double cioè numeri “reali” a doppia precisione: a = 1.256e-7Tipi (classi) fondamentali sono:

9Lucio Zambon

®Introduzione a MatlabTipo LOGICALUna variabile di tipo logical rappresenta valori logici (detti anche booleani) true e false mediante valori numerici 1 e 0 rispettivamente.Alcuni operatori e alcune funzioni restituiscono valori logical. Ad esempio:a = pi > 3b = ischar(a)

10Lucio Zambon

®Introduzione a MatlabTipo STRUCTUREUna struttura è un insieme di dati non omogenei ciascuno con un identificatore.Esempio:studente.nome = 'tizio'studente.scritto = 25studente.orale = 23studente.media=(studente.scritto+studente.orale)/2

11Lucio Zambon

®Introduzione a MatlabVettori e matriciLe variabili possono essere vettori:A = [4 13] % vettore riga di 2 elementiz = [-27; -2; 4; 11; 43] % vettore colonna, 5 elem.X = [0 1 2 3 4 5] % vettore riga di 6 elementiY = [0:5] % vettore riga di 6 elementi == XVariabili di tipo matrice:B = [11 12; 21 22]

12Lucio Zambon

®Introduzione a Matlab

Operatore doppio punto :[0:5] == [0 1 2 3 4 5][0:0.1:1] == [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1][0:10] == [0:1:10][5:0] % Empty matrix: 1-by-0[5:-1:2] == [5 4 3 2]

13Lucio Zambon

®Introduzione a MatlabIndicizzazione di vettoriEstrazione dell'elemento i-esimo di un vettore (indici da 1 a n)X(4) Indicizzazione di matriciViene fornito sempre prima l'indice di riga e poi quello di colonna:B(1,2) % prima riga e seconda colonnaB(:,1) % estrae tutta la prima colonna di BB(1:3,:) % estrae le prime tre righe di B

14Lucio Zambon

®Introduzione a MatlabOperazioni fra matriciTrasposizioneA'Esempio: [1 5 3]' == [1; 5; 3]Prodotto righe per colonne:A * BProdotto elemento per elemento:A .* A

15Lucio Zambon

®Introduzione a MatlabCancellazione di righe e colonnePer cancellare si utilizza una coppia di parentesi quadreAd esempio per eliminare la seconda colonna della matrice X:X(:,2) = [ ]Non si possono cancellare i singoli elementi di una matrice:X(3,2) = [ ] restituisce un messaggio d'errore

16Lucio Zambon

®Introduzione a MatlabSistema di equazioni lineari (1)Ax = b con A matrice quadrata n*n x e b vettori colonna n*1x = A-1 bIn Matlab diviene:x = inv(A) * binv(A) restituisce la matrice inversa, tale che:inv(A) * A == I

17Lucio Zambon

®Introduzione a Matlab

Sistema di equazioni lineari (2)La soluzione x = inv(A) * b non è numericamente ottimizzata, per matrici grandi richiede troppo tempo.Questa operazione può essere sostituita con l'operatore divisione a sinistra:x = A \ b L’operatore \ serve per computare in modo ottimizzato la soluzione di sistemi lineari

18Lucio Zambon

®Introduzione a MatlabSistema di equazioni lineari: esempiox1 + x2 - x3 = 02x1 + x2 +x3 = 1x1 - 3x3 = -1

In Matlab divieneA = [1 1 -1; 2 1 1; 1 0 -3]b = [0; 1; -1]x = A \ b % == [0.2; 0.2; 0.4]

19Lucio Zambon

®Introduzione a Matlab

Comandi di uso comune (1)max(X), min(X) massimo e minimo di un vettorelength(X) lunghezza di un vettoresize(X) dimensioni di una matriceeye(n) matrice unitariazeros(m,n), ones(m,n) matrice di 0 e di 1exp(X), log(X) esponenziale, logaritmosin(X), cos(X), tan(X) seno, coseno, tangente

20Lucio Zambon

®Introduzione a MatlabComandi di uso comune (2)find(X) cerca un valore in un vettoresort(X) ordina un vettorelinspace(min, max, n) vettore di n elementi distribuiti uniformemente fra min e maxrand(m, n) matrice di numeri casuali m * nabs(X) valore assoluto di Xsqrt(x) radice quadrata

21Lucio Zambon

®Introduzione a Matlab

Comandi di uso comune: esempi (1)X = [-3 9 1 -4 4 12 2 1 0]m1 = min(X)m2 = max(X)find(X>1)find(X==1)sort(X)sqrt(abs(X))

22Lucio Zambon

®Introduzione a MatlabComandi di uso comune: esempi (2)A = rand(5, 2)B = eye(3)C = ones(2,3)D = [A,[B;C]]

diag(inv(D'))

23Lucio Zambon

®Introduzione a MatlabPolinomiP(x) = cnxn + cn-1xn-1 + … + c2x2 + c1x + c0 In matlab si rappresenta con un vettore:P = [cn cn-1 … c2 c1 c0]roots(P) trova le radici del polinomio Ppoly(X) trova il polinomio le cui radici sono X polyfit(X,Y,N) trova il polinomio di grado N che approssima meglio i punti di coordinate (X,Y)polyval(P, X) valuta il polinomio P nei punti X

24Lucio Zambon

®Introduzione a Matlab

Polinomi: esempi (1)poly([-1 -1]) % == [1 2 1]poly(-ones(1,3)) % == [1 3 3 1]roots([1 3 3 1]) % == [-1 -1 -1]Trovare la parabola che passa per i punti (3,4), (4,2) e (5,3):X=[3 4 5]Y=[4 2 3]polyfit(X,Y,2) % == [1.5 -12.5 28]

25Lucio Zambon

®Introduzione a Matlab

Polinomi: esempi (2)X=[3 4 5]Y=[4 2 3]x=[2:0.1:6]plot(X,Y,'rO')hold onplot(x,polyval(polyfit(X,Y,3),x))plot(x,polyval(polyfit(X,Y,2),x),'r')plot(x,polyval(polyfit(X,Y,1),x),'g')