एक मैट्रिक्स M[r][c] दिया गया है, 'r' पंक्तियों की संख्या दर्शाता है और 'c' कॉलम की संख्या दर्शाता है जैसे कि r = c एक स्क्वायर मैट्रिक्स बनाता है। हमें जांचना है कि दिया गया स्क्वायर मैट्रिक्स इन्वोल्यूटरी मैट्रिक्स है या नहीं।
इन्वोल्यूटरी मैट्रिक्स
एक मैट्रिक्स को इन्वोल्यूटरी मैट्रिक्स कहा जाता है यदि और केवल यदि, जब मैट्रिक्स को स्वयं से गुणा किया जाता है और उसका परिणाम एक आइडेंटिटी मैट्रिक्स होता है। एक मैट्रिक्स I आइडेंटिटी मैट्रिक्स है यदि और केवल यदि उसका मुख्य विकर्ण 1 है और मुख्य विकर्ण के अलावा अन्य एलिमेंट्स शून्य हैं। तो, हम कह सकते हैं कि एक मैट्रिक्स इन्वोल्यूटरी मैट्रिक्स है यदि और केवल यदि M*M=I, जहां M कोई मैट्रिक्स है और I एक आइडेंटिटी मैट्रिक्स है।
नीचे दिए गए उदाहरण की तरह -

यहां जब हमने मैट्रिक्स को स्वयं से गुणा किया तो परिणाम आइडेंटिटी मैट्रिक्स है; इसलिए दी गई मैट्रिक्स इन्वोल्यूटरी मैट्रिक्स है।
उदाहरण
इनपुट: { {1, 0, 0}, {0, -1, 0}, {0, 0, -1}} आउटपुट: हां इनपुट: { {3, 0, 0}, {0, 2, 0}, {0, 0, 3} } आउटपुट: नहींएल्गोरिदम
Start Step 1 -> मैक्रो डिफाइन करें #define size 3 Step 2 -> मैट्रिक्स मल्टीप्लिकेशन के लिए फंक्शन डिक्लेयर करें। void multiply(int arr[][size], int res[][size]) Loop int i = 0 से i < size और i++ तक Loop int j = 0 से j < size और j++ तक res[i][j] = 0 सेट करें Loop int k = 0 से k < size और k++ तक res[i][j] += arr[i][k] * arr[k][j] सेट करें End End End Step 3 -> इन्वोल्यूटरी मैट्रिक्स है या नहीं जांचने का फंक्शन डिक्लेयर करें bool check(int arr[size][size]) int res[size][size] डिक्लेयर करें multiply(arr, res) कॉल करें Loop int i = 0 से i < size और i++ तक Loop int j = 0 से j < size और 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 -> main() में int arr[size][size] = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } } डिक्लेयर करें If (check(arr)) यह एक इन्वोल्यूटरी मैट्रिक्स है प्रिंट करें Else यह इन्वोल्यूटरी मैट्रिक्स नहीं है प्रिंट करें Stopउदाहरण
#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