matlab. annalisa pascarella [email protected]
TRANSCRIPT
![Page 1: MATLAB. Annalisa Pascarella pascarel@dima.unige.it](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/1.jpg)
MATLABMATLAB
![Page 3: MATLAB. Annalisa Pascarella pascarel@dima.unige.it](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/3.jpg)
……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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/31.jpg)
……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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061601/5542eb4c497959361e8b976a/html5/thumbnails/39.jpg)
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