Java设计两个矩阵相乘的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuguangbainian/article/details/53150478

新建一个类名matrix,包名为:cn.edu.jxufe.huwei,两个矩阵相乘的程序源代码如下:

/**   @author 江西财经大学- 胡卫 -0146024  **/

package cn.edu.jxufe.huwei;


import java.util.Scanner;

 

public class Matrix {

/*      矩阵相乘          */

public static double[][] multiplyMatrix(double[][] a,double[][] b){

 if(a[0].length != b.length) {

        return null;

 }

 double[][] c=new double[a.length][b[0].length];

        for(int i=0;i<a.length;i++) {

            for(int j=0;j<b[0].length;j++) {

              for(int k=0;k<a[0].length;k++) {            

            c[i][j] += a[i][k] * b[k][j]; 

           } 

         }

       }

return c;

}

/*  打印一个矩阵    */

public static void printMatrix(double[][] c) {

if (c!=null) {

for(int i=0;i<c.length;i++) {

for(int j=0;j<c[0].length;j++) {

System.out.printf("%-8.1f",c[i][j]);  //保留1位小数;

}

System.out.println();

}

else {

System.out.println("无效");

}

System.out.println();

}

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

System.out.println("Input m=");

int m=input.nextInt();

System.out.println("Input n=");

int n=input.nextInt();

System.out.println("Input k=");

int k=input.nextInt();

 

     double [][]a=new double[m][n];  //定义一个m*n的矩阵

     double [][]b=new double[n][k];  //定义一个n*k的矩阵 

     System.out.println("输入连续的数构成数组a:");

     for(int i=0;i<m;i++)

      for(int j=0;j<n;j++)

      a[i][j]=input.nextDouble();

     System.out.println("输入连续的数构成数组b:");

     for(int i=0;i<n;i++)

      for(int j=0;j<k;j++)

      b[i][j]=input.nextDouble();

        double [][]c=multiplyMatrix(ab);

        System.out.println("Matrix a:");

        printMatrix(a);    //打印a

        System.out.println("Matrix b:");

printMatrix(b);    //打印b

System.out.println("Matrix c:");

printMatrix(c);    //打印c

input.close(); 

}

}

其中,代码运行的结果见如下图片。


如上图所示,当输入m=n=k=3时,即ab都是3*3的矩阵;设a的矩阵元素为{123456789},b的矩阵元素为{02414.52.21.14.35.2}时可得出a*b的矩阵,结果如下图:




展开阅读全文

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