Given a matrix and the task is to check matrix is involutory matrix or not.
Involutory Matrix: A matrix is said to be involutory matrix if matrix multiply by itself return the identity matrix. Involutory matrix is the matrix that is its own inverse. The matrix A is said to be involutory matrix if A * A = I. Where I is the identity matrix.
Examples:
Input : mat[N][N] = {{1, 0, 0},
{0, -1, 0},
{0, 0, -1}}
Output : Involutory Matrix
Input : mat[N][N] = {{1, 0, 0},
{0, 1, 0},
{0, 0, 1}}
Output : Involutory Matrix
Implementation:
C++
// Program to implement involutory matrix.#include <bits/stdc++.h>#define N 3using 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 involutory matrix.bool InvolutoryMatrix(int mat[N][N]){ int res[N][N]; // multiply function call. multiply(mat, res); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j && res[i][j] != 1) return false; if (i != j && res[i][j] != 0) return false; } } return true;}// Driver function.int main(){ int mat[N][N] = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } }; // Function call. If function return // true then if part will execute otherwise // else part will execute. if (InvolutoryMatrix(mat)) cout << "Involutory Matrix"; else cout << "Not Involutory Matrix"; return 0;} |
Java
// Java Program to implement // involutory matrix.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 involutory matrix. static boolean InvolutoryMatrix(int mat[][]) { int res[][] = new int[N][N]; // multiply function call. multiply(mat, res); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j && res[i][j] != 1) return false; if (i != j && res[i][j] != 0) return false; } } return true; } // Driver function. public static void main (String[] args) { int mat[][] = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } }; // Function call. If function return // true then if part will execute // otherwise else part will execute. if (InvolutoryMatrix(mat)) System.out.println ( "Involutory Matrix"); else System.out.println ( "Not Involutory Matrix"); }}// This code is contributed by vt_m |
Python3
# Program to implement involutory matrix.N = 3;# Function for matrix multiplication.def multiply(mat, res): for i in range(N): for j in range(N): res[i][j] = 0; for k in range(N): res[i][j] += mat[i][k] * mat[k][j]; return res;# Function to check involutory matrix.def InvolutoryMatrix(mat): res=[[0 for i in range(N)] for j in range(N)]; # multiply function call. res = multiply(mat, res); for i in range(N): for j in range(N): if (i == j and res[i][j] != 1): return False; if (i != j and res[i][j] != 0): return False; return True;# Driver Codemat = [[1, 0, 0], [0, -1, 0], [0, 0, -1]];# Function call. If function # return true then if part # will execute otherwise# else part will execute.if (InvolutoryMatrix(mat)): print("Involutory Matrix");else: print("Not Involutory Matrix");# This code is contributed by mits |
C#
// C# Program to implement // involutory matrix.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 involutory matrix. static bool InvolutoryMatrix(int [,]mat) { int [,]res = new int[N,N]; // multiply function call. multiply(mat, res); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j && res[i,j] != 1) return false; if (i != j && res[i,j] != 0) return false; } } return true; } // Driver function. public static void Main () { int [,]mat = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } }; // Function call. If function return // true then if part will execute // otherwise else part will execute. if (InvolutoryMatrix(mat)) Console.WriteLine( "Involutory Matrix"); else Console.WriteLine( "Not Involutory Matrix"); }}// This code is contributed by vt_m |
PHP
<?php// Program to implement // involutory matrix.$N = 3;// Function for matrix// multiplication.function multiply($mat, $res){ global $N; for ($i = 0; $i < $N; $i++) { for ($j = 0; $j < $N; $j++) { $res[$i][$j] = 0; for ($k = 0; $k < $N; $k++) $res[$i][$j] += $mat[$i][$k] * $mat[$k][$j]; } } return $res;}// Function to check// involutory matrix.function InvolutoryMatrix($mat){ global $N; $res; for ($i = 0; $i < $N; $i++) for ($j = 0; $j < $N; $j++) $res[$i][$j] = 0; // multiply function call. $res = multiply($mat, $res); for ($i = 0; $i < $N; $i++) { for ($j = 0; $j < $N; $j++) { if ($i == $j && $res[$i][$j] != 1) return false; if ($i != $j && $res[$i][$j] != 0) return false; } } return true;}// Driver Code$mat = array(array(1, 0, 0), array(0, -1, 0), array(0, 0, -1));// Function call. If function // return true then if part // will execute otherwise// else part will execute.if (InvolutoryMatrix($mat)) echo "Involutory Matrix";else echo "Not Involutory Matrix";// This code is contributed by mits?> |
Javascript
<script>// Javascript to implement involutory matrix. 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]; } }}// Function to check involutory matrix.function InvolutoryMatrix(mat){ var res = Array(N).fill(0).map( x => Array(N).fill(0)); // Multiply function call. multiply(mat, res); for(var i = 0; i < N; i++) { for(var j = 0; j < N; j++) { if (i == j && res[i][j] != 1) return false; if (i != j && res[i][j] != 0) return false; } } return true;} // Driver codevar mat = [ [ 1, 0, 0 ], [ 0, -1, 0 ], [ 0, 0, -1 ] ];// Function call. If function return// true then if part will execute // otherwise else part will execute.if (InvolutoryMatrix(mat)) document.write("Involutory Matrix");else document.write("Not Involutory Matrix");// This code is contributed by 29AjayKumar </script> |
Involutory Matrix
Time Complexity: O(n3)
Auxiliary Space: O(n2), since n2 extra space has been taken.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

