একটি বর্গ ম্যাট্রিক্স ইনভার্টিবল (Invertible) বা নন-সিঙ্গুলার (Non-singular) হয় যদি এর ডিটারমিন্যান্ট শূন্য নয়। ডিটারমিন্যান্ট শূন্য হলে ম্যাট্রিক্স সিঙ্গুলার (Singular) এবং এর ইনভার্স নেই।
উদাহরণ
ম্যাট্রিক্স: 4 2 1 2 1 1 9 3 2 ডিটারমিন্যান্ট = 3 (নন-জিরো) → ইনভার্টিবল।
উদাহরণ কোড
#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 += pow(-1, x) * matrix[0][x] * determinant(submatrix, n - 1);
}
}
return det;
}
int main() {
int n, d, i, j;
int matrix[10][10];
cout << "ম্যাট্রিক্সের সাইজ দিন: ";
cin >> n;
cout << "এলিমেন্টগুলো দিন:\n";
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
cin >> matrix[i][j];
cout << "ইনপুট ম্যাট্রিক্স:\n";
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
d = determinant(matrix, n);
cout << "ডিটারমিন্যান্ট = " << d << endl;
if (d == 0)
cout << "এই ম্যাট্রিক্স ইনভার্টিবল নয় (ডিটারমিন্যান্ট শূন্য)";
else
cout << "এই ম্যাট্রিক্স ইনভার্টিবল (ডিটারমিন্যান্ট শূন্য নয়)";
return 0;
}
আউটপুট
ম্যাট্রিক্সের সাইজ দিন: 3 এলিমেন্টগুলো দিন: 1 2 3 2 1 2 1 1 4 ইনপুট ম্যাট্রিক্স: 1 2 3 2 1 2 1 1 4 ডিটারমিন্যান্ট = -7 এই ম্যাট্রিক্স ইনভার্টিবল (ডিটারমিন্যান্ট শূন্য নয়)
ব্যাখ্যা
প্রোগ্রামটি ডিটারমিন্যান্ট বের করে (পূর্বের آر্টিকেলের মতো রিকার্সিভ মেথড) এবং তারপর শূন্য চেক করে। ডিটারমিন্যান্ট ফাংশনটি পুনরাবৃত্তি করা হয়েছে। বাস্তবে কোড রিইউজের জন্য ফাংশন আলাদা ফাইলে রাখা ভালো।