Matrici in Octave

Da Wikiversità, l'università aperta.
Stubby
Questa lezione è solo un abbozzo. Se puoi contribuisci adesso a migliorarla secondo le convenzioni di Wikiversità.
Per l'elenco completo degli stub, vedi la relativa categoria
Matrici in Octave


Analisi numerica > Matrici in Octave

lezione
Matrici in Octave
Tipo di risorsa Tipo: lezione
Materia di appartenenza Materia: Analisi numerica
Programma Programma: [[{{{programma1}}}]]
Programma Programma: [[{{{programma2}}}]]
Programma Programma: [[{{{programma3}}}]]
Programma Programma: [[{{{programma4}}}]]

Indice

Creazione di matrici [modifica]

Per creare una matrice \displaystyle \mathbf{A} quadrata di nove elementi in Octave inseriamo gli elementi tra parentesi quadre:

octave:1> A = [1 2 3; 4 5 6; 7 8 9]
A =

  1  2  3
  4  5  6    
  7  8  9

Gli spazi definiscono la separazione tra colonne ed i punti e vergola la separazione tra le righe. Ovviamente è possibile creare matrici rettangolare, per esempio

octave:2> B = [1 2 3; 4 5 6]
B =

  1  2  3
  4  5  6    

Possiamo facilmente trovare la trasposta \displaystyle \mathbf{A}^T ( o \displaystyle \mathbf{B}^T) con

octave:4> A = [1 2 3; 4 5 6; 7 8 9]'
A =

  1  4  7
  2  5  8    
  3  6  9
octave:5> B'
ans =

  1  4  
  2  5      
  3  6

Comandi utili per la creazione di matrici [modifica]

Talvolta può risultare utile creare matrici di zeri, solo per allocare memoria e velocizzare le simulazioni. Se volessimo creare un matrice \displaystyle \mathbf{B}=\mathbf{0} \in \mathcal{M}_{m\times n}, con abbiamo per esempio:

octave:6> B = zeros(3,2)
B =

  0  0  
  0  0      
  0  0

Se si volesse invece creare una matrice di \displaystyle \mathbf{A}=\mathbf{1} \in \mathcal{M}_{m\times m}

octave:7> A = ones(3,3)
A =

  1  1  1  
  1  1  1    
  1  1  1

Per creare la matrice identità \mathbf{I} si usa il comando

octave:4> I=eye(3,3)
I =
Diagonal Matrix
  1   0   0
  0   1   0
  0   0   1
octave:5> B=eye(3,2)
B =
Diagonal Matrix
  1   0
  0   1
  0   0

Operazioni tra Matrici [modifica]

Valgono le normali regole tra matrici. Quindi è importante conscere le dimensioni delle matrici su cui vogliamo operare

octave:6> size(A)
ans =
  3   3
octave:7> size(B)
ans =
  3   2


La somma è possibile se e solo se le due matrici \mathbf{A} e \mathbf{B} appartengono allo stesso spazio \mathcal{M}_{m\times n}, cioè hanno le stesse dimensioni.

octave:8> A + B
error: operator +: nonconformant arguments (op1 is 3x3, op2 is 3x2)
octave:9> C = A + [0 1 2; 3 4 5; 6 7 8]
C =
  1   2   3
  4   5   6
  7   8   9

Seguendo invece le regole per la moltiplicazione si ha che se \mathbf{C} \in \mathcal{M}_{m \times n} e \mathbf{B} \in \mathcal{M}_{p \times q} il prodotto \mathbf{D}=\mathbf{C} \mathbf{B} è possibile solo se \displaystyle n=p

octave:10> D = B * A
error: operator *: nonconformant arguments (op1 is 3x2, op2 is 3x3)
octave:11> D = C * B
D =
  1   2
  4   5
  7   8

L'operazione di moltiplicazione tra i corrispettivi elementi di due matrici è possibile tramite l'operatore "."

octave:16> D = A .* C
D =
  1   2   3
  4   5   6
  7   8   9


Accesso agli elementi di una matrice [modifica]

Definita la matrice \mathbf{D} utilizziamo le parentesi tonde per accedere ad un elemento:

octave:17> D22 = D(2,2)
D22 =  5

Per vedere solo una colonna od una riga utilizziamo l'operatore ":"

octave:18> riga2 = D(2,:)
riga2 =
  4   5   6
octave:19> colonna3 = D(:,3)
colonna3 =
  3
  6
  9

Se vogliamo vedere, per esempio, due colonne scriviamo

octave:20> colonne1e3 = D(:,[1 3])
colonne1e3 =
  1   3
  4   6
  7   9

Se invece vogliamo estrarre una sottomatrice possiamo, per esempio, utilizzare la seguente espressione

octave:21> sottomatrice = D(2:end,1:2)
sottomatrice =
  4   5
  7   8