La matrice di Durer in Matlab

MATLAB

La matrice di Durer è quello che in gergo si chiama un quadrato magico. Un quadrato magico è uno schieramento di numeri interi distinti in una tabella quadrata tale che la somma dei numeri presenti in ogni riga, in ogni colonna e in entrambe le diagonali dia sempre lo stesso numero; tale intero è denominato la costante di magia o costante magica o somma magica del quadrato.

Inseriamo la matrice di Durer:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

Verifichiamo tutto quello appena detto sui quadrati magici, usando MATLAB. Il primo tentativo è il seguente:

sum(A)

MATLAB risponde con:

ans = 34 34 34 34

Quando non si specifica una variabile di output, MATLAB usa la variabile ans, per immagazzinare i risultati di un calcolo. Si è in questo modo calcolato un vettore fila che contiene certamente le somme delle colonne di A; ogni colonna ha la stessa somma, la somma magica, 34.

Cosa si può dire sulle somme delle righe? MATLAB ha una preferenza per lavorare con le colonne di una matrice, cosìı il modo più facile per ottenere le somme delle righe è quello di trasporre la matrice. Trasponiamo allora la matrice e facciamone la somma.

L’operazione di trasposizione si ottine aggiungendo un apostrofo alla matrice da trasporre, ad esempio:

A’

determina il risultato seguente:

ans = 16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1

e

sum(A ‘) ‘

produce un vettore colonna che contiene le somme delle righe:

ans = 34 34 34 34

durer

La somma degli elementi della digonale principale è ottenuta facilmente con l’aiuto della funzione diag che estrae solo gli elementi dellla diagonale.

diag(A)

produce:

ans = 16 10 7 1

e

sum(diag(A))

produce:

ans = 34

L’altra diagonale, l’antidiagonale così chiamata non è così importante e MATLAB non ha una funzione immediata per calcolarla. Ma una funzione originariamente creata per il suo uso in grafica, fliplr riporta una matrice da sinistra a destra.

sum(diag(fliplr(A)))
ans = 34

Si è così verificato che la matrice di Durer è davvero una magic square e, nel processo, si sono utilizzate operazioni sulle matrici di MATLAB.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Leave a Reply

Your email address will not be published. Required fields are marked *