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

C++-এ ইনভোলিউটরি ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

একটি ম্যাট্রিক্স M[r][c] দেওয়া আছে, 'r' নির্দেশ করে রো সংখ্যা এবং 'c' নির্দেশ করে কলাম সংখ্যা যাতে r = c একটি স্কোয়ার ম্যাট্রিক্স বানাচ্ছে। আমাদের যাচাই করতে হবে দেওয়া স্কোয়ার ম্যাট্রিক্সটি একটি ইনভোলিউটরি ম্যাট্রিক্স কিনা।

ইনভোলিউটরি ম্যাট্রিক্স (Involutory Matrix)

একটি ম্যাট্রিক্সকে ইনভোলিউটরি ম্যাট্রিক্স বলা হয় যদি এবং কেবল যদি, যখন একটি ম্যাট্রিক্স নিজের সাথে গুণ করা হয় এবং তার ফলাফল একটি আইডেন্টিটি ম্যাট্রিক্স হয়। একটি ম্যাট্রিক্স I আইডেন্টিটি ম্যাট্রিক্স যদি এবং কেবল যদি এর মেইন ডায়াগোনাল ১ এবং মেইন ডায়াগোনাল ছাড়া অন্যান্য এলিমেন্ট গুলো শূন্য। তাই, আমরা বলতে পারি একটি ম্যাট্রিক্স ইনভোলিউটরি ম্যাট্রিক্স যদি এবং কেবল যদি M*M=I, যেখানে M হল কিছু ম্যাট্রিক্স এবং I হল একটি আইডেন্টিটি ম্যাট্রিক্স।

নিচের উদাহরণে দেখানো আছে -

C++-এ ইনভোলিউটরি ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

এখানে যখন আমরা ম্যাট্রিক্সকে নিজের সাথে গুণ করলাম ফলাফলটি আইডেন্টিটি ম্যাট্রিক্স আসলো; অতএব দিয়ে गये ম্যাট্রিক্সটি ইনভোলিউটরি ম্যাট্রিক্স।

উদাহরণ

ইনপুট: { {1, 0, 0}, {0, -1, 0}, {0, 0, -1} }
আউটপুট: yes

ইনপুট: { {3, 0, 0}, {0, 2, 0}, {0, 0, 3} }
আউটপুট: no

অ্যালগরিদম

শুরু
    স্টেপ ১ -> #define size 3 ম্যাক্রো ডিফাইন করো
    স্টেপ ২ -> ম্যাট্রিক্স মাল্টিপ্লিকেশনের ফাংশন ডিক্লেয়ার করো
        void multiply(int arr[][size], int res[][size])
        লুপ i = 0 থেকে i < size এবং i++ পর্যন্ত
            লুপ j = 0 থেকে j < size এবং j++ পর্যন্ত
                res[i][j] = 0 সেট করো
                লুপ k = 0 থেকে k < size এবং k++ পর্যন্ত
                    res[i][j] += arr[i][k] * arr[k][j] সেট করো
                এন্ড
            এন্ড
        এন্ড
    স্টেপ ৩ -> ইনভোলিউটরি ম্যাট্রিক্স কিনা চেক করার ফাংশন ডিক্লেয়ার করো
        bool check(int arr[size][size])
        int res[size][size] ডিক্লেয়ার করো
        multiply(arr, res) কল করো
        লুপ i = 0 থেকে i < size এবং i++ পর্যন্ত
            লুপ j = 0 থেকে j < size এবং j++ পর্যন্ত
                IF (i == j && res[i][j] != 1)
                    return false
                এন্ড
                IF (i != j && res[i][j] != 0)
                    return false
                এন্ড
            এন্ড
        এন্ড
        Return true
    স্টেপ ৪ -> main()-এ
        int arr[size][size] = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } } ডিক্লেয়ার করো
        IF (check(arr))
            প্রিন্ট its an involutory matrix
        এলস
            প্রিন্ট its not an involutory matrix
স্টপ

উদাহরণ (C++ কোড)

#include <bits/stdc++.h>
#define size 3
using namespace std;

// ম্যাট্রিক্স মাল্টিপ্লিকেশন
void multiply(int arr[][size], int res[][size]) {
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            res[i][j] = 0;
            for (int k = 0; k < size; k++)
                res[i][j] += arr[i][k] * arr[k][j];
        }
    }
}

// ইনভোলিউটরি ম্যাট্রিক্স কিনা চেক করো
bool check(int arr[size][size]) {
    int res[size][size];
    multiply(arr, res);
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            if (i == j && res[i][j] != 1)
                return false;
            if (i != j && res[i][j] != 0)
                return false;
        }
    }
    return true;
}

int main() {
    int arr[size][size] = { { 1, 0, 0 },
                            { 0, -1, 0 },
                            { 0, 0, -1 } };
    if (check(arr))
        cout << "its an involutory matrix";
    else
        cout << "its not an involutory matrix";
    return 0;
}

আউটপুট

its an involutory matrix
  1. C++-এ ম্যাট্রিক্স লোয়ার ট্রায়্যাঙ্গুলার কিনা তা যাচাই করার প্রোগ্রাম

  2. C++-এ আইডেমপটেন্ট ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

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

  4. C++ প্রোগ্রাম: অ্যাডজেসেন্সি ম্যাট্রিক্স বাস্তবায়ন