matlab. annalisa pascarella [email protected]

39
MATLAB MATLAB

Upload: frediano-lorusso

Post on 01-May-2015

271 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

MATLABMATLAB

Page 2: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Annalisa PascarellaAnnalisa Pascarella

[email protected]@dima.unige.it

Page 3: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

……di cosa parliamo oggi…di cosa parliamo oggi…

Piccola introduzione a MatlabPiccola introduzione a Matlab MatriciMatrici

definizionedefinizione operazionioperazioni

Sistemi lineari Sistemi lineari Ax=bAx=b A quadrata singolare e nonA quadrata singolare e non A m x nA m x n

EserciziEsercizi

Page 4: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

MATLABMATLAB MATrix LABoratoryMATrix LABoratory Linguaggio di programmazione Linguaggio di programmazione

interpretatointerpretato legge un comando per volta eseguendolo legge un comando per volta eseguendolo

immediatamenteimmediatamente

Per avviarlo -> Per avviarlo ->

icona sul desktopicona sul desktop

command window

Page 5: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

MATLAB come calcolatrice-MATLAB come calcolatrice-11

è possibile definire variabili e operare su essex = 9 -> invio

4 + 7

invio

Page 6: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

MATLAB come calcolatrice-MATLAB come calcolatrice-22

Operatori aritmeticiOperatori aritmetici +, -, *, /, ^, +, -, *, /, ^, Caratteri specialiCaratteri speciali ;, %, : ;, %, : Variabili predefiniteVariabili predefinite i, pi, NaN, Infi, pi, NaN, Inf

2/02/0 ->-> InfInf 0/00/0 ->-> NaN (Not-a-Number)NaN (Not-a-Number)

Funzioni elementariFunzioni elementari sin, cos, log, sin, cos, log, expexp

Comandi specialiComandi speciali help, clear help, clearhelp sqrt

Page 7: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Lavorare con MATLABLavorare con MATLAB

In MATLAB tutte le variabili sono trattate In MATLAB tutte le variabili sono trattate come matricicome matrici scalariscalari ->-> matrici 1 x 1matrici 1 x 1 vettori rigavettori riga ->-> matrici 1 x nmatrici 1 x n

v = (vv = (v11,…, v,…, vnn)) vettori colonnavettori colonna ->-> matrici n x 1matrici n x 1

v = (vv = (v11,…, v,…, vnn))TT

matricimatrici -> -> matrici m x nmatrici m x n

mnm

n

aa

aa

A

1

111

Page 8: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

VettoriVettori

Per definire un vettore rigaPer definire un vettore riga

Per definire un vettore colonnaPer definire un vettore colonna

a = [1 2 3 4 5]o

a = [1, 2, 3, 4, 5]

a = [1; 2; 3; 4; 5]o

a = [1 2 3 4 5] ’

trasposto

per separare le righe

Page 9: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Matrici - 1Matrici - 1 Per definire una matricePer definire una matrice

22

21

03

RA

A = [3 0; 1 2]A = [3 0 1 2]

32

021

303

RB B = [3 0 3; 1 2 0]

size(B)size(B) ->-> dimensioni della matricedimensioni della matrice per memorizzare le dimensioni -> per memorizzare le dimensioni -> [r c] = [r c] =

size(B)size(B)

Page 10: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Matrici - 2Matrici - 2

22

21

03

RA

a1 = [3 0]a2 = [1 2]

A = [a1;a2]

32

021

303

RB

b1 = [3;1]b2 = [0; 2]b3 = [3; 0]

B = [b1, b2, b3]

Page 11: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Il comando :Il comando :

Importante per la manipolazione delle Importante per la manipolazione delle matricimatrici

EsempiEsempi generazione di vettori che siano delle generazione di vettori che siano delle

progressione aritmetiche di passo costanteprogressione aritmetiche di passo costante• a = [1:10]a = [1:10] o o a = 1:10a = 1:10• b = 1: .2 : 4b = 1: .2 : 4• c = 3:0c = 3:0 ->-> non produce niente!!!!non produce niente!!!!• c = 3: -1: 1c = 3: -1: 1

