ในบทช่วยสอนนี้ เราจะมาเรียนรู้วิธีหาดีเทอร์มีแนนต์ของเมทริกซ์
มาดูขั้นตอนในการหาดีเทอร์มีแนนต์ของเมทริกซ์กัน
-
เริ่มต้นเมทริกซ์
-
เขียนฟังก์ชันเพื่อหาดีเทอร์มีแนนต์ของเมทริกซ์
-
ถ้าขนาดของเมทริกซ์เท่ากับ 1 หรือ 2 จงหาดีเทอร์มีแนนต์ของเมทริกซ์ มันเป็นเรื่องตรงไปตรงมา
-
เริ่มต้นตัวแปรสำหรับดีเทอร์มีแนนต์ เมทริกซ์ย่อย เครื่องหมาย
-
วนซ้ำจาก 1 ถึงขนาดของเมทริกซ์ N
-
ค้นหาเมทริกซ์ย่อยสำหรับองค์ประกอบเมทริกซ์ปัจจุบัน
-
องค์ประกอบทั้งหมดที่ไม่ได้อยู่ในแถวและคอลัมน์องค์ประกอบปัจจุบัน
-
-
เพิ่มผลคูณขององค์ประกอบปัจจุบันและโคแฟกเตอร์ไปยังดีเทอร์มีแนนต์
-
เปลี่ยนเครื่องหมาย
-
-
พิมพ์ดีเทอร์มีแนนต์ของเมทริกซ์
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h> using namespace std; #define N 3 void subMatrix(int mat[N][N], int temp[N][N], int p, int q, int n) { int i = 0, j = 0; // filling the sub matrix for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { // skipping if the current row or column is not equal to the current // element row and column if (row != p && col != q) { temp[i][j++] = mat[row][col]; if (j == n - 1) { j = 0; i++; } } } } } int determinantOfMatrix(int matrix[N][N], int n) { int determinant = 0; if (n == 1) { return matrix[0][0]; } if (n == 2) { return (matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0]); } int temp[N][N], sign = 1; for (int i = 0; i < n; i++) { subMatrix(matrix, temp, 0, i, n); determinant += sign * matrix[0][i] * determinantOfMatrix(temp, n - 1); sign = -sign; } return determinant; } int main() { int mat[N][N] = {{2, 1, 3}, {6, 5, 7}, {4, 9, 8}}; cout << "Determinant: " << determinantOfMatrix(mat, N) << endl; return 0; }
ผลลัพธ์
หากคุณรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้
Determinant: 36
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น