การคูณเมทริกซ์ขนาด 3x3
โจทย์
เขียนโปรแกรมที่อ่านเมทริกซ์ขนาด 3 x 3 จำนวนสองเมทริกซ์ และแสดงผลคูณของทั้งสองเมทริกซ์ ในการคูณเมทริกซ์ a ด้วยเมทริกซ์ b จำนวนคอลัมน์ใน a ต้องเท่ากับจำนวนแถวใน b และทั้งสองเมทริกซ์ต้องมีประเภทของสมาชิกที่เหมือนกันหรือเข้ากันได้ ให้ c เป็นผลลัพธ์ของการคูณ ตัวอย่างเช่น สำหรับเมทริกซ์ขนาด 3 x 3 สองเมทริกซ์ a และ b, ผลลัพธ์ c คือ
โดยที่
ถ้าเมทริกซ์ 1 คือ 1 2 3 4 5 6 7 8 9 และเมทริกซ์ 2 คือ 0 2 4 1 4.5 2.2 1.1 4.3 5.2 การคูณเมทริกซ์จะเป็นดังนี้:
แต่ละสมาชิกของเมทริกซ์ผลคูณ ab สามารถคำนวณได้ดังนี้:
- …
คำแนะนำ: ใช้ double เป็นประเภทข้อมูล
| Input | Output |
|---|---|
| 1 2 3 4 5 6 7 8 9 0 2 4 1 4.5 2.2 1.1 4.3 5.2 | 5.300000000000001 23.9 24.0 11.600000000000001 56.3 58.2 17.9 88.69999999999999 92.4 |
โค้ด
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double[][] matrixA = new double[3][3];
double[][] matrixB = new double[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matrixA[i][j] = scanner.nextDouble();
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matrixB[i][j] = scanner.nextDouble();
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
double product = (matrixA[i][0] * matrixB[0][j]) + (matrixA[i][1] * matrixB[1][j]) + (matrixA[i][2] * matrixB[2][j]);
System.out.print(product + " ");
}
System.out.println();
}
}
}คำอธิบาย
import java.util.Scanner;- เราเริ่มต้นด้วยการนำเข้า (import) คลาส
Scannerซึ่งใช้สำหรับการรับข้อมูลจากผู้ใช้
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);- เราสร้างคลาสหลักชื่อ
Main - เมธอด
mainเป็นจุดเริ่มต้นของโปรแกรม - เราสร้างออบเจ็กต์
Scannerเพื่อรับข้อมูลจากผู้ใช้
double[][] matrixA = new double[3][3];
double[][] matrixB = new double[3][3];- เราสร้างอาร์เรย์สองมิติสองชุด
matrixAและmatrixBขนาด 3x3 เพื่อเก็บข้อมูลของเมทริกซ์สองเมทริกซ์ - เราใช้
doubleเป็นประเภทข้อมูลตามคำแนะนำ เพื่อรองรับทั้งจำนวนเต็มและทศนิยม
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matrixA[i][j] = scanner.nextDouble();
}
}- เราใช้ลูปซ้อนเพื่อรับค่าจากผู้ใช้สำหรับเมทริกซ์ A
scanner.nextDouble()ใช้เพื่อรับค่าทศนิยมจากผู้ใช้
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matrixB[i][j] = scanner.nextDouble();
}
}- เราทำเช่นเดียวกันเพื่อรับค่าสำหรับเมทริกซ์ B
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
double product = (matrixA[i][0] * matrixB[0][j]) +
(matrixA[i][1] * matrixB[1][j]) +
(matrixA[i][2] * matrixB[2][j]);
System.out.print(product + " ");
}
System.out.println();
}- เราใช้ลูปซ้อนอีกครั้งเพื่อคำนวณผลคูณของเมทริกซ์
- สำหรับแต่ละตำแหน่ง (i, j) ในเมทริกซ์ผลลัพธ์ เราคำนวณผลรวมของผลคูณระหว่างแถว i ของ matrixA และคอลัมน์ j ของ matrixB
productเก็บผลลัพธ์ของการคูณเมทริกซ์สำหรับแต่ละตำแหน่ง- เราใช้
System.out.print()เพื่อแสดงผลลัพธ์ในแต่ละตำแหน่ง โดยเว้นวรรคระหว่างแต่ละค่า System.out.println()ใช้เพื่อขึ้นบรรทัดใหม่หลังจากแสดงผลครบทุกคอลัมน์ในแต่ละแถว
ปรับปรุงล่าสุด