矩阵乘法java实现

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wang15188369698/article/details/79227314

矩阵算法小练.

import java.util.Scanner;
//矩阵乘法运算
public class Matrix {
    public double[][] datas;//数据元素
    public int rows;//行数
    public int cols;//列数
    public Matrix(int r, int c){
        datas = new double[r][c];//创建一个二维数组对象,行和列共同构成一个数据元素
        this.rows = r;
        this.cols = c;
    }
    public Matrix multip(Matrix X){
        //先判断当前矩阵的列数是否与所乘矩阵的行数相等,若不相等,不符合相乘的条件
        if(this.cols != X.rows ){
            return null;
        }
        Matrix c = new Matrix(this.rows,X.cols);//构建一个新的矩阵,存放相乘后的结果 mxn . nxs = mxs
        for(int i = 0; i<this.rows;i++){//矩阵要乘的行数
            for(int j = 0;j<X.cols;j++){//每一行要乘的列数
                for(int k = 0;k<X.rows;k++){//控制相加的次数  也可用this.col
                    c.datas[i][j] += this.datas[i][k]*X.datas[k][j];
                }
            }
        }
        return c;
    }
    public void display(){//打印矩阵                                                                                                                                                                                                
        if(this == null) return;
        for(int i = 0;i<this.rows;i++){
            for(int j = 0;j<this.cols;j++){
                System.out.print(this.datas[i][j]+"\t");
            }
            System.out.println();
        }

    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入要相乘的第一个矩阵...");
        System.out.println("请输入矩阵的行数。。。");
        int r = scan.nextInt();
        System.out.println("请输入矩阵的列数。。。");
        int c = scan.nextInt();
        Matrix m = new Matrix(r,c);
        System.out.println("请以此输入矩阵元素。。。");
        for(int i = 0; i<r;i++){
            for(int j = 0; j<c;j++){
                m.datas[i][j] = scan.nextDouble();
            }
        }
        m.display();
        System.out.println("请输入要相乘的另一个矩阵...");
        System.out.println("请输入矩阵的行数。。。");
        int r1 = scan.nextInt();
        System.out.println("请输入矩阵的列数。。。");
        int c1 = scan.nextInt();
        Matrix m1 = new Matrix(r1,c1);
        System.out.println("请以此输入矩阵元素。。。");
        for(int i = 0; i<r1;i++){
            for(int j = 0; j<c1;j++){
                m1.datas[i][j] = scan.nextDouble();
            }
        }
        m1.display();
        System.out.println("相乘的结果是: ");
        m.multip(m1).display();
    }
展开阅读全文

没有更多推荐了,返回首页