m0_62371547 2021-11-12 15:25 采纳率: 0%
浏览 136

JAVA 用图形用户界面程序实现矩阵的基本运算。

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();
            }
        }
    }
    
    评论

报告相同问题?

问题事件

  • 修改了问题 11月12日
  • 创建了问题 11月12日

悬赏问题

  • ¥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里的文字?