একটি ম্যাট্রিক্স দেওয়া M[r][c], 'r' সারির সংখ্যা নির্দেশ করে এবং 'c' স্তম্ভের সংখ্যা নির্দেশ করে যেমন r =c একটি বর্গ ম্যাট্রিক্স গঠন করে। প্রদত্ত বর্গাকার ম্যাট্রিক্সটি একটি ইনভোলুটরি ম্যাট্রিক্স কিনা তা আমাদের পরীক্ষা করতে হবে বা না।
ইনভোলুটরি ম্যাট্রিক্স
একটি ম্যাট্রিক্সকে বলা হয় Involutory ম্যাট্রিক্স যদি এবং শুধুমাত্র যদি, যখন একটি ম্যাট্রিক্স নিজের সাথে গুণিত হয় এবং এর ফলাফল একটি পরিচয় ম্যাট্রিক্স হয়। একটি ম্যাট্রিক্স I হল আইডেন্টিটি ম্যাট্রিক্স যদি এবং শুধুমাত্র যদি এর প্রধান কর্ণ এক হয় এবং প্রধান কর্ণ ছাড়া অন্যান্য উপাদান শূন্য হয়। সুতরাং, আমরা বলতে পারি একটি ম্যাট্রিক্স হল ইনভোলুটরি ম্যাট্রিক্স যদি এবং শুধুমাত্র যদি M*M=I , যেখানে M কিছু ম্যাট্রিক্স এবং আমি একটি আইডেন্টিটি ম্যাট্রিক্স।
নিচের উদাহরণের মত -
এখানে যখন আমরা ম্যাট্রিক্সকে নিজের সাথে গুণ করি তখন ফলাফলটি হয় পরিচয় ম্যাট্রিক্স; তাই প্রদত্ত ম্যাট্রিক্স হল ইনভোলুটরি ম্যাট্রিক্স।
উদাহরণ
Input: { {1, 0, 0}, {0, -1, 0}, {0, 0, -1}} Output: yes Input: { {3, 0, 0}, {0, 2, 0}, {0, 0, 3} } Output: no
অ্যালগরিদম
Start Step 1 -> define macro as #define size 3 Step 2 -> declare function for matrix multiplication. void multiply(int arr[][size], int res[][size]) Loop For int i = 0 and i < size and i++ Loop For int j = 0 and j < size and j++ Set res[i][j] = 0 Loop For int k = 0 and k < size and k++ Set res[i][j] += arr[i][k] * arr[k][j] End End End Step 3 -> declare function to check involutory matrix or not bool check(int arr[size][size]) declare int res[size][size] Call multiply(arr, res) Loop For int i = 0 and i < size and i++ Loop For int j = 0 and j < size and j++ IF (i == j && res[i][j] != 1) return false End If (i != j && res[i][j] != 0) return false End End End Return true Step 4 -> In main() Declare int arr[size][size] = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } } If (check(arr)) Print its an involutory matrix Else Print its not an involutory matrix Stop
উদাহরণ
#include <bits/stdc++.h> #define size 3 using namespace std; // matrix multiplication. 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]; } } } // check involutory matrix or not. 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