Program to check Involutory Matrix
Last Updated :
19 Aug, 2022
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 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
<?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 code
var 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>
Time Complexity: O(n3)
Auxiliary Space: O(n2), since n2 extra space has been taken.
Similar Reads
Javascript Program to check Involutory Matrix Given a matrix, the task is to check matrix is an involutory matrix or not. Involutory Matrix: A matrix is said to be an involutory matrix if the matrix multiplied by itself returns the identity matrix. The involutory matrix is the matrix that is its inverse. The matrix A is said to be an involutory
2 min read
Program to check Identity Matrix Given a square matrix mat[][] of order n*n, the task is to check if it is an Identity Matrix.Identity Matrix: A square matrix is said to be an identity matrix if the elements of main diagonal are one and all other elements are zero. The identity Matrix is also known as the Unit Matrix. Examples: Inp
5 min read
Program to check idempotent matrix Given a square matrix mat[][] of order n*n, the task is to check if it is an Idempotent Matrix or not.Idempotent matrix: A matrix is said to be an idempotent matrix if the matrix multiplied by itself returns the same matrix, i.e. the matrix mat[][] is said to be an idempotent matrix if and only if M
5 min read
Javascript Program to check idempotent matrix Given an N * N matrix and the task is to check matrix is an idempotent matrix or not.Idempotent matrix: A matrix is said to be an idempotent matrix if the matrix multiplied by itself returns the same matrix. The matrix M is said to be an idempotent matrix if and only if M * M = M. In an idempotent m
2 min read
Program to check if matrix is lower triangular Given a square matrix and the task is to check the matrix is in lower triangular form or not. A square matrix is called lower triangular if all the entries above the main diagonal are zero. Examples: Input : mat[4][4] = {{1, 0, 0, 0}, {1, 4, 0, 0}, {4, 6, 2, 0}, {0, 4, 7, 6}}; Output : Matrix is in
4 min read