Trong đại số tuyến tính, ma trận M [] [] được cho là ma trận đối xứng nếu và chỉ khi chuyển vị của ma trận bằng chính ma trận. Chuyển vị của ma trận là khi chúng ta lật ma trận qua đường chéo của nó, kết quả là chuyển vị trí hàng và cột của ma trận.
Dưới đây là ví dụ về Ma trận đối xứng -
$$ \ 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} $$
Ma trận trên là ma trận đối xứng, chúng tôi đã lấy ma trận bên trái và hoán vị nó và kết quả giống như ma trận đó.
Ví dụ
Input: arr1[][n] = { { 1, 2, 3 }, { 2, 2, 4 }, { 3, 4, 1 } }; Output: its a symmetric matrix Input: arr1[][n] = { { 1, 7, 3 }, { 2, 9, 5 }, { 4, 6, 8 } }; Output: its not a symmetric matrix
Phương pháp tiếp cận
Chúng ta chỉ có thể làm theo các bước sau -
- 1. Lấy một ma trận và lưu trữ chuyển vị của nó trong ma trận khác.
- 2. Kiểm tra ma trận kết quả giống với ma trận đầu vào.
Thuật toán
Start Step 1 -> define macro as #define n 10 Step 2 -> declare function to find transporse of a matrix void transpose(int arr1[][n], int arr2[][n], int a) Loop For int i = 0 and i < a and i++ Loop For int j = 0 and j < a and j++ Set arr2[i][j] = arr1[j][i] End End Step 3 -> declare function to check symmetric or not bool check(int arr1[][n], int a) declare variable as int arr2[a][n] Call transpose(arr1, arr2, a) Loop For int i = 0 and i < a and i++ Loop For int j = 0 and j < a and j++ IF (arr1[i][j] != arr2[i][j]) return false End End End Return true Step 4 -> In main() Declare variable as int arr1[][n] = { { 1, 2, 3 }, { 2, 2, 4 }, { 3, 4, 1 } } IF (check(arr1, 3)) Print its a symmetric matrix Else Print its not a symmetric matrix Stop
Ví dụ
#include <iostream> #define n 10 using namespace std; //find transporse of a matrix 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]; } //check symmetric or not 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; }
Đầu ra
its a symmetric matrix