লিনিয়ার অ্যালজেব্রা-এ একটি ম্যাট্রিক্স M[][] কে সিমেট্রিক ম্যাট্রিক্স বলা হয় যদি এবং কেবল যদি ম্যাট্রিক্সটির ট্রান্সপোজ ম্যাট্রিক্সটি নিজের সমান হয়। একটি ম্যাট্রিক্সের ট্রান্সপোজ হল যখন আমরা ম্যাট্রিক্সকে এর ডায়াগোনাল ওপর ফ্লিপ করি, ফলে এর রো এবং কলাম ইনডেক্স স্যুইচ হয়।
নিচে সিমেট্রিক ম্যাট্রিক্সের উদাহরণ দেওয়া আছে -
$$\begin{bmatrix} 1 & 4 & 7 \\ 4 & 5 & 6 \\ 7 & 6 & 9 \\ \end {bmatrix} \Rightarrow \begin{bmatrix} 1 & 4 & 7 \\ 4 & 5 & 6 \\ 7 & 6 & 9 \\ \end{bmatrix}$$
উপরের ম্যাট্রিক্সটি সিমেট্রিক ম্যাট্রিক্স। আমরা বাম পাশের ম্যাট্রিক্স নিলাম এবং এর ট্রান্সপোজ করলাম এবং ফলাফলটি একই আসেছে ম্যাট্রিক্সটি নিজের সমান।
উদাহরণ
ইনপুট: arr1[][n] = { { 1, 2, 3 }, { 2, 2, 4 }, { 3, 4, 1 } };
আউটপুট: its a symmetric matrix
ইনপুট: arr1[][n] = { { 1, 7, 3 }, { 2, 9, 5 }, { 4, 6, 8 } };
আউটপুট: its not a symmetric matrix
অ্যাপ্রোচ
আমরা এই ধাপ গুলো ফলো করতে পারি -
- ১. একটি ম্যাট্রিক্স নাও এবং এর ট্রান্সপোজ অন্য একটি ম্যাট্রিক্স-এ স্টোর করো।
- ২. ফলাফল ম্যাট্রিক্সটি ইনপুট ম্যাট্রিক্সের সাথে একই কিনা চেক করো।
অ্যালগরিদম
শুরু
স্টেপ ১ -> #define n 10 ম্যাক্রো ডিফাইন করো
স্টেপ ২ -> ম্যাট্রিক্সের ট্রান্সপোজ বের করার ফাংশন ডিক্লেয়ার করো
void transpose(int arr1[][n], int arr2[][n], int a)
লুপ i = 0 থেকে i < a এবং i++ পর্যন্ত
লুপ j = 0 থেকে j < a এবং j++ পর্যন্ত
arr2[i][j] = arr1[j][i] সেট করো
এন্ড
এন্ড
স্টেপ ৩ -> সিমেট্রিক কিনা চেক করার ফাংশন ডিক্লেয়ার করো
bool check(int arr1[][n], int a)
ভেরিয়েবল ডিক্লেয়ার করো int arr2[a][n]
transpose(arr1, arr2, a) কল করো
লুপ i = 0 থেকে i < a এবং i++ পর্যন্ত
লুপ j = 0 থেকে j < a এবং j++ পর্যন্ত
IF (arr1[i][j] != arr2[i][j])
return false
এন্ড
এন্ড
এন্ড
return true
স্টেপ ৪ -> main()-এ
ভেরিয়েবল ডিক্লেয়ার করো int arr1[][n] = { { 1, 2, 3 }, { 2, 2, 4 }, { 3, 4, 1 } }
IF (check(arr1, 3))
প্রিন্ট its a symmetric matrix
এলস
প্রিন্ট its not a symmetric matrix
স্টপ
উদাহরণ (C++ কোড)
#include <iostream>
#define n 10
using namespace std;
// ম্যাট্রিক্সের ট্রান্সপোজ বের করো
void transpose(int arr1[][n], int arr2[][n], int a) {
for (int i = 0; i < a; i++)
for (int j = 0; j < a; j++)
arr2[i][j] = arr1[j][i];
}
// সিমেট্রিক কিনা চেক করো
bool check(int arr1[][n], int a) {
int arr2[a][n];
transpose(arr1, arr2, a);
for (int i = 0; i < a; i++)
for (int j = 0; j < a; j++)
if (arr1[i][j] != arr2[i][j])
return false;
return true;
}
int main() {
int arr1[][n] = { { 1, 2, 3 },
{ 2, 2, 4 },
{ 3, 4, 1 } };
if (check(arr1, 3))
cout << "its a symmetric matrix";
else
cout << "its not a symmetric matrix";
return 0;
}
আউটপুট
its a symmetric matrix