mediante : si possono estrarre righe e colonnemediante : si possono estrarre righe e colonne

Page 12: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Esercizio1 Esercizio1

Costruire il vettore Costruire il vettore v = [1,2,…,19,20,20,19,…,2,1]v = [1,2,…,19,20,20,19,…,2,1]

Costruire la matrice A avente come Costruire la matrice A avente come colonne i 3 vettoricolonne i 3 vettori v1 = [1,2,…,9]v1 = [1,2,…,9] v2 = [2,4,…,18]v2 = [2,4,…,18] v3 = [9,8,…,1]v3 = [9,8,…,1]

Page 13: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Individuare\modificare Individuare\modificare elementielementi

per selezionare un per selezionare un elementoelemento

per modificare l’elementoper modificare l’elemento

per visualizzare Bper visualizzare B

32

021

303

RB

B(2,3)

B(2,3) = 1;

B

Page 14: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Estrarre sottomatriciEstrarre sottomatrici

estrarre la riga Restrarre la riga R22

32

021

303

RB

B(2,:)

B(:,2:3)

estrarre la colonna Cestrarre la colonna C22B(:,2)

sottomatrice 2 x 2sottomatrice 2 x 2

B(:,[1 3])

Page 15: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Matrici diagonaliMatrici diagonali

22

21

03

RA

20

03A

costruisce anche matrici diagonali

40

01

Diagonale di A

d = diag(A)

diag(d)

a = [ 1 2 ]; diag(a)

20

01D

Page 16: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Matrici triangolariMatrici triangolari

22

21

03

RA 32

021

303

RB

matrice triangolare inferiore ->

tril(A)

matrice triangolare superiore ->

triu(B)

Page 17: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Identità-zero-unoIdentità-zero-uno

identità di ordine n-> eye(n)

eye(3)

100

010

001

I

matrice nulla m x n ->

000

000Z

zeros(m,n)

zeros(2,3)

matrice m x n di 1 ->

111

111Z

ones(m,n)

ones(2,3)

Page 18: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

I modoI modo

II modoII modo

III modoIII modo

Matrici a blocchiMatrici a blocchi22

21

03

RA

300

021

003

A

1121

3203D

A(3,3) = 3

C = [2 3; 1 1]

D = [A C]

C(3:4,3:4) = eye(2)

1100

1100

0011

0032

C

Page 19: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Operazioni - 1Operazioni - 1

clear

A=[1 2;3 4];

B=[1 0;-1 1];

C=[0 3 1;1 2 4];

D=[3 4 -1;5 2 3;0 1 -1];

110

325

143

421

130

11

01

43

21DCBA

Page 20: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Operazioni - sommaOperazioni - somma

421

130

11

01

43

21CBA

Somma / Differenza

A+B

A-B

A+C??? Error using = => +

Matrix dimensions must

agree.

Trasposta A’

Page 21: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Operazioni - prodottoOperazioni - prodotto

11

01

43

21BA

Prodotto A*B #CA = #RB

Elemento per elemento

A.*B size(A) = size(B)

Prodotto per uno scalare

A*k

Page 22: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

DeterminanteDeterminante

110

325

143

11

01DB

Determinante det(B)

det(D)

1

0

Inversa inv(B)

inv(D)

Rango rank(D) 2

11

01

?

B^(-1)

Page 23: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Esercizio 2Esercizio 2 Costruire le matrici A e B Costruire le matrici A e B

Estrarre da A 2 sottomatrici:Estrarre da A 2 sottomatrici: una costituita dalle ultime 3 colonneuna costituita dalle ultime 3 colonne una costituita dalla I e III riga e dalle colonne II e IVuna costituita dalla I e III riga e dalle colonne II e IV

111111

300

000

000

100

010

001

80138

901183

401212

101241

2

BA

Page 24: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

mnnm bxA

bxA

RRR

Sistemi LineariSistemi Lineari

Teorema di Rouchè-CapelliTeorema di Rouchè-Capelli rango(A) = rango(A|b) <=> il sistema è rango(A) = rango(A|b) <=> il sistema è

risolubilerisolubile

