矩阵的加法、减法、乘法、转置
2017-04-17 21:53
399 查看
package matrix;
import java.util.Scanner;
/**
*
* @author 溯源
*/
public class Matrix{
public static void main(String[] args) {
int a,b,c,d;
int [][] f1;
int [][] f2;
Scanner reader=new Scanner(System.in);
System.out.printf("请输入第一个矩阵的行数和列数:\n");
a=reader.nextInt();
b=reader.nextInt();
f1=new int[a][b];
System.out.printf("请输入第一个矩阵:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
f1[i][j]=reader.nextInt();}
}
System.out.printf("请输入第二个矩阵的行数和列数:\n");
c=reader.nextInt();
d=reader.nextInt();
f2=new int[c][d];
System.out.printf("请输入第二个矩阵:\n");
for(int i=0;i<c;i++){
for(int j=0;j<d;j++){
f2[i][j]=reader.nextInt();
}
}
MatrixDriveTest my=new MatrixDriveTest();
my.array(f1,f2,a,b,c,d);
Transform hw=new Transform();
hw.transform(f1,f2,a,b,c,d);
Rank m=new Rank();
m.rank(f1,f2,a,b,c,d);
}
}
package matrix;
public class MatrixDriveTest {
public void array(int[][] t1,int[][] t2,int a,int b,int c,int d){
int[][] result={};
if(canAdd(a,b,c,d)){
result=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
result[i][j]=t1[i][j]+t2[i][j];
}
}
System.out.printf("矩阵相加之和为:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.printf("%d ",result[i][j]);
}
System.out.print("\n");
}
}
if(canSub(a,b,c,d)){
result=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
result[i][j]=t1[i][j]-t2[i][j];
}
}
System.out.printf("矩阵相减之差为:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.printf("%d ",result[i][j]);
}
System.out.print("\n");
}
}
if(canMul(a,b,c,d)){
result=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
for(int k = 0; k < b; k++){
result[i][j] +=t1[i][k] * t2[k][j];
}
}
}
System.out.printf("矩阵相乘为:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.printf("%d ",result[i][j]);
}
System.out.print("\n");
}
}
if(canAdd(a,b,c,d)==false){System.out.println("矩阵行列不相等,无法相加");}
if(canSub(a,b,c,d)==false){System.out.println("矩阵行列不相等,无法相减");}
if(canMul(a,b,c,d)==false){System.out.println("第一个矩阵的列数不等于第二个矩阵的行数,无法相乘");}
}
public boolean canAdd(int A,int B,int C,int D){
boolean f;
if(A==C&&B==D){ f=true;}
else{f=false;}
return f;
}
public boolean canSub(int A,int B,int C,int D){
boolean f;
if(A==C&&B==D){ f=true;}
else{f=false;}
return f;
}
public boolean canMul(int A,int B,int C,int D){
boolean f;
if(B==C){ f=true;}
else{f=false;}
return f;
}
}
package matrix;
/**
*
* @author 溯源
*/
public class Transform{
public void transform(int[][] t1,int[][] t2,int a,int b,int c,int d){
int[][] result1={};
int[][] result2={};
result1=new int[b][a];
result2=new int[d][c];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
result1[j][i]=t1[i][j];
}
}
System.out.printf("第一个矩阵的转置为:\n");
for(int j=0;j<b;j++){
for(int i=0;i<a;i++){
System.out.printf("%d ",result1[j][i]);
}
System.out.print("\n");
}
for(int i=0;i<c;i++){
for(int j=0;j<d;j++){
result2[j][i]=t2[i][j];
}
}
System.out.printf("第二个矩阵的转置为:\n");
for(int j=0;j<d;j++){
4000
for(int i=0;i<c;i++){
System.out.printf("%d ",result2[j][i]);
}
System.out.print("\n");
}
}
}
import java.util.Scanner;
/**
*
* @author 溯源
*/
public class Matrix{
public static void main(String[] args) {
int a,b,c,d;
int [][] f1;
int [][] f2;
Scanner reader=new Scanner(System.in);
System.out.printf("请输入第一个矩阵的行数和列数:\n");
a=reader.nextInt();
b=reader.nextInt();
f1=new int[a][b];
System.out.printf("请输入第一个矩阵:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
f1[i][j]=reader.nextInt();}
}
System.out.printf("请输入第二个矩阵的行数和列数:\n");
c=reader.nextInt();
d=reader.nextInt();
f2=new int[c][d];
System.out.printf("请输入第二个矩阵:\n");
for(int i=0;i<c;i++){
for(int j=0;j<d;j++){
f2[i][j]=reader.nextInt();
}
}
MatrixDriveTest my=new MatrixDriveTest();
my.array(f1,f2,a,b,c,d);
Transform hw=new Transform();
hw.transform(f1,f2,a,b,c,d);
Rank m=new Rank();
m.rank(f1,f2,a,b,c,d);
}
}
package matrix;
public class MatrixDriveTest {
public void array(int[][] t1,int[][] t2,int a,int b,int c,int d){
int[][] result={};
if(canAdd(a,b,c,d)){
result=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
result[i][j]=t1[i][j]+t2[i][j];
}
}
System.out.printf("矩阵相加之和为:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.printf("%d ",result[i][j]);
}
System.out.print("\n");
}
}
if(canSub(a,b,c,d)){
result=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
result[i][j]=t1[i][j]-t2[i][j];
}
}
System.out.printf("矩阵相减之差为:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.printf("%d ",result[i][j]);
}
System.out.print("\n");
}
}
if(canMul(a,b,c,d)){
result=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
for(int k = 0; k < b; k++){
result[i][j] +=t1[i][k] * t2[k][j];
}
}
}
System.out.printf("矩阵相乘为:\n");
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.printf("%d ",result[i][j]);
}
System.out.print("\n");
}
}
if(canAdd(a,b,c,d)==false){System.out.println("矩阵行列不相等,无法相加");}
if(canSub(a,b,c,d)==false){System.out.println("矩阵行列不相等,无法相减");}
if(canMul(a,b,c,d)==false){System.out.println("第一个矩阵的列数不等于第二个矩阵的行数,无法相乘");}
}
public boolean canAdd(int A,int B,int C,int D){
boolean f;
if(A==C&&B==D){ f=true;}
else{f=false;}
return f;
}
public boolean canSub(int A,int B,int C,int D){
boolean f;
if(A==C&&B==D){ f=true;}
else{f=false;}
return f;
}
public boolean canMul(int A,int B,int C,int D){
boolean f;
if(B==C){ f=true;}
else{f=false;}
return f;
}
}
package matrix;
/**
*
* @author 溯源
*/
public class Transform{
public void transform(int[][] t1,int[][] t2,int a,int b,int c,int d){
int[][] result1={};
int[][] result2={};
result1=new int[b][a];
result2=new int[d][c];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
result1[j][i]=t1[i][j];
}
}
System.out.printf("第一个矩阵的转置为:\n");
for(int j=0;j<b;j++){
for(int i=0;i<a;i++){
System.out.printf("%d ",result1[j][i]);
}
System.out.print("\n");
}
for(int i=0;i<c;i++){
for(int j=0;j<d;j++){
result2[j][i]=t2[i][j];
}
}
System.out.printf("第二个矩阵的转置为:\n");
for(int j=0;j<d;j++){
4000
for(int i=0;i<c;i++){
System.out.printf("%d ",result2[j][i]);
}
System.out.print("\n");
}
}
}
相关文章推荐
- 三元组创建矩阵 一次定位快速转置 矩阵的加法、减法、乘法
- 线性代数·矩阵的加法减法乘法运算简单实现
- 矩阵的加法、乘法、转置、求逆、行列式
- 稀疏矩阵的存储以及转置、加法、乘法操作实现
- 稀疏矩阵的加法、减法、转置运算
- 大数加法.减法.乘法.除法
- 高精度加法减法乘法除法
- Java上机 第五周 任务6 矩阵中数据的位置变换功能、矩阵的加法功能、矩阵的乘法功能
- Codevs高精度入门(减法、加法和乘法)解题报告
- 关于Django模板不能运算的临时解决办法 在Django 模板template 中实现加法,减法,乘法,除法运算
- 整数高精度运算的库(加法,减法,乘法,除法,取模)
- 稀疏矩阵存储、转置、乘法运算
- (PHP实现)只使用++运算实现加法,减法,乘法,除法
- 大数的加法,减法,乘法
- C语言(7)--高精度加法、减法、乘法、今天是星期几、四位平方数、候选人选票问题
- 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
- Sass基本特性--运算(加法、减法、乘法、除法、变量运算、数字运算、颜色运算、字符运算)
- 高精度运算-(加法减法乘法)
- java第二周作业--实现矩阵的加法和乘法运算
- 实现多个多项式的加法、减法、乘法