JAVA--第四周实验--任务4--求矩阵元素相乘(编程思想)

来源:互联网 发布:水电设计软件 编辑:程序博客网 时间:2024/05/16 06:39

 

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. * 文件名称:求矩阵元素相乘 * 算法提示:(1)用二维数组表示矩阵,实现矩阵乘法。 * 算法提示:(2)如C=A*B,要考虑矩阵相乘的规则,即A矩阵和B矩阵是任意的, * 算法提示:(3)C矩阵的产生是自动的(C的行数和列数要自动判断生成?怎样得到C矩阵的的行数和列数?) * 作 者: 雷恒鑫  * 完成日期: 2012 年 09 月 20 日 * 版 本 号: V1.0  * 对任务及求解方法的描述部分 * 输入描述: * 问题描述: * 程序输出: * 程序头部的注释结束 */public class Task_four {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[][] a={{1,1},{2,0}};//自己定义矩阵int[][] b={{0,2,3},{1,1,2}};//自己定义矩阵printMatrix(a,b);}static void printMatrix(int[][] a,int[][] b){//1.要判断矩阵能否相乘,能相乘继续,不能相乘给出提示为什么不能相乘int sum=0;for(int i = 0;i<a.length;++i){if(a[i].length!=b.length){System.out.println("因为a数组与b数组不同,所以不能相乘!");//System.out.println("因为a数组第"+i+"行与b数组第i行元素个数不同,所以不能相乘!");return;}}//2.得到C矩阵的行数和列数,以产生C矩阵int[][] c = new int[a.length][b[0].length];//3.输出结果矩阵C的值System.out.println("按二维方式输出C矩阵:");for(int i = 0;i <a.length;++i){for(int j = 0;j <b[0].length;++j){sum =0;for(int m = 0;m <a[0].length;++m){//for(int k = 0;m <a[0].length;++m)sum = sum+a[i][m]*b[m][j];//System.out.print(c[i][j]+"  ");}c[i][j] = sum;System.out.print(c[i][j]+"  ");}System.out.println();}System.out.println();}}

 

运行结果:

下面是错误的程序,大家不要看。

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. * 文件名称:求矩阵元素相乘 * 算法提示:(1)用二维数组表示矩阵,实现矩阵乘法。 * 算法提示:(2)如C=A*B,要考虑矩阵相乘的规则,即A矩阵和B矩阵是任意的, * 算法提示:(3)C矩阵的产生是自动的(C的行数和列数要自动判断生成?怎样得到C矩阵的的行数和列数?) * 作 者: 雷恒鑫  * 完成日期: 2012 年 09 月 20 日 * 版 本 号: V1.0  * 对任务及求解方法的描述部分 * 输入描述: * 问题描述: * 程序输出:  * 程序头部的注释结束  */public class Task_two {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[][] a={{11,4,5,6},{7,2,10,11},{8,9,12,3}};//自己定义矩阵int[][] b={{3,6,8,7},{5,6,7,8},{4,2,3,4}};//自己定义矩阵printMatrix(a,b);}static void printMatrix(int[][] a,int[][] b){//1.要判断矩阵能否相乘,能相乘继续,不能相乘给出提示为什么不能相乘if((a.length==b.length)){for(int i = 0;i<a.length;++i){if(a[i].length!=b[i].length){System.out.println("因为a数组第"+i+"行与b数组第i行元素个数不同,所以不能相乘!");return;}}}else{System.out.println("因为a数组与b数组列数不同,所以不能相乘!");return;}//2.得到C矩阵的行数和列数,以产生C矩阵int[][] c = new int[a.length][];//3.输出结果矩阵C的值System.out.println("按二维方式输出C矩阵:");for(int i = 0;i <a.length;++i){for(int j = 0;j <a[i].length;++j){c[i]= new int[a[i].length];c[i][j] = a[i][j]*b[i][j];System.out.print(c[i][j]+"  ");}System.out.println();}System.out.println();}}


运行结果:

下面是关于矩阵乘法的一些链接:

百度百科:矩阵乘法

百度文库:

原创粉丝点击