
La sostituzione delle diagonali in una matrice Matlab
In questa lezione ti spiego come fare a sostituire gli elementi in una diagonale della matrice usando Matlab
Cosa sono le diagonali della matrice? Sono gli elementi che si trovano trasversalmente sulle diagonali che partono in alto a destra e terminano in basso a sinistra o viceversa. Ad esempio, la diagonale principale della matrice M è composta dagli elementi 1, 5, 9. $$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$
Ti faccio un esempio pratico.
Crea una matrice quadrata 3x3 con tre righe e tre colonne
>> M=[1 2 3 ; 4 5 6 ; 7 8 9]
M =
1 2 3
4 5 6
7 8 9
La diagonale principale della matrice è formata dagli elementi 1, 5, 9.
$$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$
Digita spdiags([-1;-5;-9],0,M) sulla riga di comando di Matlab per sostituire gli elementi sulla diagonale principale con i numeri -1, -2, -3
>> spdiags([-1;-5;-9],0,M)
ans =
-1 2 3
4 -5 6
7 8 -9
- Il primo parametro del comando è un vettore colonna [-1;-5;-9] contenente i nuovi elementi da scrivere sulla diagonale della matrice.
- Il secondo parametro (0) è l'indice della diagonale dove inserirli. La diagonale principale ha indice 0.
Nota. L'indice 1 è la diagonale che si trova sopra la diagonale principale mentre l'indice -1 è la diagonale che si trova sotto la diagonale principale. Con la stessa logica 2 e -2 sono le diagonali sopra e sotto le diagonali 1 e -1.
- Il terzo parametro M è il nome della variabile dove hai registrato la matrice.
Questo comando modifica la matrice quadrata inserendo i nuovi elementi sulla diagonale principale.
$$ M = \begin{pmatrix} \color{red}{-1} & 2 & 3 \\ 4 & \color{red}{-5} & 6 \\ 7 & 8 & \color{red}{-9} \end{pmatrix} $$
Ora digita il comando spdiags([-1;-5;-9],1,M) per modificare gli elementi sulla diagonale che si trova sopra la diagonale principale.
>> spdiags([-1;-5;-9],1,M)
ans =
1 -5 3
4 5 -9
7 8 9
Quest'ultimo comando sostituisce gli elementi sopra la diagonale principale della matrice.
$$ M = \begin{pmatrix} 1 & \color{red}{-5} & 3 \\ 4 & 5 & \color{red}{-9} \\ 7 & 8 & 9 \end{pmatrix} $$
Nota. Il primo elemento -1 del vettore colonna [-1;-5;-9] non viene scritto nella nuova matrice perché si trova fuori la matrice. Pertanto, solo -5 e -9 appaiono nella matrice.

E per sostituire gli elementi sulla diagonale secondaria?
La diagonale secondaria parte in alto a destra e termina in basso a sinistra.
$$ M = \begin{pmatrix} 1 & 2 & \color{red}{3} \\ 4 & \color{red}{5} & 6 \\ \color{red}{7} & 8 & 9 \end{pmatrix} $$
Per sostituire gli elementi che si trovano sulla diagonale secondaria devi usare le funzioni spdiags() e fliplr()
>> fliplr(spdiags([-1;-5;-9],0,fliplr(M)))
ans =
1 2 -1
4 -5 6
-9 8 9
La funzione fliplr() capovolge la matrice da sinistra a destra.
$$ \text{ fliplr }(M) = \begin{pmatrix} 3 & 2 & 1 \\ 6 & 5 & 4 \\ 9 & 8 & 7 \end{pmatrix} $$
La funzione spdiags() sostituisce i valori sulla diagonale principale della matrice capovolta.
$$ \text{ fliplr }(M) = \begin{pmatrix} \color{red}{-1} & 2 & 1 \\ 6 & \color{red}{-5} & 4 \\ 9 & 8 & \color{red}{-9} \end{pmatrix} $$
Pertanto, sulla matrice non capovolta M hai sostituito gli elementi della diagonale secondaria
$$ M = \begin{pmatrix} 1 & 2 & \color{red}{-1} \\ 4 & \color{red}{-5} & 6 \\ \color{red}{-9} & 8 & 9 \end{pmatrix} $$
In questo modo puoi sostituire anche i valori sulle diagonali secondarie della matrice.
Nota. Per modificare le diagonali sopra e sotto la diagonale secondaria modifica l'indice della funzione spdiags() a 1 o -1. Ad esempio, per modificare gli elementi sopra la diagonale secondaria digita il comando
fliplr(spdiags([-1;-5;-9],1,fliplr(M))) $$ M = \begin{pmatrix} 1 & \color{red}{-5} & 3 \\ \color{red}{-9} & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} $$ Viceversa, per modificare gli elementi sotto la diagonale secondaria digita il comando
fliplr(spdiags([-1;-5;-9],-1,fliplr(M))) $$ M = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & \color{red}{-1} \\ 7 & \color{red}{-5} & 9 \end{pmatrix} $$

