使用 Java 将矩阵乘以相同的幂

Multipying a Matrix by the same power using Java

我有以下代码。我想陈述一个矩阵并将其乘以特定的幂。

import java.util.Scanner;

class Test
{
   public static void main(String args[])
   {
      int m, n, c, d, k, Ind, x;
      double sum = 0;

      Scanner in = new Scanner(System.in);

      System.out.println("Enter the power by which you want the Matrix to be multiplyed by: ");
      Ind = in.nextInt();

      System.out.println("Enter the number of rows and columns of first matrix");
      m = in.nextInt();
      n = in.nextInt();

      double Mtr[][] = new double[m][n];
      double multiply[][] = new double[m][n];

      System.out.println("Enter the elements of first matrix");

      for ( c = 0 ; c < m ; c++ )
         for ( d = 0 ; d < n ; d++ )
            Mtr[c][d] = in.nextInt();

      if ( Ind ==1 )

            for ( c = 0 ; c < m ; c++ )
             {
                for ( d = 0 ; d < n ; d++ )
                   System.out.print(Mtr[c][d]+"\t");

                System.out.print("\n");
             }

          else
          {           

         for ( c = 0 ; c < m ; c++ )
         {
             for (x=0; x < Ind; x++)
             {
                 for ( d = 0 ; d < n ; d++ )
                 {       
                         for ( k = 0 ; k < m ; k++ )
                         {

                         sum = sum + Mtr[c][k]*Mtr[k][d];
                         }

                         multiply[c][d] = sum;
                     sum = 0;
                 } 
             }
         }

             System.out.println("Product of entered matrices:-");

             for ( c = 0 ; c < m ; c++ )
             {
                for ( d = 0 ; d < n ; d++ )
                   System.out.print(multiply[c][d]+"\t");

                System.out.print("\n");
             }

        }

   }
}

我遇到的问题是我不确定在哪里应用循环来将矩阵乘以我输入的幂。我想我可能还必须更改逻辑,以便

  sum = sum + Mtr[c][k]*multiply[k][d]

试试这个:

import java.util.Scanner;

public class MatrixMultiplication {

    public static void main(String[] args) {

        int[][] a = new int[][] { { 1, 2 }, { 3, 4 } }; // first array
        int[][] b = a;                                  
        int[][] c = a;                                  
        System.out.println("Eneter the multilpicity : ");
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        if(n < 2){                                      // As we need minimum two matrix for multiplication
                                                        // Incase given multiplicity less than 2 it will not produce any difference 
            for (int i = 0; i < c.length; i++) {
                for (int j = 0; j < c[0].length; j++) {
                    System.out.print(c[i][j] + " ");
                }
                System.out.println();

            }
            System.exit(0);
        }else if (n > 2) {                          
            while (n >= 2) {                        
                c = multiply(c, b); n--;
            }
        } else {
            c = multiply(c, b);                     
        }

        for (int i = 0; i < c.length; i++) {
            for (int j = 0; j < c[0].length; j++) {
                System.out.print(c[i][j] + " ");
            }
            System.out.println();
        }
    }

    public static int[][] multiply(int[][] a, int[][] b) {
        int rowsInA = a.length;
        int columnsInA = a[0].length; // same as rows in B
        int columnsInB = b[0].length;
        int[][] c = new int[rowsInA][columnsInB];
        for (int i = 0; i < rowsInA; i++) {
            for (int j = 0; j < columnsInB; j++) {
                for (int k = 0; k < columnsInA; k++) {
                    c[i][j] = c[i][j] + a[i][k] * b[k][j];
                }
            }
        }
        return c;
    }

}