Introduzione allo Scilab
Parte 3: vettori e matrici.
Felice Iavernaro
Dipartimento di Matematica
Università di Bari
http://dm.uniba.it/∼iavernaro
[email protected]
19 ottobre 2007
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
1 / 45
Vettori (1/2)
Un vettore è un insieme ordinato di numeri, della forma:
x = [x1 , x2 , . . . , xn ] (vettore riga), oppure


x1
 x2 


 ..  (vettore colonna)
 . 
xn
Ad esempio, dal prompt di Scilab, digitando:
-->x=[2 1 0 -3]
oppure
-->x=[2, 1, 0, -3]
si assegna alla variabile x il vettore di 4 elementi: x = [2, 1, 0, −3]. Invece
digitando
-->x=[2; 1; 0; -3]
oppure
-->x=[2 1 0 -3]’
si ottiene l’analogo vettore colonna.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
3 / 45
Vettori (2/2)
Il numero di elementi di un vettore si chiama lunghezza del vettore: in
Scilab si ottiene mediante la function length:
-->length(x)
ans =
4.
Per accedere, ad esempio, al secondo elemento del vettore x, scriveremo:
-->x(2)
ans =
1.
Cosa succede se scriviamo x(5)?
Cosa succede se scriviamo x(5) = 1?
Cosa succede se scriviamo x(8) = −4?
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
5 / 45
Esercizi
Definiamo il vettore x = [1.5, −0.2, −3.1, 2.6] Se vogliamo calcolare la
somma degli elementi del vettore x, ed assegnare il risultato alla variabile s
potremo scrivere:
-->x=[1.5, -0.2, -3.1,2.6]; -->s=0;for i=1:4,s=s+x(i);end,disp(s)
0.8
ESERCIZIO: il libretto di uno studente riporta i seguenti voti:
26, 24, 28, 30, 27, 18, 26, 30, 29. Calcolarne la media aritmetica e la
media geometrica.
ESERCIZIO: Scrivere una function Scilab che calcola la varianza degli
elementi di un vettore x. Si ricordi che:
n
var(x) =
1X
(xi − x̄)2 ,
n
dove x̄ è il valor medio degli elementi di x
i=1
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
7 / 45
Esercizi
ESERCIZIO: Scrivere una function Scilab che ha in input due vettori reali
x ed y di uguale lunghezza n ed in output il loro prodotto scalare
xT y =
n
X
xi yi .
i=1
ESERCIZIO: Scrivere una function Scilab che ha in input un vettore x ed
in output il minimo elemento del vettore e l’indice della componente
corrispondente.
ESERCIZIO: Scrivere una function Scilab che ha in input un vettore x ed
in output il massimo elemento del vettore e l’indice della componente
corrispondente.
ESERCIZIO: Scrivere una function Scilab che ha in input un vettore x ed
in output ed in output il vettore che si ottiene da x ordinando le sue
componenti in senso crescente.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
9 / 45
Definizione di matrice reale
Definizione
Dati due interi positivi m ed n, una matrice A reale m × n è un array
bidimensionale avente m righe ed n colonne cosı̀ definito


a11 a12 · · · · · · a1n
 a21 a22 · · · · · · a2n 


A= .
..
.. 
 ..
.
. 
am1 am2 · · ·
···
amn
Più formalmente possiamo dire che una matrice è un’applicazione
A : {1, 2, . . . , m} × {1, 2, . . . , n} −→ R
tale che A(i, j) = aij ∈ R.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
11 / 45
Notazioni
Una matrice verrà solitamente denotata con le lettere maiuscole
dell’alfabeto, mentre gli elementi di una matrice con le lettere minuscole;
ad esempio la scrittura
A = {aij } i=1,...m , ovvero
j=1,...n
A = {aij }, i = 1, . . . m, j = 1, . . . n,
denoterà una matrice ad m righe ed n colonne il cui generico elemento è
aij . Denotiamo con Rm×n l’insieme delle matrici con m righe ed n colonne.
Esempio (A ∈ R3×4 )
√ 
2
0
−1
3
A =  π log(3)
−1/3
1 ,
2/3
0
sin(π/7) 4/3

