UniprJRC / DSconMATLAB

Il sito che contiene materiale aggiuntivo e tutti i files di codice MATLAB degli esercizi e delle figure del libro.
18 stars 6 forks source link

Creazione di matrici #328

Open Gioele090101 opened 10 months ago

Gioele090101 commented 10 months ago

Buongiorno professore, Le scrivo per avere un chiarimento circa l'argomento delle matrici su MATLAB. In particolare, quando si tratta di ricreare una matrice tramite moltiplicazione matriciale. Quello che non capisco è il metodo per capire quali numeri usare per ricreare una matrice. Se magari esiste una formula particolare o in base a dei numeri scritti nella matrice da ricreare.

UniprJRC commented 10 months ago

Le colonne j =2, …, k sono sempre un multiplo della colonna 1.

Ad esempio, se l'obiettivo è trovare image

Definisco il vettore che contiene la prima colonna image.

A questo punto la seconda colonna è uguale a Colonna1 2 la terza colonna è uguale a Colonna1 5

In termini matriciali

Colonna1 *[ 1 2 5 ] , produce le colonne 1, 2, e 3

image

Con una sola riga di codice

image

Si noti che (2:2:10)' è un vettore colonna di lunghezza 5 (matrice di dimensione 5x1) [1 2 5] è un vettore riga di lunghezza 3 (matrice di dimensione 1x3)

La moltiplicazione di 5x1 per 1x3 produce la matrice 5x3 richiesta.

Vediamo ora un altro esempio (Esercizio 2.17 del libro).

La prima colonna si ottiene facilmente in quanto è la sequenza (3:3:15)'.

image

TerzaColonna=PrimaColonna+12

In termini matriciali PrimaColonna+(0:6:36)

produce la matrice richiesta

image

Ovviamente dato che a+b = a+k-k+b anche

image produce il risultato richiesto.

Fatemi sapere se sono stato chiaro

Gioele090101 commented 10 months ago

Avrei un dubbio. Nell'esercizio 2.17 del libro, ho capito che bisogna sempre prendere la prima colonna per iniziare, ma non capisco da cosa derivi la sequenza (0:6:36).

UniprJRC commented 10 months ago

La prima colonna si ottiene aggiungendo 0 alla variabile denominata PrimaColonna La seconda colonna si ottiene aggiungendo 6 alla variabile denominata PrimaColonna La terza colonna si ottiene aggiungendo 12 alla variabile denominata PrimaColonna ... La settima colonna si ottiene aggiungendo 36 alla variabile denominata PrimaColonna

In termini matriciali PrimaColonna+(0:6:36) ossia PrimaColonna+[0 6 12 18 24 30 36]

crea la matrice desiderata.

Gioele090101 commented 10 months ago

Questo esercizio ora mi è chiaro, ma avrei un ulteriore dubbio su un'altro esercizio, il numero 2.2 del libro, da svolgere. Ho guardato la soluzione, ma non capisco perchè in questo caso il primo termine non sia (6:3:24)', ma è (2:8)'.

UniprJRC commented 10 months ago

Assumo che si riferisca all'Esercizio HW2.2 e non come scrive lei al "numero 2.2". Altra cosa: non capisco cosa lei intenda per primo termine. Qua abbiamo due vettori una colonna (che premoltiplica) e l'altro riga (che postmoltiplica).

La prima colonna

6 9 12 15 18 21 24

si può ottenere come

(6:3:24)' ossia come sequenza (6 9 12 ..., 24) trasposta

oppure come

(2:8)'*3 (2 3 4 .... 8)'*3

La soluzione proposta dal testo è

X=(2:8)'*(3:10);

ossia la prima colonna di X si ottiene come (2:8)'3 la seconda colonna di X si ottiene come (2:8)'4 la terza colonna di X si ottiene come (2:8)'*5 .....

Mi faccia sapere se ora ha capito

In generale ab =a(k/k)*b con k diverso da 0

Quindi se preferisce può risolvere l'esercizio (da pivello) come segue

X=(6:3:24)'*(3:10)/3;

ossia la prima colonna di X si ottiene come (6:3:24)'3/3 la seconda colonna di X si ottiene come (6:3:24)'4/3 la terza colonna di X si ottiene come (6:3:24)'*5/3

Gioele090101 commented 10 months ago

Perfetto. Adesso mi è più chiaro. La ringrazio per le delucidazioni