矩阵运算库函数
请实现矩阵的基本运算库函数。该库函数包含矩阵的转置,矩阵与矩阵的加法,矩阵与矩阵的乘法等功能。
矩阵的转置即行列互换。矩阵的加法是对应元素相加。矩阵的乘法是对应行列的点积。
感兴趣的同学请实现更多关于矩阵运算的函数。
=========
输入:
矩阵A。第一行是元素的个数,之后是矩阵元素。
输出:
矩阵转置AT ,加法A+AT ,乘法A*AT 的结果。
示例输入:
3□ 3↵
□ 0.84339□ 0.42034□ 0.76091↵
□ 0.79426□ 0.89185□ 0.52491↵
□ 0.72037□ 0.83435□ 0.36943↵
示例输出:
3□ 3↵
□ □ 0.84339□ □ □ 0.79426□ □ □ 0.72037□ ↵
□ □ 0.42034□ □ □ 0.89185□ □ □ 0.83435□ ↵
□ □ 0.76091□ □ □ 0.52491□ □ □ 0.36943□ ↵
3□ 3↵
□ □ 1.68677□ □ □ 1.21460□ □ □ 1.48128□ ↵
□ □ 1.21460□ □ □ 1.78371□ □ □ 1.35925□ ↵
□ □ 1.48128□ □ □ 1.35925□ □ □ 0.73885□ ↵
3□ 3↵
□ □ 1.46697□ □ □ 1.44416□ □ □ 1.23936□ ↵
□ □ 1.44416□ □ □ 1.70178□ □ □ 1.51019□ ↵
□ □ 1.23936□ □ □ 1.51019□ □ □ 1.35154□ ↵
import java.util.Scanner;
public class Main {
//打印矩阵
public static void printMatrix(double[][] matrix,int a,int b){
for(int i=0; i<a; i++){
for(int j=0; j<b; j++){
System.out.printf("%9.5f ",matrix[i][j]);
}
System.out.println();
}
System.out.println();
}
public static void main(String[] args) {
// Scanner scanner = new Scanner(System.in);
// int a = scanner.nextInt();
// int b = scanner.nextInt();
int a = 3;
int b = 3;
double[][] matrix = new double[][]{{0.84339,0.42034,0.76091},{0.79426,0.89185,0.52491},{0.72037,0.83435,0.36943}};
// while(scanner.hasNext()){
// for(int i=0; i<a; i++){
// for(int j=0; j<b; j++){
// matrix[i][j] = scanner.nextDouble();
// }
// }
// }
double[][] matrixT = new double[a][b];//矩阵转置
double[][] matrixA = new double[a][b];//矩阵加
double[][] matrixP = new double[a][b];//矩阵乘
//矩阵转置
for(int i=0; i<a; i++){
for(int j=0; j<b; j++){
// if(i != j && i<j){
// double temp = matrix[i][j];
// matrix[i][j] = matrix[j][i];
// matrix[j][i] = temp;
// }
matrixT[i][j] = matrix[j][i];
matrixA[i][j] = matrix[i][j] + matrix[j][i];
}
}
for(int i=0; i<a; i++){
for(int j=0; j<b; j++){
for (int k = 0; k<b; k++) {//columns of a = rows of b
matrixP[i][j] += matrix[i][k]*matrixT[k][j];
}
}
}
printMatrix(matrixT,3,3);
printMatrix(matrixA,3,3);
printMatrix(matrixP,3,3);
}
}