Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Calcolo numerico
 
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.

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate