矩阵转置,矩阵加,矩阵乘
- 矩阵转置,矩阵加,矩阵乘
- 1.矩阵转置
- 2.矩阵加
- 3.矩阵乘
- 4.总结:
矩阵转置,矩阵加,矩阵乘
1.矩阵转置
对给定的矩阵做转置操作。
什么是矩阵:矩阵是一个由 m 行(row)n 列(column)元素排列成的矩形阵列,以下是一个 2 行 3 列的矩阵:
[1 9 -13]
[20 5 -6]什么是矩阵转置:矩阵中的每个数可用第 i 行第 j 列来表示,比如以上矩阵中的 9 可表示为A12,矩阵的转置就是把矩阵中所有元素的行列值交换,矩阵中的 9 通过转置后就变成了A21。整个矩阵转置后数据如下:
[1 20]
[9 5]
[-13 6]
注意:矩阵可以用二维数组表示。
转置以下矩阵,并输出转置后的结果,输出二维数组时注意数组中的每行数字之间用空格分开,每行中最后一个数字后面也要有一个空格。。
给定矩阵如下:
5 6 7
15 65 43
32 43 22
11 88 6
4 98 66
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
例:
测试输入:无
预期输出:
5 15 32 11 4
6 65 43 88 98
7 43 22 6 66
public class Transpose {
public static void main(String[] args) {
// 请在Begin-End间编写代码
/********** Begin **********/
// 定义二维数组并初始化
int a[][] = new int[][]{{5,6,7},{15,65,43},{32,43,22},{11,88,6},{4,98,66}};
// 定义转置后的新数组
int b[][] = new int[3][5];
// 转置数组
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
b[j][i]=a[i][j];
}
}
// 打印新数组
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
System.out.print(b[i][j]+" ");
}
System.out.println();
}
/********** End **********/
}
}
2.矩阵加
本关任务:给定两个矩阵,求它们的和。
矩阵求和过程如下示例:
矩阵求和就是把不同矩阵的相同位置的元素相加,得到一个新矩阵。需要注意的是,只有行列数一致的矩阵才能求和。
编程要求
给定以下两个矩阵,求它们的和。输出相加结果的二维数组时要注意数组中的每行数字之间用空格分开,每行中最后一个数字后面也要有一个空格。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
public class Transpose {
public static void main(String[] args) {
// 请在Begin-End间编写代码
/********** Begin **********/
// 定义二维数组并初始化
int a[][] = new int[][]{{5,6,7},{15,65,43},{32,43,22},{11,88,6},{4,98,66}};
int b[][] = new int[][]{{94,65,31},{0,71,98},{66,88,100},{32,7,1},{16,2,34}};
int c[][] = new int[a.length][a[1].length];
// 打印求和后的新数组
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
c[i][j] = a[i][j]+b[i][j];
System.out.print(c[i][j]+" ");
}
System.out.println();
}
/********** End **********/
}
}
测试:
—— 预期输出 ——
99 71 38
15 136 141
98 131 122
43 95 7
20 100 100
3.矩阵乘
本关任务:给定两个矩阵,求它们的乘积。
矩阵乘示例如下:
从图 1 可以看到,相乘后的矩阵的行数等于第一个矩阵的行数,列数等于第二个矩阵的列数。
编程要求
给定以下两个矩阵,求它们的乘积。
测试说明
平台将运行你编写的程序代码,若你的运行结果与预期输出一致,则通关。
预期输出:
1024 540 617 1477 1393
6164 2352 3303 9704 10985
5908 2804 2444 7773 7086
5486 1065 737 7733 9455
7588 2370 4480 13114 16288
// 请在Begin-End间编写完整代码,类名请使用Transpose
/********** Begin **********/
public class Transpose{
public static void main(String [] args){
int a[][] = new int[][]{{5,6,7},{15,65,43},{32,43,22},{11,88,6},{4,98,66}};
int b[][] = new int[][]{{94,65,31,87,21},{48,2,0,71,98},{38,29,66,88,100}};
int c[][] = new int[a.length][b[0].length];
for(int i=0;i<a.length;i++){
for(int j=0;j<b[0].length;j++){
int sum=0;
for(int k=0;k<b.length;k++)
sum+=a[i][k]*b[k][j];
c[i][j]= sum ;
}
}
for(int i=0;i<c.length;i++){
for(int j=0;j<c[i].length;j++){
System.out.print(c[i][j]+" ");
}
System.out.println();
}
/********** End **********/
}
}
4.总结:
大二学的线性代数,可以用Java代码来实现,看来学点数学还是有用的(帅的肯定!)
“将来退休后,想找个好大学,去学学数学”