কম্পিউটার

C++ এ একটি ম্যাট্রিক্সের নির্ধারক?


একটি ম্যাট্রিক্সের নির্ধারক শুধুমাত্র একটি বর্গ ম্যাট্রিক্সের জন্য গণনা করা যেতে পারে প্রথম সারি কোফ্যাক্টরটিকে সংশ্লিষ্ট কোফ্যাক্টরের নির্ধারক দ্বারা গুণ করে এবং চূড়ান্ত ফলাফল পেতে বিকল্প চিহ্নের সাথে যোগ করে।

$$A =\begin{bmatrix}a &b &c\\d &e &f \\g &h &i \\ \end{bmatrix}|A| =a(ei-fh)-b(di-gf)+c(dh-eg)$$

প্রথমে আমাদের determinantOfMatrix(int ​​mat[N][N], int dimension) ফাংশন আছে যা ম্যাট্রিক্স এবং ম্যাট্রিক্সের মাত্রা মান নেয়। যদি ম্যাট্রিক্সটি শুধুমাত্র 1 মাত্রার হয় তবে এটি [0][0] ম্যাট্রিক্স মান প্রদান করে। এই শর্তটি একটি বেস শর্ত হিসাবেও ব্যবহৃত হয় যেহেতু আমরা প্রতিটি পুনরাবৃত্ত কলে মাত্রা হ্রাস করার সাথে আমাদের ম্যাট্রিক্সকে পুনরাবৃত্তভাবে পুনরাবৃত্তি করি।

int determinantOfMatrix(int mat[N][N], int dimension){
   int Det = 0;
   if (dimension == 1)
      return mat[0][0];

তারপরে আমরা cofactorMat[N][N] ঘোষণা করি যা প্রথম সারি পর্যন্ত cofactor(int mat[N][N], int temp[N][N], int p, int q, int n) ফাংশনে পাস করা হবে মাত্রার চেয়ে কম। ম্যাট্রিক্সের নির্ধারকটি লুপ পুনরাবৃত্তির জন্য প্রতিটিতে পর্যায়ক্রমে চিহ্ন সহ Det ভেরিয়েবলে সংরক্ষণ করা হয়। এই det তারপর প্রধান ফাংশন যেখানে এটি মুদ্রিত হয় ফিরে আসে.

int cofactorMat[N][N];
int sign = 1;
for (int firstRow = 0; firstRow < dimension; firstRow++){
   cofactor(mat, cofactorMat, 0, firstRow, dimension);
   Det += sign * mat[0][firstRow] * determinantOfMatrix(cofactorMat, dimension - 1);
   sign = -sign;
}
   return Det;
}

কোফ্যাক্টর(int mat[N][N], int temp[N][N], int p,int q, int n) ফাংশনটি ম্যাট্রিক্স, কোফ্যাক্টর ম্যাট্রিক্স, 0, প্রথম সারির মান এবং ম্যাট্রিক্সের মাত্রা হিসাবে নেয় পরামিতি মান। লুপের জন্য নেস্টেড তখন আমাদের ম্যাট্রিক্সের উপর পুনরাবৃত্তি করতে সাহায্য করে এবং যেখানে p এবং q মানগুলি যথাক্রমে সারি এবং কলামের মানের সমান নয়, সেই মানগুলি টেম্প ম্যাট্রিক্সে সংরক্ষণ করা হয়৷

void cofactor(int mat[N][N], int temp[N][N], int p,int q, int n){
   int i = 0, j = 0;
for (int row = 0; row < n; row++){
   for (int column = 0; column < n; column++){
      if (row != p && column != q){
         temp[i][j++] = mat[row][column];

সারিটি পূরণ হয়ে গেলে আমরা সারি সূচী বাড়াই এবং কল সূচকটি পুনরায় সেট করি।

if (j == n - 1){
   j = 0;
   i++;
}

অবশেষে আমাদের ডিসপ্লে (int mat[N][N], int row, int col) আছে যা ম্যাট্রিক্স এবং সারি এবং কলামের সংখ্যা নেয় এবং ম্যাট্রিক্সের উপরে 2d অ্যারে হিসাবে পুনরাবৃত্তি করে এবং প্রতিটি সারি এবং কলামে সেই মানগুলি প্রিন্ট করে।

void display(int mat[N][N], int row, int col){
   for (int i = 0; i < row; i++){
      for (int j = 0; j < col; j++)
         cout<<mat[i][j]<<" ";
         cout<<endl;
   }
   cout<<endl;
}

উদাহরণ

ম্যাট্রিক্সের নির্ধারক খুঁজে বের করার জন্য আমরা নিম্নলিখিত বাস্তবায়ন দেখি।

#include <iostream>
using namespace std;
const int N = 3;
void cofactor(int mat[N][N], int temp[N][N], int p,int q, int n){
   int i = 0, j = 0;
   for (int row = 0; row < n; row++){
      for (int column = 0; column < n; column++){
         if (row != p && column != q){
            temp[i][j++] = mat[row][column];
            if (j == n - 1){
                  j = 0;
                  i++;
            }
         }
      }
   }
}
int determinantOfMatrix(int mat[N][N], int dimension){
   int Det = 0;
   if (dimension == 1)
      return mat[0][0];
   int cofactorMat[N][N];
   int sign = 1;
   for (int firstRow = 0; firstRow < dimension; firstRow++){
      cofactor(mat, cofactorMat, 0, firstRow, dimension);
      Det += sign * mat[0][firstRow] * determinantOfMatrix(cofactorMat, dimension - 1);
      sign = -sign;
   }
   return Det;
}
void display(int mat[N][N], int row, int col){
   for (int i = 0; i < row; i++){
      for (int j = 0; j < col; j++)
         cout<<mat[i][j]<<" ";
         cout<<endl;
   }
   cout<<endl;
}
int main(){
   int mat[3][3] = {
      { 1, 0, 2},
      { 3, 0, 0},
      { 2, 1, 4}};
   cout<<"The matrix is "<<endl;
   display(mat,3,3);
   cout<<"Determinant of the matrix is "<<determinantOfMatrix(mat, N);
   return 0;
}

আউটপুট

উপরের কোডটি নিম্নলিখিত আউটপুট −

তৈরি করবে
The matrix is
1 0 2
3 0 0
2 1 4

Determinant of the matrix is 6

  1. C++ এ ম্যাট্রিক্সের জিগজ্যাগ (বা তির্যক) ট্রাভার্সাল

  2. C++ এ স্পাইরাল ম্যাট্রিক্স III

  3. C++-এ idempotent ম্যাট্রিক্স চেক করার প্রোগ্রাম

  4. একটি ম্যাট্রিক্স ইনভার্টেবল কিনা তা পরীক্ষা করার জন্য C++ প্রোগ্রাম