PDA

View Full Version : Prodotto di Matrici


StockBreak
28-06-2007, 21:38
Ciao a tutti, questo è il mio primo messaggio su questo forum :D !
Il mio problema è che devo realizzare in linguaggio C (va bene anche in pseudocodice) un prodotto di due matrici memorizzate per righe in vettori monodimensionali (non bidimensionali!). Qualcuno può aiutarmi?

Grazie :) !
Stock Break

wingman87
28-06-2007, 23:27
Qual è il problema?

StockBreak
28-06-2007, 23:54
Devo moltiplicare due matrici (es. m1 e m2) memorizzate per righe in due array monodimensionali ed inserire il prodotto in un terzo array monodimensionale; ho a disposizione i valori delle due matrici ed il numero di righe e di colonne di entrambe (insomma, qualunque dato, solo non riesco a trovare un algoritmo per calcolare il risultato, infatti faccio confusione con tutti i cicli for annidati). Grazie!

wingman87
29-06-2007, 00:16
Allora, premetto che non l'ho mai fatto xò leggendo qui (http://it.wikipedia.org/wiki/Moltiplicazione_di_matrici) vedo che:
-Il prodotto di due matrici AxB è una matrice C avente un numero di righe pari al numero di righe di A e un numero di colonne pari al numero di colonne di B.
-Il numero di colonne di A deve essere = al numero di righe di B.
-Per costruire la matrice C devi seguire un procedimento di questo tipo:
cA=nColonneA
rA=nRigheA
for y=1 to rA
for j=1 to cB{
eC=0
for i=1 to cA
eC=eC+A(y,i)*B(i,j)
C(y,j)=eC
}
Spero di non aver fatto errori, comunque dove c'è ad esempio C(y,j) y è la riga e j la colonna, visto che tu hai un array monodimensionale dovrai fare una cosa del tipo C(y*nrighe+j) con y e j che però partono da 0.

StockBreak
29-06-2007, 01:29
Allora, premetto che non l'ho mai fatto xò leggendo qui (http://it.wikipedia.org/wiki/Moltiplicazione_di_matrici) vedo che:
-Il prodotto di due matrici AxB è una matrice C avente un numero di righe pari al numero di righe di A e un numero di colonne pari al numero di colonne di B.
-Il numero di colonne di A deve essere = al numero di righe di B.
-Per costruire la matrice C devi seguire un procedimento di questo tipo:
cA=nColonneA
rA=nRigheA
for y=1 to rA
for j=1 to cB{
eC=0
for i=1 to cA
eC=eC+A(y,i)*B(i,j)
C(y,j)=eC
}
Spero di non aver fatto errori, comunque dove c'è ad esempio C(y,j) y è la riga e j la colonna, visto che tu hai un array monodimensionale dovrai fare una cosa del tipo C(y*nrighe+j) con y e j che però partono da 0.

Grazie mille :D !
Adesso lavorerò un pò su come implementare C(y,j) ma così ad occhio mi sembra che la tua soluzione vada proprio bene!