è una matrice 3 × 4, ovvero a 3 righe e 4 colonne.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
13 / 45
Definire una matrice in Scilab
In Scilab, una matrice può essere definita elencando, tra parentesi
quadrate, le sue righe. Gli elementi su una stessa riga vanno separati da
una virgola o da uno spazio, mentre per passare da una riga alla successiva
si usa il punto e virgola. Ad esempio:
-->A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A =
16.
5.
9.
4.
3.
10.
6.
15.
2.
11.
7.
14.
13.
8.
12.
1.
In questo esempio A è una matrice quadrata di dimensione 4.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
15 / 45
Matrici particolari (1/4)
Se m = n, (num. di righe= num. di colonne), la matrice è detta
quadrata di dimensione n (se m 6= n, la matrice è detta rettangolare);
se m = n = 1, la matrice si riduce ad un unico elemento e dunque
coincide con uno scalare: A = (a11 );
se m = 1, la matrice possiede un’unica riga,
pertanto si riduce ad un
vettore riga: A = a11 a12 · · · a1n
se n = 1, la matrice possiede un’unica colonna, pertanto si riduce ad
un vettore colonna:


a11
 a21 
T


A =  .  ≡ a11 a21 · · · am1
.
.
 . 
am1
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
17 / 45
Matrici particolari (2/4)
La matrice m × n i cui elementi sono tutti nulli si chiama matrice
nulla e si denota con 0m×n o più semplicemente con 0.
Per ottenere una matrice nulla in Scilab, anziché elencare i suoi
elementi, si può utilizzare la function predefinita zeros:
-->zeros(2,3)
ans =
0.
0.
0.
0.
0.
0.
Se invece usiamo la function ones:
-->ones(2,3)
ans =
1.
1.
1.
1.
Felice Iavernaro (Univ. Bari)
1.
1.
Scilab: Vettori e matrici.
19/10/2007
19 / 45
Matrici particolari (3/4)
Si chiama matrice identica, ogni matrice quadrata avente elementi
diagonali uguali ad 1 ed elementi extra-diagonali nulli:


1 0 ··· ··· 0
 0 1 ··· ··· 0 


I = . .
.. 
.
.
 . .
. 
0 0 ··· ··· 1
Per ottenere una matrice identica in Scilab si usa la function predefinita
eye:
-->eye(4,4)
ans =
1.
0.
0.
0.
0.
1.
0.
0.
Felice Iavernaro (Univ. Bari)
0.
0.
1.
0.
0.
0.
0.
1.
Scilab: Vettori e matrici.
19/10/2007
21 / 45
Matrici quadrate particolari (4/4)
Una matrice quadrata A è detta:
I
I
I
diagonale se tutti i suoi elementi extra-diagonali sono nulli:
aij = 0, ∀i, j = 1, . . . n, i 6= j;
triangolare inferiore se tutti i suoi elementi al di sopra della diagonale
principale sono nulli: aij = 0, ∀i < j;
triangolare superiore se tutti i suoi elementi al di sotto della diagonale
principale sono nulli: aij = 0, ∀i > j;
Esempio:






1
0 0
1
0 0
1 1
0
D =  0 −2 0  , T =  −1 −2 0  , S =  0 0 −2  .
0
0 3
2 −4 3
0 0
3
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
23 / 45
Addizione tra matrici (1/2)
Definizione
Se A = {aij } e B = {bij } sono matrici m × n si definisce somma tra A e B
la matrice
A + B = {aij + bij } ∈ Rm×n
Esempio

1
A =  −1
2/3





2
3
1
0 1
2
2 4
0
1  , B =  −1 −2 0  , A + B =  −2 −2 1  .
1 −2
1/3 −4 3
1 −3 1
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
25 / 45
Addizione tra matrici (2/2): Esempio Scilab
-->A=[1 2 3;-1 0 1]
A =
1.
2.
- 1.
0.
3.
1.
-->B=[1 0 1; -1 -2 0]
B =
1.
0.
- 1.
- 2.
1.
0.
-->C=A+B
C =
2.
2.
- 2. - 2.
Felice Iavernaro (Univ. Bari)
4.
1.
Scilab: Vettori e matrici.
19/10/2007
27 / 45
Moltiplicazione di uno scalare per una matrice (1/2)
Definizione
Se A = {aij } ∈ Rm×n e λ ∈ R, si definisce prodotto di λ per A la matrice
λ · A = {λaij } ∈ Rm×n
Esempio


1 2
3
1 ,
A =  −1 0
2/3 1 −2
Felice Iavernaro (Univ. Bari)

1 4
6
1 .
2 · A =  −2 0
4/3 2 −4
Scilab: Vettori e matrici.

