MATLAB MATLAB
MATLABMATLAB
Annalisa PascarellaAnnalisa Pascarella
[email protected]@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