rango(A) = rango(A|b) = n => rango(A) = rango(A|b) = n => unica unica soluzionesoluzione

rango(A) = rango(A|b) = p < n => rango(A) = rango(A|b) = p < n => ∞∞n-p n-p

soluzionisoluzioni

matrice dei coefficienti matrice dei

termine noti

Page 25: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Risoluzione di sistemi Risoluzione di sistemi LineariLineari

Ax = bAx = b SostituzioneSostituzione Cramer Cramer

SE A è quadrata E invertibileSE A è quadrata E invertibile Algoritmo di GaussAlgoritmo di Gauss

• operazioni elementari sulle righeoperazioni elementari sulle righe• pivotizzazione (parziale o totale) -> pivotizzazione (parziale o totale) ->

importante quando si implementa importante quando si implementa l’algoritmo al calcolatorel’algoritmo al calcolatore

Page 26: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Sistemi Lineari non Sistemi Lineari non singolarisingolari

bAxctxA

bxAn

nnnxn

..!0det R

RRR

x = A\bil simbolo nn è quello della divisione!!

x = inv(A)*b

la soluzione è calcolata mediante l’algoritmo Gaussiano con pivot parzialela soluzione è calcolata mediante l’algoritmo Gaussiano con pivot parziale tempo richiesto minore del calcolo dell’inversatempo richiesto minore del calcolo dell’inversa

Page 27: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

EsempioEsempio

2

2

3

111

111

111

bA

A = [1 1 1; 1 1 -1; 1 -1 1];b = [3 2 2]’;det(A)x = A\b

)2

1,

2

1,2(),,( zyx

ci assicuriamo che il det di A sia diverso da zero

Page 28: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

A quadrata singolare A quadrata singolare

0det

2

14

14

110

325

143333

A

bAbA RR

A = [3 4 -1; 5 2 3; 0 1 -1];A = [3 4 -1; 5 2 3; 0 1 -1];b = [14 14 2]’;b = [14 14 2]’;rank(A)rank(A)rank([A b])rank([A b])

per vedere se il sistema èper vedere se il sistema èrisolubile confrontiamo il risolubile confrontiamo il rango di A con quello dellarango di A con quello dellamatrice completa (A|b)matrice completa (A|b)

questo sistema è risolubile in quanto rango(A)=rango(A|b)=2 => ∞ soluzioni∞ soluzioni

Page 29: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Il comando rrefIl comando rref

Per studiare e risolvere un sistema Per studiare e risolvere un sistema qualunque si deve ridurre la matrice qualunque si deve ridurre la matrice completa (A|b)completa (A|b) Si usa il comandoSi usa il comando rref(reduced row echelon rref(reduced row echelon

form )form )

),2,2(),,(

0000

2110

2101

2110

14225

14143

zzzzyx

rref([A b])

rrefmovie([A b])

Page 30: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

A = [1 0 1; 0 -1 0]; A = [1 0 1; 0 -1 0];

b = [0 1]’;b = [0 1]’;

rank(A)rank(A)

rank([A b])rank([A b])

rref([A b])rref([A b])

A non quadrataA non quadrata

2332

1

0

010

101RRR

bxAbA

),1,(),,(

1010

0101

1010

0101

zzzyx

questo sistema è risolubile in quanto rango(A)=rango(A|b)=2 => ∞ soluzioni∞ soluzioni

Page 31: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

……riassumendo…riassumendo… A quadrata NON singolareA quadrata NON singolare

Matlab ci fornisce la soluzioneMatlab ci fornisce la soluzione A quadrata singolare o A m x nA quadrata singolare o A m x n

rref ci restituisce la matrix ridotta rref ci restituisce la matrix ridotta le soluzioni le dobbiamo scrivere noi a partire le soluzioni le dobbiamo scrivere noi a partire

dalla matrix ridotta ottenutadalla matrix ridotta ottenuta

x = A\b

rank(A)rank(A)rank([A b])rank([A b])rref([A b])rref([A b])

Page 32: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

EserciziEsercizi Studiare e risolvere, eventualmente, i seguenti sistemi Studiare e risolvere, eventualmente, i seguenti sistemi

lineari:lineari:

Lanciare per l’ultima matrice il comando rrefmovie([A b])Lanciare per l’ultima matrice il comando rrefmovie([A b])

1

3

1

00110

12110

01121

2

4

1

11

21

31

0

4

1

101

121

431

bA

bA

bA

Page 33: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

sono linearmenti indipendenti

Vettori l.i.Vettori l.i.n

mvvv R,,, 21

mikvkvkvk imm ,,1002211

)(0

)'(

)'(

