কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: ম্যাট্রিক্সের বেসিস ও ডাইমেনশন নির্ণয়

এলগরিদম

এই প্রোগ্রামটি একটি ম্যাট্রিক্সের বেসিস ও ডাইমেনশন খুঁজে বের করতে ডিটারমিন্যান্ট গণনা করে। যদি ডিটারমিন্যান্ট শূন্যेतর হয়, তবে ম্যাট্রিক্সের উপাদানগুলি ভেক্টর স্পেস 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-এর একটি বেসিস তৈরি করে। ডিটারমিন্যান্ট শূন্য হলে ভেক্টরগুলি লিনিয়ারলি ডিপেন্ডেন্ট হয়।

  1. C++-এ ডায়াগোনাল এবং স্ক্যালার ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

  2. C++ প্রোগ্রাম: LCM (লঘুতম সাধারণ গুণিতক) নির্ণয়

  3. C++ প্রোগ্রাম: GCD (মহত্তম সাধারণ ভাজক) নির্ণয়

  4. C++ প্রোগ্রাম: ভাগফল (Quotient) এবং ভাগশেষ (Remainder) নির্ণয়