Given a N * N matrix and the task is to check matrix is idempotent matrix or not.
Idempotent matrix: A matrix is said to be idempotent matrix if matrix multiplied by itself return the same matrix. The matrix M is said to be idempotent matrix if and only if M * M = M. In idempotent matrix M is a square matrix.
Examples:
Input : mat[][] = {{3, -6}, {1, -2}}; Output : Idempotent Matrix Input : mat[N][N] = {{2, -2, -4}, {-1, 3, 4}, {1, -2, -3}} Output : Idempotent Matrix.
Implementation:
C++
// Program to check given matrix // is idempotent matrix or not. #include<bits/stdc++.h> #define N 3 using namespace std;
// Function for matrix multiplication. void multiply( int mat[][N], int res[][N])
{ for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
{
res[i][j] = 0;
for ( int k = 0; k < N; k++)
res[i][j] += mat[i][k] * mat[k][j];
}
}
} // Function to check idempotent // property of matrix. bool checkIdempotent( int mat[][N])
{ // Calculate multiplication of matrix
// with itself and store it into res.
int res[N][N];
multiply(mat, res);
for ( int i = 0; i < N; i++)
for ( int j = 0; j < N; j++)
if (mat[i][j] != res[i][j])
return false ;
return true ;
} // Driver function. int main()
{ int mat[N][N] = {{2, -2, -4},
{-1, 3, 4},
{1, -2, -3}};
// checkIdempotent function call.
if (checkIdempotent(mat))
cout << "Idempotent Matrix" ;
else
cout << "Not Idempotent Matrix." ;
return 0;
} |
Java
// Java program to check given matrix // is idempotent matrix or not. import java.io.*;
class GFG
{ static int N = 3 ;
// Function for matrix multiplication.
static void multiply( int mat[][], int res[][])
{
for ( int i = 0 ; i < N; i++)
{
for ( int j = 0 ; j < N; j++)
{
res[i][j] = 0 ;
for ( int k = 0 ; k < N; k++)
res[i][j] += mat[i][k] * mat[k][j];
}
}
}
// Function to check idempotent
// property of matrix.
static boolean checkIdempotent( int mat[][])
{
// Calculate multiplication of matrix
// with itself and store it into res.
int res[][] = new int [N][N];
multiply(mat, res);
for ( int i = 0 ; i < N; i++)
{
for ( int j = 0 ; j < N; j++)
{
if (mat[i][j] != res[i][j])
return false ;
}
}
return true ;
}
// Driver code.
public static void main (String[] args)
{
int mat[][] = {{ 2 , - 2 , - 4 },
{- 1 , 3 , 4 },
{ 1 , - 2 , - 3 }};
// checkIdempotent function call.
if (checkIdempotent(mat))
System.out.println( "Idempotent Matrix" );
else
System.out.println( "Not Idempotent Matrix." );
}
} // This code is contributed by vt_m. |
Python 3
# Python Program to check given matrix # is idempotent matrix or not. import math
# Function for matrix multiplication. def multiply(mat, res):
N = len (mat)
for i in range ( 0 ,N):
for j in range ( 0 ,N):
res[i][j] = 0
for k in range ( 0 ,N):
res[i][j] + = mat[i][k] * mat[k][j]
# Function to check idempotent # property of matrix. def checkIdempotent(mat):
N = len (mat)
# Calculate multiplication of matrix
# with itself and store it into res.
res = [[ 0 ] * N for i in range ( 0 ,N)]
multiply(mat, res)
for i in range ( 0 ,N):
for j in range ( 0 ,N):
if (mat[i][j] ! = res[i][j]):
return False
return True
# driver Function mat = [ [ 2 , - 2 , - 4 ],
[ - 1 , 3 , 4 ],
[ 1 , - 2 , - 3 ] ]
# checkIdempotent function call. if (checkIdempotent(mat)):
print ( "Idempotent Matrix" )
else :
print ( "Not Idempotent Matrix." )
# This code is contributed by Gitanjali. |
C#
// C# program to check given matrix // is idempotent matrix or not. using System;
class GFG
{ static int N = 3;
// Function for matrix multiplication.
static void multiply( int [,]mat, int [,]res)
{
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
{
res[i,j] = 0;
for ( int k = 0; k < N; k++)
res[i,j] += mat[i,k] * mat[k,j];
}
}
}
// Function to check idempotent
// property of matrix.
static bool checkIdempotent( int [,]mat)
{
// Calculate multiplication of matrix
// with itself and store it into res.
int [,]res = new int [N,N];
multiply(mat, res);
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
{
if (mat[i,j] != res[i,j])
return false ;
}
}
return true ;
}
// Driver code
public static void Main ()
{
int [,]mat = {{2, -2, 4},
{-1, 3, 4},
{1, -2, -3}};
// checkIdempotent function call.
if (checkIdempotent(mat))
Console.WriteLine( "Idempotent Matrix" );
else
Console.WriteLine( "Not Idempotent Matrix." );
}
} // This code is contributed by vt_m. |
Javascript
<script> // Javascript program to check given matrix // is idempotent matrix or not. var N = 3;
// Function for matrix multiplication. function multiply(mat, res)
{ for ( var i = 0; i < N; i++)
{
for ( var j = 0; j < N; j++)
{
res[i][j] = 0;
for ( var k = 0; k < N; k++)
res[i][j] += mat[i][k] * mat[k][j];
}
}
return res;
} // Function to check idempotent // property of matrix. function checkIdempotent(mat)
{ // Calculate multiplication of matrix
// with itself and store it into res.
var res = Array.from(Array(N), ()=>Array(N).fill(0));
res = multiply(mat, res);
for ( var i = 0; i < N; i++)
{
for ( var j = 0; j < N; j++)
{
if (mat[i][j] != res[i][j])
return false ;
}
}
return true ;
} // Driver code var mat = [[2, -2, -4],
[-1, 3, 4],
[1, -2, -3]];
// checkIdempotent function call. if (checkIdempotent(mat))
document.write( "Idempotent Matrix" );
else document.write( "Not Idempotent Matrix." );
// This code is contributed by noob2000. </script> |
Output
Idempotent Matrix
Time Complexity: O(n3)
Auxiliary Space: O(n2), since n2 extra space has been taken.
Recommended Articles