Định thức của ma trận có thể dùng để kiểm tra ma trận có khả nghịch (invertible) hay không. Ma trận khả nghịch khi và chỉ khi định thức khác 0. Nếu định thức bằng 0, ma trận không khả nghịch. Ví dụ:
Ma trận cho trước: 4 2 1 2 1 1 9 3 2 Định thức = 3 Vậy ma trận khả nghịch.
Chương trình kiểm tra ma trận có khả nghịch:
Ví dụ
#include <iostream>
#include <cmath>
using namespace std;
int determinant(int matrix[10][10], int n) {
int det = 0;
int submatrix[10][10];
if (n == 2)
return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));
else {
for (int x = 0; x < n; x++) {
int subi = 0;
for (int i = 1; i < n; i++) {
int subj = 0;
for (int j = 0; j < n; j++) {
if (j == x) continue;
submatrix[subi][subj] = matrix[i][j];
subj++;
}
subi++;
}
det = det + (pow(-1, x) * matrix[0][x] * determinant(submatrix, n - 1));
}
}
return det;
}
int main() {
int n, d, i, j;
int matrix[10][10];
cout << "Nhập kích thước ma trận:\n";
cin >> n;
cout << "Nhập các phần tử ma trận:\n";
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
cin >> matrix[i][j];
cout << "Ma trận vừa nhập:" << endl;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
d = determinant(matrix, n);
cout << "Định thức của ma trận là " << d << endl;
if (d == 0)
cout << "Ma trận này không khả nghịch vì định thức bằng 0";
else
cout << "Ma trận này khả nghịch vì định thức khác 0";
return 0;
}
Kết quả đầu ra
Nhập kích thước ma trận: 3 Nhập các phần tử ma trận: 1 2 3 2 1 2 1 1 4 Ma trận vừa nhập: 1 2 3 2 1 2 1 1 4 Định thức của ma trận là -7 Ma trận này khả nghịch vì định thức khác 0
Trong chương trình, kích thước và phần tử ma trận nhập trong main(). Gọi hàm determinant(), kết quả lưu vào d. Nếu d == 0 thì không khả nghịch, ngược lại thì khả nghịch:
cout << "Nhập kích thước ma trận:\n";
cin >> n;
cout << "Nhập các phần tử ma trận:\n";
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
cin >> matrix[i][j];
cout << "Ma trận vừa nhập:" << endl;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
d = determinant(matrix, n);
cout << "Định thức của ma trận là " << d << endl;
if (d == 0)
cout << "Ma trận này không khả nghịch vì định thức bằng 0";
else
cout << "Ma trận này khả nghịch vì định thức khác 0";
Hàm determinant() tính đệ quy tương tự bài trước.