JAVA
用图形用户界面程序实现矩阵的基本运算。
1条回答 默认 最新
- CSDN专家-sinJack 2021-11-12 15:37关注
package Math; /** * 矩阵基本运算 * @author woyouyihujiu * */ public class BasicMatrixMath { public static final int OPEROPERATION_ADD = 1; public static final int OPEROPERATION_SUB = 2; public static final int OPEROPERATION_MUL = 3; /** * 矩阵加法运算 * @param matrix_a 矩阵a * @param matrix_b 矩阵b * @return result1 运算合法,返回结果 */ public int[][] additive(int[][] matrix_a, int[][] matrix_b){ int[][] result1 = new int[matrix_a.length][matrix_a[0].length]; if(legalOperation(matrix_a, matrix_b, OPEROPERATION_ADD)){ for(int i = 0; i < matrix_a.length; i++){ for(int j = 0; j < matrix_a[0].length; j++){ result1[i][j] = matrix_a[i][j] + matrix_b[i][j]; } } } return result1; } /** * 矩阵减法运算 * @param matrix_a 矩阵a * @param matrix_b 矩阵b * @return result2 运算合法,返回结果 */ public int[][] subtraction(int[][] matrix_a, int[][] matrix_b){ int[][] result2 = new int[matrix_a.length][matrix_a[0].length]; if(legalOperation(matrix_a, matrix_b, OPEROPERATION_SUB)){ for(int i = 0; i < matrix_a.length; i++){ for(int j = 0; j < matrix_a[0].length; j++){ result2[i][j] = matrix_a[i][j] - matrix_b[i][j]; } } } return result2; } /** * 矩阵乘法运算a 矩阵与矩阵相乘 * @param matrix_a 矩阵a * @param matrix_b 矩阵b * @return result3 运算合法,返回结果; null 运算不合法 */ public int[][] multiplication_a(int[][] matrix_a, int[][] matrix_b){ int[][] result3 = new int[matrix_a.length][matrix_b[0].length]; if(legalOperation(matrix_a, matrix_b, OPEROPERATION_MUL)){ for(int i = 0; i < matrix_a.length; i++){ for(int j = 0;j < matrix_a[0].length; j++){ result3[i][j] = calculateSingleResult(matrix_a, matrix_b, i, j); } } return result3; }else{ return null; } } /** * 矩阵乘法运算b 矩阵的数乘 * @param matrix_a 矩阵a * @param n 数n * @return result4 运算合法,返回结果 */ public int[][] multiplication_b(int[][] matrix_a, int n){ int[][] result4 = new int[matrix_a.length][matrix_a[0].length]; for(int i = 0; i < matrix_a.length; i++){ for(int j = 0; j < matrix_a[0].length; j++){ result4[i][j] = n * matrix_a[i][j]; } } return result4; } /** * 矩阵乘法a中result每个元素的单一运算 * @param matrix_a 矩阵a * @param matrix_b 矩阵b * @param row 参与单一运算的行标 * @param col 参与单一运算的列标 * @return result 运算结果 */ public int calculateSingleResult(int[][] matrix_a, int[][] matrix_b, int row, int col){ int result = 0; for(int i = 0; i < matrix_a[0].length; i++){ result += matrix_a[row][i] * matrix_b[i][col]; } return result; } /** * 判断矩阵是否可以进行合法运算 * @param matrix_a 矩阵a * @param matrix_b 矩阵b * @param type 判断运算类型,是加法,减法,还是乘法运算 * @return legal true 运算合法; false 运算不合法 */ private boolean legalOperation(int[][] matrix_a, int[][] matrix_b, int type){ boolean legal = true; if(type == OPEROPERATION_ADD || type == OPEROPERATION_SUB){ if(matrix_a.length != matrix_b.length || matrix_a[0].length != matrix_b[0].length){ legal = false; } }else if(type == OPEROPERATION_MUL){ if(matrix_a.length != matrix_b[0].length){ legal = false; } } return legal; } public static void main(String[] args) { int a[][] = new int[][]{{1,2},{3,4}}; int b[][] = new int[][]{{5,6},{7,8}}; BasicMatrixMath bmm = new BasicMatrixMath(); System.out.println("addition two matrix"); int[][] result = bmm.additive(a, b); for (int i = 0; i < result.length; i++) { for (int j = 0; j < result[0].length; j++) { System.out.print("\t" + result[i][j]); } System.out.println(); } System.out.println("substract two matrix"); int[][] result1 = bmm.subtraction(a, b); for (int i = 0; i < result1.length; i++) { for (int j = 0; j < result1[0].length; j++) { System.out.print("\t" + result1[i][j]); } System.out.println(); } System.out.println("multiplex one matrix"); result = bmm.multiplication_b(a, 3); for (int i = 0; i < result.length; i++) { for (int j = 0; j < result[0].length; j++) { System.out.print("\t" + result[i][j]); } System.out.println(); } System.out.println("multiplex two matrix"); result = bmm.multiplication_a(a, b); for (int i = 0; i < result.length; i++) { for (int j = 0; j < result[0].length; j++) { System.out.print("\t" + result[i][j]); } System.out.println(); } } }
解决 2无用
悬赏问题
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?