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

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

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时,即a和b都是3*3的矩阵;设a的矩阵元素为{1,2,3,4,5,6,7,8,9},b的矩阵元素为{0,2,4,1,4.5,2.2,1.1,4.3,5.2}时可得出a*b的矩阵,结果如下图:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值