[Prodotto righe per colonne]
Come faccio un'applicazione in java che fa il prodotto righe per colonne fra matrici ? Io finora ho scritto questo...
class ProdottoMatrici { public static void main(String[] args) { int[][] a,b; int i,j,l,z,f,d,m,n; System.out.println("Inserire l'ordine della prima matrice"); m = Lettore.in.leggiInt(); n = Lettore.in.leggiInt(); a = new int[m][n]; for (i=0; i<m; i++) { for(j=0; j<n; j++) a[i][j] = Lettore.in.leggiInt(); } System.out.println(); System.out.println("Inserire l'ordine della seconda matrice"); f = Lettore.in.leggiInt(); d = Lettore.in.leggiInt(); System.out.println(); b = new int[f][d]; for (l=0; l<f; l++) { for(z=0; z<d; z++) a[l][z] = Lettore.in.leggiInt(); } nuovo(a,b,m,d); public static int[][] nuovo(int[][] h, int[][] l, int w, int p) { int[][] c; int i,j; c = new int[w][p]; for (i=0; i<h.length; i++) prodotto(h[i], l) public static int[][] prodotto(int[] a, int[][] b) { int i; for (i=0; i<a.length; i++) a[i]*b[i]
Risposte
Non capisco più di tanto cosa tu stia cercando di fare. prodotto riceve in ingresso un vettore (suppongo riga) a e una matrice b e restituisce una matrice. Ma se fai il prodotto tra un vettore riga e una matrice il risultato sarà un vettore riga e non una matrice.. Inoltre non sembri essere tu stesso sicuro su come utilizzare questo metodo.
In realtà per implementare il prodotto riga per colonna è sufficiente seguire la definizione in cui la sommatoria è sostituita da un ciclo. La struttura di base sarà quindi qualcosa tipo:
Ovviamente devi aggiungere dei test per verificare se le dimensioni sono concordi (e inserire la formula corretta dopo il += ).
In realtà per implementare il prodotto riga per colonna è sufficiente seguire la definizione in cui la sommatoria è sostituita da un ciclo. La struttura di base sarà quindi qualcosa tipo:
for (i = 0; i < w; ++i) { for (j = 0; j < p; ++i) { c[i][j] = 0.0; for (k = 0; k < h[0].length; ++k) { c[i][j] += ...; } } }
Ovviamente devi aggiungere dei test per verificare se le dimensioni sono concordi (e inserire la formula corretta dopo il += ).
ti ringrazio!
"apatriarca":
Non capisco più di tanto cosa tu stia cercando di fare. prodotto riceve in ingresso un vettore (suppongo riga) a e una matrice b e restituisce una matrice. Ma se fai il prodotto tra un vettore riga e una matrice il risultato sarà un vettore riga e non una matrice.. Inoltre non sembri essere tu stesso sicuro su come utilizzare questo metodo.
In realtà per implementare il prodotto riga per colonna è sufficiente seguire la definizione in cui la sommatoria è sostituita da un ciclo. La struttura di base sarà quindi qualcosa tipo:
for (i = 0; i < w; ++i) { for (j = 0; j < p; ++i) { c[i][j] = 0.0; for (k = 0; k < h[0].length; ++k) { c[i][j] += ...; } } }
Ovviamente devi aggiungere dei test per verificare se le dimensioni sono concordi (e inserire la formula corretta dopo il += ).
public static int[][] nuovo(int[][] a, int[][] b, int c, int d) { int[][] x; x = new int[c][d]; return x }
Ho fatto questo metodo affinchè il nuovo array di array abbia il numero di righe del primo array di array e il numero delle colonne del secondo array di array.. .Però ora non riesco a moltiplicare la prima riga per la prima colonna...