সংক্ষিপ্ত বিবরণ
এই প্রোগ্রামটি একটি বর্গ ম্যাট্রিক্সের সিদ্ধান্ত (determinant) বের করে সেটি সিঙ্গুলার (সিদ্ধান্ত শূন্য) কিনা তা নির্ধারণ করে।
সিদ্ধান্তের সূত্র (৩×৩ ম্যাট্রিক্স)
|M| = a(ei − fh) − b(di − fg) + c(dh − eg)
অ্যালগরিদম (কফ্যাক্টর পদ্ধতি)
- বেস কেস: ১×১ ম্যাট্রিক্সের সিদ্ধান্ত = একমাত্র উপাদান
- প্রথম সারি của প্রতিটি উপাদানের জন্য কফ্যাক্টর ম্যাট্রিক্স তৈরি করুন
- রিকার্সিভভাবে সিদ্ধান্ত হিসাব করুন: D += sign × matrix[0][f] × determinant(cofactor)
- সাইন প্রতিবার বদলান (+/−)
- সিদ্ধান্ত শূন্য হলে সিঙ্গুলার, অন্যথায় নন-সিঙ্গুলার
উদাহরণ
Input: {{4,10,1},{0,2,3},{1,4,-3}} → Output: Matrix is non-Singular
Input: {{0,0,0},{10,20,30},{1,4,-3}} → Output: Matrix is Singular
সি কোড
#include <stdio.h>
#define N 4
int cofactor(int matrix[N][N], int matrix2[N][N], int p, int q, int n) {
int i = 0, j = 0;
for (int row = 0; row < n; row++) {
for (int col = 0; col < n; col++) {
if (row != p && col != q) {
matrix2[i][j++] = matrix[row][col];
if (j == n - 1) { j = 0; i++; }
}
}
}
return 0;
}
int determinant(int matrix[N][N], int n) {
int D = 0;
if (n == 1) return matrix[0][0];
int matrix2[N][N];
int sign = 1;
for (int f = 0; f < n; f++) {
cofactor(matrix, matrix2, 0, f, n);
D += sign * matrix[0][f] * determinant(matrix2, n - 1);
sign = -sign;
}
return D;
}
int main() {
int matrix[N][N] = {{4,10,1},{0,2,3},{1,4,-3}};
if (determinant(matrix, 3))
printf("Matrix is Singular\n");
else
printf("Matrix is non-Singular\n");
return 0;
}
আউটপুট
Matrix is non-Singular