Java - Thực Hiện Phép Nhân Hai Ma Trận Và Tìm Ma Trận Chuyển Vị ...
Có thể bạn quan tâm
Viết chương trình thực hiện các công việc sau:
- Tạo 2 ma trận hai chiều A và B có kích thước lần lượt là m1 * n1 và m2 * n2 (với m1, n1, m2, n2 > 0), giá trị của các phần tử được nhập từ bàn phím. Xuất 2 ma trận vừa nhập ra màn hình.
- Tính và in ra màn hình ma trận C = A * B. Lưu ý: Điều kiện để ma trận A nhân được với ma trận B là số cột của ma trận A bằng số dòng của ma trận B.
- Nếu tồn tại ma trận tích C, hãy tìm ma trận D là ma trận chuyển vị của ma trận C. Biết rằng: Ma trận D = CT là ma trận chuyển vị của ma trận C nếu các hàng của ma trận C trở thành các cột của ma trận D và ngược lại. Tức Dij = Cji. Ví dụ:
Bài giải
-------------------- ######## --------------------
Hướng dẫn về phép nhân hai ma trận: Cho hai ma trận Am1 * n1, Bm2 * n2 .Khi đó ma trận cn1 * m2 = A * B gọi là tích của hai ma trận A, B. Trong đó:
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.Như vậy cij = phần tử ở hàng thứ i của ma trận A nhân tương ứng với phần tử ở cột thứ j của ma trận B rồi cộng lại.
Ví dụ:
Bài viết này được đăng tại [free tuts .net]
Bài giải public static void main(String[] args) { int m1, n1; // số dòng và số cột của ma trận A int m2, n2; // số dòng và số cột của ma trận B char choose; Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào số dòng của ma trận A: "); m1 = scanner.nextInt(); System.out.println("Nhập vào số cột của ma trận A: "); n1 = scanner.nextInt(); System.out.println("Nhập vào số dòng của ma trận B: "); m2 = scanner.nextInt(); System.out.println("Nhập vào số cột của ma trận B: "); n2 = scanner.nextInt(); int[][] A = new int[m1][n1]; int[][] B = new int[m2][n2]; // ma trận tích C = A * B // sẽ có số dòng là số dòng của ma trận A // và số cột là số cột của ma trận B int C[][] = new int[m1][n2]; while (m1 > 0 && n1 > 0 && m2 > 0 && n2 > 0) { if (n1 != m2) { System.out.println("Để nhân hai ma trận thì " + "số cột của ma trận A phải bằng số dòng của ma trận B"); System.out.println("Nhập lại số cột của ma trận A: "); n1 = scanner.nextInt(); System.out.println("Nhập vào số dòng của ma trận B: "); m2 = scanner.nextInt(); } else { // nhập giá trị của các phần tử cho 2 ma trận A System.out.println("Nhập vào các phần tử của ma trận A: "); for (int i = 0; i < m1; i++) { for (int j = 0; j < n1; j++) { System.out.print("A[" + i + "]["+ j + "] = "); A[i][j] = scanner.nextInt(); } } // nhập giá trị của các phần tử cho 2 ma trận B System.out.println("Nhập vào các phần tử của ma trận A: "); for (int i = 0; i < m2; i++) { for (int j = 0; j < n2; j++) { System.out.print("B[" + i + "]["+ j + "] = "); B[i][j] = scanner.nextInt(); } } // hiển thị 2 ma trận vừa nhập System.out.println("Ma trận A: "); for (int i = 0; i < m1; i++) { for (int j = 0; j < n1; j++) { System.out.print(A[i][j] + "\t"); } System.out.println("\n"); } System.out.println("Ma trận B: "); for (int i = 0; i < m2; i++) { for (int j = 0; j < n2; j++) { System.out.print(B[i][j] + "\t"); } System.out.println("\n"); } // tính và in ra ma trận C = A * B for (int i = 0; i < m1; i++) { for (int j = 0; j < n2; j++) { C[i][j] = 0; for (int k = 0; k < n1; k++) { C[i][j] = C[i][j] + A[i][k] * B[k][j]; } } } // hiển thị ma trận tích C System.out.println("Ma trận tích C: "); for (int i = 0; i < m1; i++) { for (int j = 0; j < n2; j++) { System.out.print(C[i][j] + "\t"); } System.out.println("\n"); } // tìm ma trận D là ma trận chuyển vị của ma trận C // ma trận D là ma trận chuyển vị của ma trận C // thì các dòng của ma trận C sẽ trở thành // các cột của ma trận D và ngược lại // ví dụ: ma trận C có số dòng m1 = 3 và số cột n2 = 4 thì // ma trận D sẽ có số dòng n2 = 4 và số cột m1 = 3 int D[][] = new int[n2][m1]; for (int i = 0; i < m1; i++) { for (int j = 0; j < n2; j++) { D[j][i] = C[i][j]; } } // hiển thị ma trận D System.out.println("Ma trận chuyển vị của ma trận C là: "); for (int i = 0; i < n2; i++) { for (int j = 0; j < m1; j++) { System.out.print(D[i][j] + "\t"); } System.out.println("\n"); } System.out.println("Bạn có muốn tiếp tục không? Bấm y để tiếp tục, n để thoát!"); choose = scanner.next().charAt(0); if (choose == 'y') { continue; } else { System.out.println("Goodbye!"); break; } } } }Kết quả sau khi biên dịch chương trình:
Nếu nhập vào số cột của ma trận A không bằng số dòng của ma trận B thì chương trình sẽ yêu cầu các bạn nhập lại:
Nếu nhập vào số cột của ma trận A bằng số dòng của ma trận B:
Câu hỏi thường gặp liên quan:
- Java - Tìm giá trị lớn nhất trong một ma trận 2 chiều với các phần tử được nhập từ bàn phím.
- Java - Viết chương trình tính tổng các phần tử nằm trên đường chéo chính của một ma trận vuông.
- Java - Tìm phần tử có giá trị lớn nhất và nhỏ nhất trên đường chéo chính của một ma trận vuông.
- Java - Thực hiện phép nhân hai ma trận và tìm ma trận chuyển vị của ma trận tích vừa tính được.
- Java - Thực hiện nhập vào một ma trận vuông và kiểm tra ma trận đó có phải là ma trận tam giác trên không?
- Java - Viết chương trình tính giá trị trung bình của các phần tử nhỏ nhất trên mỗi cột của một ma trận.
- Java - Viết chương trình tìm và in ra màn hình phần tử lớn nhất và vị trí của phần tử đó trong ma trận số nguyên
- Java - Viết chương trình tìm và in ra phần tử chẵn dương nhỏ nhất trong ma trận.
- Java - Viết chương trình xóa dòng có tổng lớn nhất của một ma trận số thực.
Cùng chuyên mục:
Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java
Hướng dẫn download file với Spring Boot trong Java
Hướng dẫn Upload file với Spring Boot trong Java
Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java
Cách sử dụng Spring Scheduled trong Spring Boot
Cách dùng Groovy trong Spring Boot Java
Cách dùng Spring Boot và Mustache trong Java
Cách dùng Spring Boot và MongoDB trong Java
Cách tạo Restful Client bằng RestTemplate trong Spring Boot
Hướng dẫn sử dụng Interceptor trong Spring Boot
Sử dụng Twitter Bootstrap trong Spring Boot
Tạo trang web đa ngôn ngữ với Spring Boot trong Java
Tạo ứng dụng Chat với Spring Boot và Websocket
Sử dụng JUnit để tạo unit test trong Spring Boot
Cách triển khai Spring Boot trên Tomcat Server
Cách test RESTful API trong Spring Boot
Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền
Duyệt cây nhị phân bằng phương pháp inOder trong Java
Xóa node của cây nhị phân tìm kiếm trong Java
Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java
Từ khóa » Tính Tổng 2 Ma Trận Trong Java
-
Mảng Hai Chiều Trong Java - Freetuts
-
Phép Cộng Hai Ma Trận - TutorialCup
-
Tạo Và Sử Dụng Lớp Matrix Trong Java | Tìm ở đây
-
Kỹ Thuật Lập Trình Với Mảng 2 Chiều Trong Java
-
LAB JAVA - Cộng Trừ Nhân 2 Matrix Với Nhau - YouTube
-
Nhân 2 Ma Trận Java - Dung111999
-
Giúp Bài Tập Về Mảng, Cộng Ma Trận | Java Việt Nam - CongDongJava
-
Bài Tập C - Cộng Hai Ma Trận Trong C - VietTuts
-
Lập Trình Java - Cộng, Trừ, Nhân, Chuyển Vị Ma Trận
-
Thêm Hai Ma Trận Sử Dụng Mảng đa Chiều Trong Java
-
Cộng Hai Ma Trận Trong C - Lập Trình Từ Đầu
-
Tính Tích đường Chéo Chính Của Ma Trận Vuông Trong C