首页 > 编程语言 > 详细

java计算两个n阶矩阵相乘

时间:2018-01-08 20:48:27      阅读:853      评论:0      收藏:0      [点我收藏+]

自己是个新手,研究java数据结构,看到两个n阶矩阵相乘的题目,自己就试着写了一个简单的demo,哪里有不好的地方,也希望大家多提提意见,直接上代码了:

package com.shujujiegou01;

public class JuZhenChengFa {
// 计算两个N阶矩阵相乘
public static void squareMult(int[][] a, int[][] b, int[][] c, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
c[i][j] = 0;
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}

// 打印矩阵
public static void printArray(int a[][]) {
for (int k = 0; k < a.length; k++) {
for (int l = 0; l < a[k].length; l++) {
// 打印每一个元素及其所在坐标位置
System.out.print(a[k][l] + "-" + "(" + k + "," + l + ")" + ",");
}
System.out.println();
}
}

// 矩阵行列互换
public static void swapRowCloumn(int a[][]) {
int num = a.length;

//是为了方便自己调试,才这么定义的

int e[][] = new int[num][num];
for (int k = 0; k < num; k++) {
for (int l = 0, x = a[k].length; l < x; l++) {
// 打印每一个元素及其所在坐标位置
e[k][l] = a[l][k];
System.out.print(e[k][l] + "-" + "(" + k + "," + l + ")" + ",");
}
System.out.println();
}
}

// 主函数测试
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[][] = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int b[][] = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int c[][] = new int[3][3];

System.out.println("矩阵A:");
printArray(a);
System.out.println("互换行和列后的A矩阵:");
swapRowCloumn(a);
// printArray(a);
System.out.println("矩阵B:");
printArray(b);
System.out.println("互换行和列后的A矩阵:");
swapRowCloumn(b);
// printArray(b);
// 调用
squareMult(a, b, c, 3);
// 打印
System.out.println("矩阵C:");
printArray(c);

// 调换过后计算的结果
System.out.println("调换行和列的矩阵C:");
swapRowCloumn(c);
}

}

附上运行结果截图:

技术分享图片

 

 

标红的部分,个人感觉有问题,调用了行列互换方法了,按理来说应该计算c矩阵是按照行列互换后的A矩阵和B矩阵来计算的,应该直接得到红框的答案;但是计算出来发现还是根据旧的A,B矩阵的乘积来计算的。感觉哪里有问题,但是说不上来!!!

java计算两个n阶矩阵相乘

原文:https://www.cnblogs.com/yaoruozi/p/8244606.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!