Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình kiểm tra ma trận Idempotent trong C ++

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 trình kiểm tra ma trận Idempotent trong C ++

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