Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - prodotto tra matrici
Forum - Algoritmi - prodotto tra matrici

Avatar
piccolasara (Normal User)
Rookie


Messaggi: 23
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 13:57
Lunedì, 26/01/2009
ciao a tutti.!! deve programmare una funzione che mi dia il prodotto tra 2 matrici...ho provato così ma mi sa che ho sbagliato qualcosa...qualcuno può darmi una mano?

void prodotto(int l, int m, int M[][MAS], int V[][MAS], int K[][MAS]){
    int x,y;
    for(x=0;x<l;x++){
        for(y=0;y<m;y++){
            K[x][y]=M[x][y]*V[x][y];
        }
    }
    return;
}

PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 15:31
Lunedì, 26/01/2009
in matematica il prodotto tra matrici non è molto intuitivo... devi chiarire cosa intendi per prodotto:
date due matrici A e b quadrate n*n, il prodotto nn è semplicemente moltiplicare l'elemento di posizione A[ i][j] per il corrispettivo B[ i][j].. questo tipo di prodotto ha un nome particolare che non ricordo! di solito con il termine PRODOTTO TRA MATRICI si intende il prodotto RIGHE PER COLONNE, che è un po' diverso.. cerca "operazioni su matrici" o "matrici" su wikipedia e troverai un sacco di operatori... così puoi essere sicura del tipo di prodotto che vuoi implementare, prima difarlo!
ciao

Ultima modifica effettuata da eddiewrc il 26/01/2009 alle 15:31
PM Quote
Avatar
piccolasara (Normal User)
Rookie


Messaggi: 23
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 16:53
Lunedì, 26/01/2009
io voglio implementare la moltiplicazione della matrice A di ordine p x q con la matrice B di ordine r x s dove conviene scrivere (p x q)(r x s)
Si hanno così quattro numeri: 2 esterni (p ed s) e 2 interni (q e r). E' possibile effettuare il prodotto A B se e solo se gli interni coincidono cioè q = r.
In tal caso la matrice C = A B ha per ordine quello individuato dai due numeri esterni presi nell'ordine, cioè p x s.

PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 17:08
Lunedì, 26/01/2009
allora, si tratta proprio di un prodotto righe per colonne... cerca su wikipedia per avere la conferma.. nn è difficle da implementare, come algoritmo

PM Quote
Avatar
piccolasara (Normal User)
Rookie


Messaggi: 23
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 17:10
Lunedì, 26/01/2009
peccato che in quesot momento wikipedia è impazzito!!!!! cè solos critto errore di parser...

PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 17:38
Lunedì, 26/01/2009

PM Quote
Avatar
K.Mitnick (Member)
Expert


Messaggi: 278
Iscritto: 24/03/2007

Segnala al moderatore
Postato alle 18:48
Sabato, 31/01/2009
Calcolare il il prodotto di due matrici è semplice...

Prendiamo come esempio A * B = C...

Prima di tutto bisogna controllare che le due matrici siano conformabili, ovvero controllare che il numero di colonne della prima matrice sia uguale al numero di righe della seconda matrice...

C[i,k] si calcola sommando i prodotti dei termini della riga i-esima di A per gli elementi corrispondenti della colonna k-esima di B...

Un esempio pratico...

A = [1 -2  0]
    [2  1 -1]
    [0  2 -2]

B = [-1 2]
    [0 -3]
    [0  4]

Le due matrici sono conformabili quindi possiamo procedere...

Dobbiamo prender la prima riga della matrice A ovvero [1 -2  0] e moltiplicarla con la prima colonna di B [-1 0 0]...

La sommatoria di questo prodotto sarà C11...

C11 = 1 * (-1) + (-2) * 0 + 0 * 0 = -1

Dobbiamo prender la prima riga della matrice A ovvero [1 -2  0] e moltiplicarla con la seconda colonna di B [2 -3 4]...

La sommatoria di questo prodotto sarà C12...
C12 = 1 * 2 + (-2) * (-3) + 0 * 4 = 8

E così tutti gli altri

C21 = 2 * (2) + 1 * (-3) + (-1) * 4 = -3
C22 = 2 * 2 + 1 * (-3) + (-1) * 4 = -4
C31 = 0 * (-1) + 2 * 0 - 2 * 0 = 0
C32 = 0 * 2 + 2 * (-3) - 2 * 4 = -14

C[n,k] = riga n 1^ matrice * colonna k 2^ matrice

Quindi

C = [-1  8]
    [-2 -3]
    [0 -14]

L'esempio mi sembra abbastanza chiaro, altrimenti domanda pure... ;)

Ultima modifica effettuata da K.Mitnick il 31/01/2009 alle 19:23
PM Quote
Avatar
piccolasara (Normal User)
Rookie


Messaggi: 23
Iscritto: 16/01/2009

Segnala al moderatore
Postato alle 13:14
Domenica, 01/02/2009
sei stato perfetto!!!
grazie mille!!

PM Quote