ম্যাট্রিক্সকে ম্যাট[সারি][কলাম] হিসাবে দেওয়া হলে, আমাদের কাজ হল প্রদত্ত ম্যাট্রিক্সটি একবচন কিনা তা ফাংশনের মাধ্যমে পরীক্ষা করা এবং ফলাফল প্রদর্শন করা।
একবচন ম্যাট্রিক্স হল একটি ম্যাট্রিক্স যার নির্ধারক শূন্য এবং যদি নির্ধারক শূন্য না হয় তাহলে ম্যাট্রিক্সটি অ-একবচন।
তাই ম্যাট্রিক্স একবচন নাকি অ-একবচন তা খুঁজে বের করতে আমাদের প্রথমে নির্ধারক গণনা করতে হবে। একটি ম্যাট্রিক্সের নির্ধারককে −
হিসাবে গণনা করা যেতে পারে$$M1[3][3]\:=\:\begin{bmatrix}a &b &c \\d &e &f \\g &h &i \end{bmatrix}$$
|m1| =a(e*i - f*h) - b(d*i - f*g) + c(d*h - e*g)
উদাহরণ
Input-: mat[3][3]= { 4, 10, 1 },
{ 0, 2, 3 },
{ 1, 4, -3 }
Output-: matrix is non-singular
Input-: mat[3][3]= { 0, 0, 0 },
{ 10, 20, 30 },
{ 1, 4, -3 }
Output-: matrix is singular
Since the entire first row is 0 the determinant will be zero only অ্যালগরিদম
Start
In function cofactor(int matrix[N][N], int matrix2[N][N], int p, int q, int n)
{
Step 1-> Declare and initialize i = 0, j = 0, row, col
Step 2-> Loop For row = 0 and row < n and row++
Loop For col = 0 and col < n and col++
If row != p && col != q then,
Set matrix2[i][j++] as matrix[row][col]
If j == n – 1 then,
Set j = 0
Increment i by 1
End for
End for
In function int check_singular(int matrix[N][N], int n)
Step 1-> Declare and initialize int D = 0;
Step 2-> If n == 1 then,
Return matrix[0][0]
Step 3-> Declare matrix2[N][N], sign = 1
Step 4-> Loop For f = 0 and f < n and f++
Call function cofactor(matrix, matrix2, 0, f, n)
Set D += sign * matrix[0][f] * check_singular(matrix2, n - 1)
Set sign = -sign
End loop
Step 5-> Return D
In main()
Step 1-> Declare and initialize a matrix[N][N]
Step 2-> If call check_singular(matrix, N) returns non 0 value then,
Print "Matrix is Singular "
Step 3-> Else
Print "Matrix is non-Singular "
Stop উদাহরণ
cofactorsint cofactor(int matrix[N][N], int matrix2[N][N], int p, int q, int n) খুঁজে পেতে#include <stdio.h>
#define N 4
//to find the cofactors
int cofactor(int matrix[N][N], int matrix2[N][N], int p, int q, int n) {
int i = 0, j = 0;
int row, col;
// Looping for each element of the matrix
for (row = 0; row < n; row++) {
for (col = 0; col < n; col++) {
// Copying into temporary matrix only
// those element which are not in given
// row and column
if (row != p && col != q) {
matrix2[i][j++] = matrix[row][col];
// Row is filled, so increase row
// index and reset col index
if (j == n - 1) {
j = 0;
i++;
}
}
}
}
return 0;
}
/* Recursive function to check if matrix[][] is singular or not. */
int check_singular(int matrix[N][N], int n) {
int D = 0; // Initialize result
// Base case : if matrix contains single element
if (n == 1)
return matrix[0][0];
int matrix2[N][N]; // To store cofactors
int sign = 1; // To store sign multiplier
// Iterate for each element of first row
for (int f = 0; f < n; f++) {
// Getting Cofactor of matrix[0][f]
cofactor(matrix, matrix2, 0, f, n);
D += sign * matrix[0][f] * check_singular(matrix2, n - 1);
// terms are to be added with alternate sign
sign = -sign;
}
return D;
}
// Driver program to test above functions
int main() {
int matrix[N][N] = { { 4, 10, 1 },
{ 0, 2, 3 },
{ 1, 4, -3 } };
if (check_singular(matrix, N))
printf("Matrix is Singular\n");
else
printf("Matrix is non-Singular\n");
return 0;
} আউটপুট
উপরের কোডটি চালালে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেMatrix is non-Singular