MATLAB. Annalisa Pascarella pascarel@dima.unige.it.

Post on 01-May-2015

268 views 2 download

Transcript of MATLAB. Annalisa Pascarella pascarel@dima.unige.it.

MATLABMATLAB

Annalisa PascarellaAnnalisa Pascarella

pascarel@dima.unige.itpascarel@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

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

MATLAB come calcolatrice-MATLAB come calcolatrice-11

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

4 + 7

invio

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

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

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

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)

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]

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

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]

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

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])

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

Matrici triangolariMatrici triangolari

22

21

03

RA 32

021

303

RB

matrice triangolare inferiore ->

tril(A)

matrice triangolare superiore ->

triu(B)

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)

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

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

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’

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

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)

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

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

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

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

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

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

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])

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

……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])

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

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

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

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.

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

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

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

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