1

1

111

1111

mnmArangoAk

aav

A

aa

aa

A

aav

nmmm

mn

nmn

m

n

x

banale soluzione ha

R

Page 34: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Esempio - 1Esempio - 1

l.i. sono se vedere per

vvv

con)v,v,span(v V Sia

321

321

)021()112()201(

3

R

v1 = [1 0 2]’;

v2 = [2 1 1]’;

v3 = [1 2 0]’;

A = [v1 v2 v3]

rank(A)

il rango è 3 => i vettori sono l.i. e quindi formano una base per R3

Page 35: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Esempio - 2Esempio - 2

)2020()0101()1122()1021(

4

4321

4321

vvvv

con),vv,v,span(v V Sia R

v1 = [1 2 0 1]’;

v2 = [2 2 1 1]’;

v3 = [1 0 1 0]’;

v4 = [0 2 0 2]’;

A = [v1 v2 v3 v4]

rank(A)

il rango è 3 => i vettori sono l.d.

Page 36: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

Esempio - 2 Esempio - 2 Per trovare una c.l. nulla a coefficienti nn Per trovare una c.l. nulla a coefficienti nn

tutti nulli t.c. tutti nulli t.c.

troviamo una soluzione nn nulla del troviamo una soluzione nn nulla del sistema omogeneo Ak = 0sistema omogeneo Ak = 0

044332211 vkvkvkvk

rref(A)

)0,1,1,1(),,,(

0000

1000

0110

0101

4321

kkkk

A

Page 37: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

BasiBasi Dopo aver verificato che i vettori vDopo aver verificato che i vettori v11, v, v2, 2, vv3 3

sono una base di sono una base di RR33 esprimere v come c.l. esprimere v come c.l. dei vdei vii )111()101()110()011( vvvv 321

v1 = [1 1 0’]’;

v2 = [0 1 1]’;

v3 = [1 0 1]’;

v = [1 1 1]’;

A = [v1 v2 v3]

rank(A)

il rango è 3 => i vettori sono l.i.

i coefficienti lineari della combinazione si

trovano:k=A\v

)5.0,5.0,5.0(),,( 321 kkk

Page 38: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

sono l.i. sono l.i. rank(A)=m A (n>=m)rank(A)=m A (n>=m)

W = span(W = span(vv11,,vv22,…,,…,vvmm)) dim W = rank(A)dim W = rank(A) per trovare una base del s.s.per trovare una base del s.s. B BWW si considerano i vettori si considerano i vettori

l.i. che costituiscono la matrix l.i. che costituiscono la matrix AA per esprimere un vettore w come c.l. dei vettori della per esprimere un vettore w come c.l. dei vettori della

base, si forma la matrix B avente per colonne le base, si forma la matrix B avente per colonne le componenti di tali vettori e si risolve il sistema componenti di tali vettori e si risolve il sistema Bk=wBk=w

se i vettori sono l.d. => i coefficienti di una loro se i vettori sono l.d. => i coefficienti di una loro combinazione lineare non nulla si trovano combinazione lineare non nulla si trovano risolvendo il sistema risolvendo il sistema Ak=0Ak=0

……ricapitolando…ricapitolando…n

1 2, , , mv v v R mnA xR

Page 39: MATLAB. Annalisa Pascarella pascarel@dima.unige.it

EsercizioEsercizio

i

321

321

321

w dei c.l. come

w esprimere di base una formano

www

vettori i che dimostrato aver Dopo

dimW la trovare

www

con)w,w,span(w W Dato

)333(

)411()422()521(

)1111()0213()4011(

3

4

R

R