Open In App

# Program to check Involutory Matrix

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 ``#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 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 Code``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)):``    ``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

 ``

## Javascript

 ``

Output

`Involutory Matrix`

Time Complexity: O(n3)
Auxiliary Space: O(n2), since n2 extra space has been taken.