/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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 stub
int[][] 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 stub
int[][] 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();
}
}
运行结果:
下面是关于矩阵乘法的一些链接: