Cho một ma trận M [r] [c], ‘r’ biểu thị số hàng và ‘c’ biểu thị số cột sao cho r =c tạo thành một ma trận vuông. Chúng ta phải kiểm tra xem ma trận vuông đã cho có phải là ma trận lý tưởng hay không hoặc không.
Ma trận Idempotent
Ma trận ‘M’ được gọi là Ma trận lý tưởng nếu và chỉ ma trận ‘M’ được nhân với chính nó trả về cùng một ma trận ‘M’, tức là M * M =M.
Giống như trong ví dụ cụ thể bên dưới -
Chúng ta có thể nói rằng ma trận trên được nhân với chính nó và trả về cùng một ma trận; do đó ma trận là I ma trận dempotent .
Ví dụ
Input: m[3][3] = { {2, -2, -4}, {-1, 3, 4}, {1, -2, -3}} Output: Idempotent Input: m[3][3] == { {3, 0, 0}, {0, 2, 0}, {0, 0, 3} } Output: Not Idempotent
Thuật toán
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 idempotent or not bool check(int arr[][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 (arr[i][j] != res[i][j]) return false End End End return true step 4 -> In main() declare int arr[size][size] = {{1, -1, -1}, {-1, 1, 1}, {1, -1, -1}} IF (check(arr)) Print its an idempotent matrix Else Print its not an idempotent matrix Stop
Ví dụ
#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 idempotent or not bool check(int arr[][size]){ int res[size][size]; multiply(arr, res); for (int i = 0; i < size; i++) for (int j = 0; j < size; j++) if (arr[i][j] != res[i][j]) return false; return true; } int main(){ int arr[size][size] = {{1, -1, -1}, {-1, 1, 1}, {1, -1, -1}}; if (check(arr)) cout << "its an idempotent matrix"; else cout << "its not an idempotent matrix"; return 0; }
Đầu ra
its an idempotent matrix