Costruzione Matrici Clicca QUI per vedere il messaggio nel forum |
darkshadow |
Ciao,
qualcuno mi sa spiegare come (i comandi Matlab) per costruire le matrici con determinate caratteristiche; mi spiego:
per esesmpio se volessi costruire una matrice la cui diagonale sia tutta a 2, la sopradiagonale = -1 e la sottodiagonale = 1 ed il resto tutto a zero
Come faresti per costruirla?
Grazie.
Ds |
enricohenry |
Ciao, scusa il ritardo nella risposta ma non mi collego da un po'.
Per costruire una matrice come hai descritto coi comandi Matlab, fai cosi':
A=2*eye(n); % Crea una matr identita' di dim nxn con diagonale princ = 2
A=A-diag(ones(n-1,1),1); % Aggiunge ad A la prima sopradiag = -1
A=A+diag(ones(n-1,1),-1); % Aggiunge ad A la prima sottodiag = 1
Naturalmente prima dai un valore ad n, es:
n=5;
Ciao |
asterix07 |
Perchè nel primo caso si fa la sottrazione
A=A-diag(ones(n-1,1),1); % Aggiunge ad A la prima sopradiag = -1
e nel secondo la somma
A=A+diag(ones(n-1,1),-1); % Aggiunge ad A la prima sottodiag = 1
?? |
enricohenry |
Il comando e' composto dai comandi diag e ones.
Il comando ones(n-1,1) costruisce una matrice di soli 1 (ones) di dimensione n-1 per le righe e 1 per le colonne.
Devi mettere n-1 poiche' la prima sottodiagonale e sopradiagonale hanno un elemento in meno rispetto alla diagonale principale.
Cioe' se volevi costruire un vettore di soli 1 da mettere nella terza sotto/sopradiagonale dovevi dare ones(n-3,1).
Il comando ones(4,4) ti costruisce una matrice quadrata di ordine 4 di tutti 1.
Il comando diag, applicato al vettore che ti sei appena creato, mette in forma di matrice diagonale tale vettore.
Il secondo termine dopo la virgola (nel ns caso nel primo comando e' 1, nel secondo e' -1) identifica in quale sopra o sotto diagonale inserire tale vettore. Se il termine e' negativo si tratta di sottodiagonale, se positivo si tratta di sopra diagonale.
Infine il segno posto davanti al comando composito (+diag o -diag) serve per ottenere il segno positivo o negativo al valore da inserire in quella sopra/sotto diagonale.
Immaginiamo che tu dovessi mettere -2 alla terza sopradiagonale, allora il comando doveva essere:
n=5;
A=2*eye(n);
A=A-2*diag(ones(n-3,1),3);
Ciao. |
|
|
|