19/10/2007
29 / 45
Moltiplicazione di uno scalare per una matrice (2/2):
Esempio Scilab
-->A=[1 2 3;-1 0 1]
A =
1.
2.
3.
- 1.
0.
1.
-->lambda=2.5
lambda =
2.5
-->lambda*A
ans =
2.5
5.
- 2.5
0.
Felice Iavernaro (Univ. Bari)
7.5
2.5
Scilab: Vettori e matrici.
19/10/2007
31 / 45
Trasposta di una matrice (1/2)
Se A ∈ Rm×n , la trasposta di A, denotata con AT , è la matrice ottenuta
da A scambiando le righe con le colonne (o viceversa), ovvero
AT = {aji },
i = 1, . . . m, j = 1, . . . n.
Pertanto AT ∈ Rn×m .
Esempio
A=
Felice Iavernaro (Univ. Bari)
1 2 3
−1 0 1

1 −1
0 .
=⇒ AT =  2
3
1
Scilab: Vettori e matrici.

19/10/2007
33 / 45
Trasposta di una matrice (1/2): Esempio Scilab
In Scilab per ottenere il trasposto si usa l’apice:
-->A=[1 2 3;-1 0 1]
A =
1.
- 1.
2.
0.
3.
1.
-->B=A’
B =
1.
2.
3.
- 1.
0.
1.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
35 / 45
Prodotto di matrici (righe per colonne)
Ricordiamo che se a e b sono due vettori (colonna) di lunghezza n, il
prodotto scalare di a e b denotato con aT b è cosı̀ definito:
T
a b≡
n
X
ak bk .
k=1
Siano A ∈ Rm×p e B ∈ Rp×n . Si definisce prodotto (righe per
colonne) tra A e B la matrice C = A · B ∈ Rm×n il cui elemento
generico cij è il prodotto scalare tra la riga i-esima di A e la colonna
j-esima di B:
cij =
aT
i
bj =
p
X
aik bkj ,
i = 1, . . . m, j = 1, . . . , n.
k=1
aT
i → i-esima riga di A;
Felice Iavernaro (Univ. Bari)
bj → j-esima colonna di B.
Scilab: Vettori e matrici.
19/10/2007
37 / 45
ESEMPIO
Osservazione
Il prodotto tra due matrici è possibile solo se il numero di colonne del
primo fattore coincide con il numero di righe del secondo fattore.

A=
1
−1
2
0
3
1
4
2
A·B =
=
aT1
aT2
,

B=
T
T
aT
1 b1 a1 b2 a1 b3
T
T
a2 b1 a2 b2 aT
2 b3
1
−1
0
2
−1
0
2
1
=
3
1
−1
−2


 = ( b 1 , b2 , b3 )
7 9 −6
3 5 −8
B · A non è possibile.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
39 / 45
Ulteriori esempi (1/2)
 
1 2 3
−1
 4 5 6 · 1
−2
7 8 9

1
−1 1 −2 ·  4
7




−5
 =  −11 
−17

2 3
5 6  = −11 −13 −15
8 9
2 
 
 

1 2 3
1 2 3
1 2 3
30 36 42
 4 5 6  =  4 5 6  ·  4 5 6  =  66 81 96 
7 8 9
7 8 9
102 126 150
7 8 9

Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
41 / 45
Ulteriori esempi (2/2)
0 −1
−4 1
·
=
−2
1
−8 1
0 −1
1 2
−3 −4
·
=
−2
1
3 4
1
0
1 2
3 4
Osservazione
Dunque, se A e B sono quadrate dello stesso ordine, A · B e B · A sono
ben definite, tuttavia, in generale A e B non sono permutabili cioè, in
generale, A · B 6= B · A.
Ne segue che la moltiplicazione tra matrici non è commutativa.
Felice Iavernaro (Univ. Bari)
Scilab: Vettori e matrici.
19/10/2007
43 / 45
Prodotto tra matrici: Esempio Scilab
-->A=[1 2 3; 4 5 6]
A =
1.
2.
3.
4.
5.
6.
-->B=[1 2 1 -1;1 -1 0 1;0 1 -2 1]
B =
1.
2.
1. - 1.
1. - 1.
0.
1.
0.
1. - 2.
1.
-->C=A*B
C =
3.
9.
3.
9.
- 5.
- 8.
Felice Iavernaro (Univ. Bari)
4.
7.
Scilab: Vettori e matrici.
19/10/2007
45 / 45
Scarica

vettori e matrici. - Dipartimento di Matematica