mnozenie macierzy prostokątnych

0

Mam problem z odpowiednia metoda mnożenia macierzy prostokatnych nXm i mXp.

mnożenie np macierzy 2 na 3 z macierza 3 na 2.

przy macierzach kwadratowych wykłada to tak:

for(i=0;i<n;i++)
{
 for(j=0;j<n;j++)
  {
   for(a=0;a<n;a++)
     {
     tab3[i][j]=tab1[i][a]*tab2[a][j]
     }
  }
}

Jednak jak zrobić gdy nie są to macierze kwadratowe ?

0

moze ci sie przyda:

//mnozenie macierzy
import java.util.*;

class Matrix {
    int kolumn, wierszy;
    int[][] tab;
    Matrix(int wierszy, int kolumn) {
        this.kolumn  = kolumn;
        this.wierszy = wierszy;
        tab = new int[wierszy][kolumn];
    }
    void uzupelnij() {
        Random zm = new Random(1);
        for (int i = 0; i < this.wierszy; i++) {
            for (int j = 0; j < this.kolumn; j++) {
                tab[i][j] = zm.nextInt(10);
            }
        }
    }
    void wypisz() {
        for (int i = 0; i < this.wierszy; i++) {
            for (int j = 0; j < this.kolumn; j++) {
                System.out.print(tab[i][j] + " ");
            }
            System.out.println();
        }       
    }
//--------------------------
    static void pomnoz(Matrix m1, Matrix m2){
        if (m1.kolumn != m2.wierszy) System.out.println("Operacja niemozliwa!!!"); 
        else {
            Matrix m3 = new Matrix(m1.wierszy, m2.kolumn);
            for (int i = 0; i < m1.wierszy; i++){
                for (int j = 0; j < m2.kolumn; j++){
                    for (int k = 0; k < m1.kolumn; k++){
                        m3.tab[i][j] += m1.tab[i][k] * m2.tab[k][j];
                    }
                }
            }
            m3.wypisz();
        }
    }
    public static void main(String arg[]){
        Matrix m1 = new Matrix(3, 3);
        m1.uzupelnij();
        m1.wypisz();
        System.out.println();
        Matrix m2 = new Matrix(3, 3);
        m2.uzupelnij();
        m2.wypisz();  
        System.out.println();
        Matrix.pomnoz(m1, m2);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1