এলগরিদম
এই প্রোগ্রামটি একটি ম্যাট্রিক্সের বেসিস ও ডাইমেনশন খুঁজে বের করতে ডিটারমিন্যান্ট গণনা করে। যদি ডিটারমিন্যান্ট শূন্যेतর হয়, তবে ম্যাট্রিক্সের উপাদানগুলি ভেক্টর স্পেস Rn-এর একটি বেসিস গঠন করে।
ডিটারমিন্যান্ট ফাংশন:
- ইনপুট: ম্যাট্রিক্সের আকার
nএবংmatrix[10][10] - বেস কেস: যদি
n == 2হয়, তবে সরাসরি ফর্মুলা(a*d - b*c)ব্যবহার করে ডিটারমিন্যান্ট ফেরত দেয়। - রিকার্শিভ কেস: কফ্যাক্টর এক্সপ্যানশন (cofactor expansion) পদ্ধতিতে প্রথম সারির প্রতিটি উপাদানের জন্য সাব-ম্যাট্রিক্স তৈরি করে রিকার্শিভলি ডিটারমিন্যান্ট গণনা করে।
উদাহরণ কোড
#include <iostream>
#include <cmath>
using namespace std;
double determinant(int n, double matrix[10][10]) {
double submatrix[10][10];
if (n == 2) {
return (matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]);
}
double det = 0;
for (int c = 0; c < n; c++) {
int subi = 0;
for (int i = 1; i < n; i++) {
int subj = 0;
for (int j = 0; j < n; j++) {
if (j == c) continue;
submatrix[subi][subj] = matrix[i][j];
subj++;
}
subi++;
}
det += pow(-1, c) * matrix[0][c] * determinant(n - 1, submatrix);
}
return det;
}
int main() {
cout << "ম্যাট্রিক্সের আকার (n) লিখুন: ";
int n; cin >> n;
double matrix[10][10];
cout << "ম্যাট্রিক্সের উপাদানগুলি রো-ওয়াইজ লিখুন:\n";
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> matrix[i][j];
double det = determinant(n, matrix);
if (det != 0)
cout << "উপাদানগুলি R" << n << "-এর বেসিস গঠন করে (ডিটারমিন্যান্ট = " << det << ")\n";
else
cout << "উপাদানগুলি R" << n << "-এর বেসিস গঠন করে না (ডিটারমিন্যান্ট = 0)\n";
return 0;
}
আউটপুট উদাহরণ
ইনপুট: ম্যাট্রিক্সের আকার (n) লিখুন: 3 ম্যাট্রিক্সের উপাদানগুলি রো-ওয়াইজ লিখুন: 7 6 1 2 3 4 5 8 9 আউটপুট: উপাদানগুলি R3-এর বেসিস গঠন করে (ডিটারমিন্যান্ট = -126)
ব্যাখ্যা
প্রোগ্রামটি ব্যবহারকারী থেকে স্কোয়ার ম্যাট্রিক্সের আকার ও উপাদান গ্রহণ করে। ডিটারমিন্যান্ট শূন্য না হলে, ম্যাট্রিক্সের কলাম ভেক্টরগুলি লিনিয়ারলি স্বাধীন হয় এবং Rn-এর একটি বেসিস তৈরি করে। ডিটারমিন্যান্ট শূন্য হলে ভেক্টরগুলি লিনিয়ারলি ডিপেন্ডেন্ট হয়।