1. 程式人生 > >Java實現矩陣相乘

Java實現矩陣相乘

首先我們要知道二維陣列就是類似於我們線性代數中的矩陣,矩陣的乘法運算大概是這樣

滿足條件,第一個矩陣的列數等於第二個矩陣的行數
 由兩個矩陣相乘的矩陣的每一個元素是由第一個矩陣每一行元素分別乘上第二個矩陣的列
 對應的元素在相加
 當矩陣A的列數等於矩陣B的行數時,A與B可以相乘。
矩陣C的行數等於矩陣A的行數,C的列數等於B的列數。

乘積C的第m行第n列的元素等於矩陣A的第m行的元素與矩陣B的第n列對應元素乘積之和。

我們多加一個迴圈控制矩陣相乘後所得的矩陣的元素值就可以了

總體實現程式碼:

public class JuZhenChengFa {


public static void main(String[] args) {
final int N = 5;
int a[][] = new int[N][N];
        int b[][] = new int[N][N];
        int c[][] = new int[N][N];
       /************初始化陣列a的元素**************/
        for(int i = 0;i<a.length;i++)
        {
        for(int j = 0;j<a[i].length;j++)
        {
        a[i][j] = (int)((Math.random()*10000)%11+5);
        }
        }
        /************初始化陣列b的元素**************/
        for(int i = 0;i<b.length;i++)
        {
        for(int j = 0;j<b[i].length;j++)
        {
        b[i][j] = (int)((Math.random()*10000)%11+5);
        }
        }
        /************矩陣乘法得到矩陣c**************/
       for(int i = 0;i<a.length;i++)
       {
       for(int j = 0;j<a.length;j++)
       {
       for(int k = 0;k<a.length;k++)
       {
       c[i][j] += a[i][k]*b[k][j];
       }
       }
       }
       /************輸出矩陣a的元素**************/
       System.out.println("輸出矩陣a:");
       for(int i = 0;i<a.length;i++)
       {
       for(int j = 0;j<a.length;j++)
       {
       System.out.printf("%d",a[i][j]);
       if(j == 4)
       {
       System.out.println();
       }
       else
       {
       System.out.print(",");
       }
       }
       }
       /************輸出矩陣b的元素**************/
       System.out.println("輸出矩陣b:");
       for(int i = 0;i<b.length;i++)
       {
       for(int j = 0;j<b.length;j++)
       {
       System.out.printf("%d",b[i][j]);
       if(j == 4)
       {
       System.out.println();
       }
       else
       {
       System.out.print(",");
       }
       }
       }
       /************輸出矩陣b的元素**************/
       System.out.println("輸出矩陣相乘得到的矩陣c:");
       for(int i = 0;i<c.length;i++)
       {
       for(int j = 0;j<c.length;j++)
       {
       System.out.printf("%d",c[i][j]);
       if(j == 4)
       {
       System.out.println();
       }
       else
       {
       System.out.print(",");
       }
       }
       }
}
}

執行結果展示:


可以動手算一算是不是正確的