您的位置:首页 > 编程语言

矩阵的加法、减法、乘法、转置

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");
}

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matrix 编程 class