কোন
বর্গ ম্যাট্রিক্স এর নির্ণায়ক বলতে ঐ ম্যাট্রিক্স এর মান কে বুঝায় । সি
প্রোগ্রামে রিকার্শন ব্যাবহার করে খুব সহজেই আমরা কোন বর্গ ম্যাট্রিক্স এর
নির্ণায়ক বের করতে পারি ।
আর্টিকেলটাকে আমি দুইটা মুল অংশে ভাগ করেছি । প্রথম অংশটুকুতে থিওরির
বর্ননা করা হবে । পরের অংশটুকুতে কোডিং নিয়ে আলোচনা করা হবে ।
থিওরি অংশ :
সবশেষে প্রাপ্ত ২×২ সাইজের ম্যাট্রিক্স এর মান আমরা খুব সহজেই বের করতে
পারব । সুতরাং 2×2 সাইজের এরে টাই হবে আমাদের রিকার্শন এর এর টার্মিনেশন
পয়েন্ট ।
সূত্র থেকে দেখা যাচ্ছে আমাদের প্রতিবারে একটা করে key ইলিমেন্ট সিলেক্ট
করতে হচ্ছে এবং ঐ key এর কলাম আর রো বাদ দিয়ে গঠিত বর্গম্যাট্রিক্স এ আবার
একই কাজ পুনরায় করতে হচ্ছে । এখান থেকে দেখা যাচ্ছে আমরা একই ধরনের কাজ
ততবার করছি যতক্ষন না পর্যন্ত আমরা 2×2 সাইজের বর্গ মআট্রিক্স পাচ্ছি ।
2×2 সাইজের ম্যাট্রিক্স পাওয়ার পরে আমরা
ইলিমেন্ট গুলো আবার একই ফাংশনে প্যারামিটার হিসেবে পাঠাবো । যদি কোন
প্যারামিটারে ম্যাট্রিক্স এর সাইজ 2×2 হয় তবে আমরা রিকারশন টার্মিনেশন করবো
কোডের অংশে আমরা প্রথমে একটা array নিয়েছি । এটার নাম দিয়েছি
secondaryMatrix এবং যার সাইজ Main matrix এর সমান । আমরা কি করবে মেইন
থেকে প্রাপ্ত সাব ম্যাট্রিক্স কে এখানে কপি করব । মানে সহগ এর রো কলাম বাদে
যে ম্যাট্রিক্স টা থাকে তাকে কাপি করব । এখানে k ভেরিয়েবল এর মাধ্যমে আমরা সহগ কলাম সিলেক্শন করেছি । সহগের রো প্রত্যেক কপি ম্যাট্রিক্সেই প্রথম রো ।
এর মাধ্যমে আমরা রিকার্সিভ ভাবে ফাংশন কল করেছি । প্যারামিটার সাপ্লাই
করেছি কপি করা ম্যাট্রিক্সটা এবং সোর্স ম্যাট্রিক্স এর সাইজ থেকে এক কম
আকার ।
Sharif Hasan – CSE, PUST
Aug 27,2019 05:03 PM
*/
#include<stdio.h>
#include<math.h>
int l=0;
long long det(int arr[][100],int n)
{
if(n==2)
{
int minimalDet = arr[0][0]*arr[1][1]-arr[0][1]*arr[1][0];
return minimalDet;
}
/*Part referance 1*/
int secondaryMatrix[100][100]={0};
int k,s=0,i,j;
long long sum=0;
for(k=0;k<n;k++)
{
for(i=1;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j!=k)
{
secondaryMatrix[i-1][s]=arr[i][j];
s++;
}
}
s=0;
}
int p = pow(-1,k+2)*arr[0][k];
/*End of part ref 1*/
sum+=(long long)p*det(secondaryMatrix,n-1);
}
return sum;
}
int main()
{
int arr[100][100];
int n,i,j;
printf(“Size of the matrix N: “);
scanf(“%d”,&n);
printf(“nElements of the NxN matrix: n”);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf(“%d”,&arr[i][j]);
}
}
printf(“%d”,det(arr,n));
return 0;
}
আরও বুঝার জন্য :
https://en.wikipedia.org/wiki/Determinant
https://www.mathsisfun.com/algebra/matrix-determinant.html
https://www.geeksforgeeks.org/determinant-of-a-matrix/