ml - Introduzione interattiva di MATLAB Vai all'indice del corso
Matrici di tipi particolari
Versione 0.8
2map.10 - Quadro di functions che danno matrici particolari
2map.12 - Matrici fornite da zeroes, ones ed eye
2map.15 - Matrici fornite dalla function pascal
2map.16 - Matrici fornite dalla function hadamard
2map.17 - Matrici fornite dalla function hankel
2map.18 - Matrici fornite dalla function hilb
2map.19 - Matrici fornite dalla function invhilb
2map.20 - Matrici fornite dalla function toeplitz
2map.21 - Matrici fornite dalla function vander
2map.22 - Matrici fornite dalla function wilkiinson
2map.25 - Alcune matrici fornite dalla function rand
2map.30 - Quadrati magici
2map.32 - Matrici fornite dalla function magic
2map.34 - Quadrato magico di Dürer
2map.40 - Permutazione delle colonne di una matrice
2map.50 - Matrici permutazione
torna all'indice del modulo - del corso
2map.10 - Quadro di functions che danno matrici particolari
MATLAB mette a disposizione varie functions che forniscono matrici di tipi determinati e delle varie dimensioni. In particolare presentiamo le seguenti:
eye(n) | matrice identita` del tipo n x n |
ones(nr,nc) | matrice con tutti gli componenti uguali ad 1 e del tipo nr x nc |
zeros(nr,nc) | matrice con tutti gli componenti uguali a 0 e del tipo nr x nc |
pascal(n) | matrice quadrata n x n il cui componente (i,j) e` il coefficiente binomiale i+j su i |
hadamard(n) | matrice di Hadamard quadrata n x n il cui componenti sono 1 e -1 e le cui colonne sono ortogonali |
hankel(vc) | matrice di Hankel quadrata avente il vettore vc nella prima colonna |
hankel(vc,vr) | matrice di Hankel avente il vettore vc nella prima colonna ed il vettore vr nella prima riga |
hilb(n) | matrice quadrata n x n il cui componente (i,j) e` 1/(i+j) |
invhilb(n) | matrice quadrata n x n inversa della matrice di Hilbert di ordine n |
toeplitz(v) | matrice di Toeplitz simmetrica con il vettore v nella prima colonna e nella prima riga |
toeplitz(vc,vr) | matrice di Toeplitz non simmetrica con il vettore vc nella prima colonna ed il vettore vr per la prima riga |
vander(v) | matrice di Vandermonde quadrata avente il vettore v nella penultima colonna |
magic(n) | un determinato quadrato magico n x n |
rand(nr,nc) | matrice nr x nc i cui componenti costituiscono sequenze pseudocasuali |
L'elenco completo può essere consultato ponendosi in stato di interrogazione dell'help con il comando helpdesk e poi concentrando la ricerca con i comandi function by subject ed elementary matrices.
Ricordiamo in particolare che MATLAB puo` fornire numerose matrici per il test di procedure di algebra lineare, matrici che, trattate senza le dovute attenzioni, possono portare a rilevanti errori di approssimazione.
torna all'indice del modulo - del corso
2map.12 - Matrici fornite da zeroes, ones ed eye
Verifica il funzionamento delle functions zeroes, ones ed eye.
>> zeros(2) ans = 0 0 0 0 >> zeros(3,1) ans = 0 0 0 >> ones(3) ans = 1 1 1 1 1 1 1 1 1 >> ones(2,5) ans = 1 1 1 1 1 1 1 1 1 1 >> eye(5) ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 >> eye(3,4) ans = 1 0 0 0 0 1 0 0 0 0 1 0
torna all'indice del modulo - del corso
2map.15 - Matrici fornite dalla function pascal
Verifica il funzionamento della function pascal(n), considera un quadrato magico e ricorda le operazioni di somma e prodotto di matrici.
>> A = pascal(4) A = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 >> B = magic(4) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> SumAB = A + B SumAB = 17 3 4 14 6 13 13 12 10 10 12 22 5 18 25 21 >> ProAB = A * B ProAB = 34 34 34 34 69 101 101 69 125 217 219 119 206 396 403 185
torna all'indice del modulo - del corso
2map.16 - Matrici fornite dalla function hadamard
Verifica il funzionamento della function hadamard(n).
>> hadamard(4) ans = 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 >> hadamard(8) ans = 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1
torna all'indice del modulo - del corso
2map.17 - Matrici fornite dalla function hankel
Verifica il funzionamento della function hankel(n).
>> >> hankel([2:2:10]) ans = 2 4 6 8 10 4 6 8 10 0 6 8 10 0 0 8 10 0 0 0 10 0 0 0 0 >> hankel([1:3],[7:10]) Warning: Column wins anti-diagonal conflict. > In C:\MATLAB_SR11\toolbox\matlab\elmat\hankel.m at line 27 ans = 1 2 3 8 2 3 8 9 3 8 9 10
torna all'indice del modulo - del corso
2map.18 - Matrici fornite dalla function hilb
Verifica il funzionamento della function hilb(n).
>> hilb(3) ans = 1 1/2 1/3 1/2 1/3 1/4 1/3 1/4 1/5 >> hilb(5) ans = 1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8 1/5 1/6 1/7 1/8 1/9
torna all'indice del modulo - del corso
2map.19 - Matrici fornite dalla function invhilb
Verifica il funzionamento della function invhilb(n).
>> format rat >> h = hilb(4) h = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/4 1/5 1/6 1/7 >> ih = invhilb(4) ih = 16 -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200 -140 1680 -4200 2800 >> h*ih ans = 1 0 0 0 0 1 0 0 0 0 1 * 0 0 0 1 >> ih*h ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 * 1
torna all'indice del modulo - del corso
2map.20 - Matrici fornite dalla function toeplitz
Verifica il funzionamento della function toeplitz(n).
>> toeplitz([1 1.5 2 2.5 3]) ans = 1.0000 1.5000 2.0000 2.5000 3.0000 1.5000 1.0000 1.5000 2.0000 2.5000 2.0000 1.5000 1.0000 1.5000 2.0000 2.5000 2.0000 1.5000 1.0000 1.5000 3.0000 2.5000 2.0000 1.5000 1.0000 >> toeplitz([1:5],[1.5:0.5:5.5]) Warning: Column wins diagonal conflict. > In C:\MATLAB_SR11\toolbox\matlab\elmat\toeplitz.m at line 18 ans = 1.0000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 2.0000 1.0000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 3.0000 2.0000 1.0000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 4.0000 3.0000 2.0000 1.0000 2.0000 2.5000 3.0000 3.5000 4.0000 5.0000 4.0000 3.0000 2.0000 1.0000 2.0000 2.5000 3.0000 3.5000
torna all'indice del modulo - del corso
2map.21 - Matrici fornite dalla function vander
Verifica il funzionamento della function vander(n).
>> hilb(3) ans = 1 1/2 1/3 1/2 1/3 1/4 1/3 1/4 1/5 >> hilb(5) ans = 1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8 1/5 1/6 1/7 1/8 1/9
torna all'indice del modulo - del corso
2map.22 - Matrici fornite dalla function wilkinson
Verifica il funzionamento della function wilkinson(n).
>> wilkinson(7) ans = 3 1 0 0 0 0 0 1 2 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 2 1 0 0 0 0 0 1 3
torna all'indice del modulo - del corso
2map.25 - Semplici matrici fornite dalla function rand
Verifica il funzionamento della function rand(n).
>> rand(5,4) ans = 0.0579 0.2028 0.0153 0.4186 0.3529 0.1987 0.7468 0.8462 0.8132 0.6038 0.4451 0.5252 0.0099 0.2722 0.9318 0.2026 0.1389 0.1988 0.4660 0.6721 >> r=rand(4,4) r = 0.8381 0.8318 0.3046 0.3028 0.0196 0.5028 0.1897 0.5417 0.6813 0.7095 0.1934 0.1509 0.3795 0.4289 0.6822 0.6979 >> fix(100*r) ans = 83 83 30 30 1 50 18 54 68 70 19 15 37 42 68 69 >> round(100*r) ans = 84 83 30 30 2 50 19 54 68 71 19 15 38 43 68 70
torna all'indice del modulo - del corso
I quadrati magici sono matrici quadrate n x n nelle cui caselle compaiono senza ripetizioni gli interi positivi compresi tra 1 ed n2 disposti in modo tale che le somme delle componenti delle diverse righe e le somme delle componenti delle diverse colonne siano tutte coincidenti. Se indichiamo con Sn il valore di queste somme, dato che la somma degli interi tra 1 e n2 e` uguale a n2(n2-1)/2, deve essere nSn = n2(n2-1)/2 e quindi Sn = n(n2+1)/2). Nei quadrati magici piu` pregevoli hanno questo valore anche le somme degli componenti delle due diagonali della matrice.
I quadrati magici sono quindi matrici molto particolari, ricche di simmetrie. Esse sono state studiate fin dall'antichita`, sia come fenomeni aritmetici interessanti, sia in relazione a loro supposte proprieta` magiche. Attualmente sono studiati anche in relazione alla determinazione di procedimenti utilizabili in attivita` di crittografia.
torna all'indice del modulo - del corso
2map.32 - Matrici fornite dalla function magic
MATLAB mette a disposizione la function magic(n) che fornisce un quadrato magico di tipo n x n per tutti gli interi n maggiori o uguali a 2. Verificarne il funzionamento.
>> magic(2) ans = 1 3 4 2 >> Mgc4 = magic(4) Mgc4 = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> magic(6) ans = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 >> magic(8) ans = 64 2 3 61 60 6 7 57 9 55 54 12 13 51 50 16 17 47 46 20 21 43 42 24 40 26 27 37 36 30 31 33 32 34 35 29 28 38 39 25 41 23 22 44 45 19 18 48 49 15 14 52 53 11 10 56 8 58 59 5 4 62 63 1
torna all'indice del modulo - del corso
2map.34 - Quadrato magico di Dürer
Introdurre il quadrato magico che compare nella incisione di Albrecht Dürer del 1513 intitolata Melencholia e calcolare le somme delle sue colonne, delle sue righe e delle sue diagonali.
>> Drr=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] Drr = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 >> sum(Drr) ans = 34 34 34 34 >> sum(Drr')' ans = 34 34 34 34 >> diag(Drr) ans = 16 10 7 1 >> sum(diag(Drr)) ans = 34
torna all'indice del modulo - del corso
2map.40 - Permutazione delle colonne di una matrice
Il quadrato magico di ordine 4 fornito dalla function magic differisce da quello di Dürer solo per lo scambio della seconda e della terza colonna. Quindi si puo` ottenere un quadrato magico dall'altro applicandogli la operazione di permutazione delle colonne espressa dal vettore [1 3 2 4].
>> Mgc4P = Mgc4(:,[1 3 2 4]) Mgc4P = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
Sottraendo le due matrici Drr e Mgc4P si deve ottenere la matrice con tutti i componenti nulli.
>> Drr - Mgc4P ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Osserviamo che verificare che una matrice sia nulla e` piu` agevole che verificare che due matrici coincidono. Quindi un procedimento come il precedente puo` effettivamente risultare utile per verificare che due matrici di grandi dimensioni sono riconducibili l'una all'altra mediante l'azione di date trasformazioni.
torna all'indice del modulo - del corso
2map.50 - Matrici permutazione
Si dice matrice permutazione ogni matrice quadrata che in ogni sua linea, riga o colonna, presenta uno ed un solo 1, mentre tutti le altre componenti sono nulle.
Sottoponendo ad una permutazione le sole righe o le sole colonne della matrice identita` n x n si ottiene una matrice permutazione.
>> I = eye(5); >> I([2 5 1 4 3],:) ans = 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0
Servendosi di una permutazione si possono permutare anche le righe di una matrice. Servendosi di due permutazioni si possono permutare sia le colonne che le righe delle matrici.
torna all'indice del modulo - del corso