[英]error in matrix multiplication in java
我正在研究Java加法,減法和乘法程序。 我已經創建並完成了該程序,但乘法輸出錯誤,並且我想檢查矩陣乘法中第一個矩陣的行是否等於第二個。
import java.util.*;
class matrix
{
public static void matrix_oper(int A[][],int B[][],int m, int n, int p, int q)
{
int[][] C = new int[m][n];
System.out.println("Matrix A: ");
for(int i=0 ; i < A.length ; i++)
{
System.out.println();
for(int j=0 ; j < A[i].length ; j++)
{
System.out.print(A[i][j]+" ");
}
}
System.out.println();
System.out.println();
System.out.println("Matrix B: ");
for(int i=0 ; i < B.length ; i++)
{
System.out.println();
for(int j=0 ; j < B[i].length ; j++)
{
System.out.print(B[i][j]+" ");
}
}
System.out.println();
System.out.println();
System.out.println("Addition Of Matrices: ");
for(int i=0;i<C.length;i++)
{
for(int j=0;j<C[i].length;j++)
{
C[i][j]=A[i][j]+B[i][j];
System.out.print(C[i][j]+" ");
}
System.out.println();
}
System.out.println();
System.out.println();
System.out.println("Substraction Of Matrices: ");
for(int i=0;i<C.length;i++)
{
for(int j=0;j<C[i].length;j++)
{
C[i][j]=A[i][j]-B[i][j];
System.out.print(C[i][j]+" ");
}
System.out.println();
}
System.out.println();
System.out.println();
System.out.println("Multiplication Of Matrices: ");
for(int i=0;i<C.length;i++)
{
for(int j=0;j<C[i].length;j++)
{
C[i][j]=A[i][j]*B[j][i];
System.out.print(C[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter Number of rows: ");
int m = input.nextInt();
System.out.print("Enter Number of columns: ");
int n = input.nextInt();
int[][] A = new int[m][n];
System.out.print("Enter Number of rows: ");
int p = input.nextInt();
System.out.print("Enter Number of columns: ");
int q = input.nextInt();
int[][] B = new int[p][q];
System.out.println("Enter elements for matrix A : ");
for(int i=0 ; i < A.length ; i++)
for(int j=0 ; j < A[i].length ; j++)
{
A[i][j] = input.nextInt();
}
System.out.println("Enter elements for matrix B : ");
for (int i=0 ; i < B.length ; i++)
for (int j=0 ; j < B[i].length ; j++)
{
B[i][j] = input.nextInt();
}
matrix mx=new matrix();
mx.matrix_oper(A,B,m,n,p,q);
}
}
輸出是:
Enter Number of rows: 2
Enter Number of columns: 2
Enter elements for matrix A :
1
1
1
1
Enter elements for matrix B :
2
2
2
2
Matrix A:
1 1
1 1
Matrix B:
2 2
2 2
Addition Of Matrices:
3 3
3 3
Substraction Of Matrices:
-1 -1
-1 -1
Multiplication Of Matrices:
2 2
2 2
我的矩陣乘法有什么錯誤?
嘗試這個
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];
}
}
}
乘法邏輯id錯誤:矩陣的乘法是通過將A的行元素和B的列元素相乘來完成的。請嘗試以下操作:
int[][] C = new int[m][q]; //this is important. the q.
for(int i=0;i<C.length;i++)
{
for(int j=0;j<C[i].length;j++)
{
C[i][j]= 0;
for(k=0;k<n;k++){ //n is column size of A or row size of B.
C[i][j] += A[i][k]*B[k][j]; //updated
}
System.out.print(C[i][j]+" ");
}
System.out.println();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.