Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    25

    Moltiplicazione di due matrici

    Ho un problema: come posso Scrivere un programma (in qualsiasi linguaggio) che sia in grado di Moltiplicare due matrici(in modo ottimo).
    :master:

  2. #2
    codice:
    static int [] Prodotto(int m[][],int n[][]){
    	int p[]=new int [n.length];
    	for(int i=0;i<m.length;i++)
    		for(int j=0;j<m[i].length;j++){
    			for(int z=0;z<n.length;z++)
    				p[z]+=n[i][j]*m[i][j];
    			}
    
    
    	return p;
    	}
    Questo è il metodo che fa il prodotto.
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Il risultato del prodotto tra due matrici e' ancora una matrice.
    Inoltre per fare il prodotto tra due matrici e' necessario che il numero delle colonne della matrice A sia uguale al numero delle righe della matrice B.
    Ad esempio:
    Matrice A formata da m righe e n colonne
    Matrice B formata da n righe e m colonne
    Il risultato sara':
    Matrice C (quadrata) formata da m righe e m colonne

    codice:
    int m = A.lenght;//righe di A
    int n = B.lenght;//righe di B
    C[][] = new int[m][m];
    //inizializzare C a 0
    for(int i=0; i<m; i++)
       for(int j=0; j<m; j++)
          for(int k=0; k<n; k++)
             C[i][j]+=A[i][k] * B[k][j];
    Ultima considerazione: il prodotto matriciale non e' commutativo, per cui A*B e' diverso da B*A
    Ciao,
    Lorenzo

  4. #4
    Originariamente inviato da Zero-2
    codice:
    static int [] Prodotto(int m[][],int n[][]){
    	int p[]=new int [n.length];
    	for(int i=0;i<m.length;i++)
    		for(int j=0;j<m[i].length;j++){
    			for(int z=0;z<n.length;z++)
    				p[z]+=n[i][j]*m[i][j];
    			}
    
    
    	return p;
    	}
    Questo è il metodo che fa il prodotto.
    Ma che stronzata ho scritto :master: :master:
    Ho letto prodotto e l'ho incollato senza nemmeno controllare

    Scusa RmiMik

    Ha pienamente ragione lelefante
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  5. #5
    Solo una correzione.. Il prodotto e` valido per matrici non solo del tipo:

    Mmn * Mnm = Mmm

    Ma in generale:

    Mmn * Mnp = Mmp

    Nulla di che, di sicuro il dettaglio dimenticato e` dovuto ad una insignificante distrazione.

    Ciao.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Solo una correzione.. Il prodotto e` valido per matrici non solo del tipo:

    Mmn * Mnm = Mmm

    Ma in generale:

    Mmn * Mnp = Mmp

    Nulla di che, di sicuro il dettaglio dimenticato e` dovuto ad una insignificante distrazione.
    Hai ragione tu, righe di A e colonne di B non devono essere necessariamente uguali...l'errore e' dovuto al fatto che Geometria non era tra le mie materie preferite

    Correzione codice:
    codice:
    int m = A.length;//righe di A
    int n = B.length;//righe di B
    int p = B[0].length; //colonne di B
    C[][] = new int[m][p];
    //inizializzare C a 0
    for(int i=0; i<m; i++)
       for(int j=0; j<p; j++)
          for(int k=0; k<n; k++)
             C[i][j]+=A[i][k] * B[k][j];
    Ora dovrebbe essee giusto...grazie per la correzione
    Ciao,
    Lorenzo

  7. #7
    Hm, non e` malaccio .. ma devo farla dopodomani!

  8. #8
    A proposito di matrici...
    Sepete dirmi qualcosa su questo?

    http://forum.html.it/forum/showthrea...hreadid=376949
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Per una matrice 2D potrei anche mettermici, ma per una 3D non saprei proprio. A dire il vero non so nemmeno come e' definito il determinante di una matrice 2D.
    Ciao,
    Lorenzo

  10. #10
    Per le 2D e` facile. Lo feci ere fa. Il metodo funziona pero` e` una ciofeca e di cattivo esempio , quindi se vuoi te lo posto in privato.

    La definizione viene dal 1° teorema di Laplace. Il determinante e` definito _solo_ per matrici quadrate.

    In pratica si seleziona una riga/colonna (a piacere), e si sommano i prodotti degli elementi di tale riga/colonna per i rispettivi complementi algebrici. Il complemento algebrico, per chi non lo sapesse, e` il determinante della sottomatrice ottenuta eliminando la riga i-esima e la colonna j-esima moltiplicato per (-1) alla i+j. Naturalmente e` ricorsivo, e si arriva a calcolare il determinante di una matrice 1x1, che e` l`elemento stesso.

    Io sul fatto delle matrici 3D indugio ancora, anche perche` una matrice e` cmq una tabella con righe e colonne. Non ho mai sentito parlare di "dimensione" di una matrice. In realta`, parlare di "matrici 2D" e` una cosa scorretta, si dovrebbe parlare di "vettori 2D", ed un vettore 2D e` una matrice. Un vettore 3D, invece, e supposto che esista come concetto quantomeno vicino al calcolo matriciale, che cos`e`?

    Matematici, A NOI!

    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.