使用 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;
}
}
我有以下代码。我想陈述一个矩阵并将其乘以特定的幂。
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;
}
}