Java實現的矩陣乘法示例
本文實例講述了Java實現的矩陣乘法。分享給大家供大家參考,具體如下:
思路:
矩陣乘法的前提是:前一矩陣的行數 == 后一矩陣的列數(rows == cols)
在滿足前提的情況下:前一矩陣的第一行 與 第二個矩陣的第一列 逐個相乘。將乘積求和 作為 結果矩陣的第一個元素
類推刻得到:結果矩陣的 第 [row][col] 個元素 = 前一矩陣的第 row 行 與 后一矩陣的 col列上的元素 逐一相乘 后的乘積之和
代碼及解析:
一、算法剖析:
1.設置兩個for循環(huán)用來控制結果(輸出)矩陣的 待賦值元素位置 (即 matrix[i][j] )
2.在這兩個循環(huán)環(huán)中再嵌套上一個循環(huán) 這個循環(huán)起到關鍵作用 它用來控制 前一矩陣第 i 行元素的列數 以及 后一矩陣 第 j 列的行數

二、算法代碼:
/*
* 計算兩個矩陣相乘的方法
*/
public Matrix mutiply(Matrix m){
Matrix result = new Matrix(this.getRows(), m.getCols());
for (int i = 0 ; i < this.getRows() ; i++ ){
for(int j = 0 ; j < m.getCols() ; j++ ){//正好為矩陣大小,保證了每個元素都被賦值
for (int num = 0 ; num < this.getCols() ; num++){
result.setData(i, j, this.getData(i, num) * m.getData(num, j));
}
}
}
return result;
}
注:具體進行計算時,由于可能出現 前一矩陣行數 不等于 后一矩陣列數等異常情況
需要進行異常處理,這里為了保證算法過程的清晰性暫不加上,希望讀者在具體使用中及時添加。
源碼即測試范例:
public class MatrixTest {
public static void main(String[] args) {
//矩陣測試范例
//僅為輸入參考 無實際作用
double [][]array01 = {
{1, 2, 3},
{4, 5, 6}
};
double [][]array02 = {
{1, 4},
{2, 5},
{3, 6}
};
double [][] resultMatrix = new double[array01.length][array02[0].length];
for (int i = 0 ; i < resultMatrix.length ; i++ ){
for(int j = 0 ; j < resultMatrix[0].length ; j++ ){//正好為矩陣大小,保證了每個元素都被賦值
for (int num = 0 ; num < array02.length ; num++){
resultMatrix[i][j] = resultMatrix[i][j] + array01[i][num]*array02[num][j];
}
}
}
for (int i = 0 ; i < resultMatrix.length ; i++ ){
for(int j = 0 ; j < resultMatrix[0].length ; j++ ){//正好為矩陣大小,保證了每個元素都被賦值
System.err.print(resultMatrix[i][j] + "\t");
}
System.out.println();
}
}
}
輸出范例:
9.0 18.0
18.0 36.0
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
Java的Struts2框架配合Ext JS處理JSON數據的使用示例
這篇文章主要介紹了Java的Struts2框架配合Ext JS處理JSON數據的使用示例,包括將Ext JS中的JSON數據解析為列表的方法,需要的朋友可以參考下2016-03-03
基于java ssm springboot+mybatis酒莊內部管理系統(tǒng)設計和實現
這篇文章主要為大家詳細介紹了java ssm springboot+mybatis實現酒店管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08

