Skip to main content

Check if a matrix is symmetric

In mathematics, a matrix is a rectangular array of numbers. A matrix is said to be symmetric if it is equal to its own transpose. Transpose means to flip the matrix over its diagonal axis.

In simpler words, a symmetric matrix is a square matrix where the numbers above and below the diagonal are reflections of each other. So if you were to draw a line down the diagonal, the numbers on one side would be the same as the numbers on the other side but flipped.

Symmetric matrices have some nice properties in mathematics, such as being easier to diagonalize and having real eigenvalues (which are important in many applications).

//C Program 
//Check if a matrix is symmetric
#include<stdio.h>

//indicating matrix size
#define SIZE 4 

//Display element of matrix
void show_data(int matrix[][SIZE])
{
  for (int i = 0; i < SIZE; ++i)
  {
    for (int j = 0; j < SIZE; ++j)
    {
      printf("%3d",matrix[i][j] );
    }
    printf("\n");
  }
  
}
//Check that if a given matrix is symmetric or not
void is_symmetric(int matrix[][SIZE])
{
  int status=1;

  for (int i = 0; i < SIZE && status == 1; ++i)
  {
    for (int j = 0; j < SIZE && status == 1; ++j)
    {
      //Compare matrix element
      if(matrix[i][j] != matrix[j][i])
      {
        status=0;
      }
    }
  }
  show_data(matrix);

  if(status==1)
  {
    printf("  Yes\n");
  }
  else
  {
    printf("  No\n");
  }
}
int main()
{
  //Matrix A
  int matrix1[][SIZE]= { 
    {7, 1, 5 ,6}, 
    { 1, 2, 4 ,4}, 
    { 5, 4, 1 ,1},
    { 6, 4, 1 ,6} 
  }; 
  
  is_symmetric(matrix1);
  
  //Matrix B
  int matrix2[][SIZE]= { 
    { 1, 2, 3 ,6}, 
    { 2, 5, 4 ,4}, 
    { 5, 4, 1 ,1},
    { 6, 4, 1 ,6} 
  };
  is_symmetric(matrix2); 
  
  return 0;
}


Output

  7  1  5  6
  1  2  4  4
  5  4  1  1
  6  4  1  6
  Yes
  1  2  3  6
  2  5  4  4
  5  4  1  1
  6  4  1  6
  No
/*
 C++ Program
 Check if a matrix is symmetric
*/
#include<iostream>
#define SIZE 4
using namespace std;

class MyMatrix {
  public:

    //Display element of matrix
    void show_data(int matrix[][SIZE], int row, int col) {
      for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
          cout << "  " << matrix[i][j];
        }
        cout << "\n";
      }
    }
  //Check that if a given matrix is symmetric or not
  void is_symmetric(int matrix[][SIZE]) {
    bool status = true;
    int row = SIZE;
    int col = row;
    for (int i = 0; i < row && status == true; ++i) {
      for (int j = 0; j < col && status == true; ++j) {
        //Compare matrix element

        if (matrix[i][j] != matrix[j][i]) {
          status = false;
        }
      }
    }
    this->show_data(matrix, row, col);
    if (status == true) {
      cout << "  Yes\n";
    } else {
      cout << "  No\n";
    }
  }
};
int main() {
  MyMatrix obj;
   //Matrix A
  int matrix1[][SIZE] = {
      {
        7,
        1,
        5,
        6
      },
      {
        1,
        2,
        4,
        4
      },
      {
        5,
        4,
        1,
        1
      },
      {
        6,
        4,
        1,
        6
      }
    };
  obj.is_symmetric(matrix1);
  //Matrix B
  int matrix2[][SIZE] = {
      {
        1,
        2,
        3,
        6
      },
      {
        2,
        5,
        4,
        4
      },
      {
        5,
        4,
        1,
        1
      },
      {
        6,
        4,
        1,
        6
      }
    };
  obj.is_symmetric(matrix2);
  return 0;
}

Output

  7  1  5  6
  1  2  4  4
  5  4  1  1
  6  4  1  6
  Yes
  1  2  3  6
  2  5  4  4
  5  4  1  1
  6  4  1  6
  No
/*
  Java Program
  Check if a matrix is symmetric
*/
public class MyMatrix {


  //Display element of matrix
  public void show_data(int [][]matrix,int row,int col)
  {
    for (int i = 0; i < row; ++i)
    {
      for (int j = 0; j < col; ++j)
      {
        System.out.print("  "+matrix[i][j] );
      }
      System.out.print("\n");
    }
    
  }
  //Check that if a given matrix is symmetric or not
  public void is_symmetric(int [][]matrix )
  {
    boolean status=true;

    int row = matrix.length;

    int col = matrix[0].length;

    if(row!=col)
    {
      status=false;
    }

    for (int i = 0; i < row && status == true; ++i)
    {
      for (int j = 0; j < col && status == true; ++j)
      {
        //Compare matrix element
        if(matrix[i][j] != matrix[j][i])
        {
          status=false;
        }
      }
    }
    show_data(matrix,row,col);

    if(status==true)
    {
      System.out.print("  Yes\n");
    }
    else
    {
      System.out.print("  No\n");
    }
  }

  public static void main(String[] args) {

    MyMatrix obj = new MyMatrix();

    //Matrix A
    int [][]matrix1= { 
      {7, 1, 5 ,6}, 
      { 1, 2, 4 ,4}, 
      { 5, 4, 1 ,1},
      { 6, 4, 1 ,6} 
    }; 
    
    obj.is_symmetric(matrix1);
    
    //Matrix B
    int [][]matrix2= { 
      { 1, 2, 3 ,6}, 
      { 2, 5, 4 ,4}, 
      { 5, 4, 1 ,1},
      { 6, 4, 1 ,6} 
    };
    obj.is_symmetric(matrix2); 
  }
}

Output

  7  1  5  6
  1  2  4  4
  5  4  1  1
  6  4  1  6
  Yes
  1  2  3  6
  2  5  4  4
  5  4  1  1
  6  4  1  6
  No
/*
  C# Program
  Check if a matrix is symmetric
*/
using System;
public class MyMatrix {


	//Display element of matrix
	public void show_data(int[,] matrix, int row, int col) {
		for (int i = 0; i < row; ++i) {
			for (int j = 0; j < col; ++j) {
				Console.Write("  " + matrix[i,j]);
			}
			Console.Write("\n");
		}

	}
	//Check that if a given matrix is symmetric or not
	public void is_symmetric(int[,] matrix) {
		Boolean status = true;

		int row = matrix.GetLength(0);

		int col = matrix.GetLength(1);

		if (row != col) {
			status = false;
		}

		for (int i = 0; i < row && status == true; ++i) {
			for (int j = 0; j < col && status == true; ++j) {
				//Compare matrix element
				if (matrix[i,j] != matrix[j,i]) {
					status = false;
				}
			}
		}
		show_data(matrix, row, col);

		if (status == true) {
			Console.Write("  Yes\n");
		} else {
			Console.Write("  No\n");
		}
	}

	public static void Main(String[] args) {

		MyMatrix obj = new MyMatrix();

		//Matrix A
		int[,] matrix1 = {
			{
				7,
				1,
				5,
				6
			},
			{
				1,
				2,
				4,
				4
			},
			{
				5,
				4,
				1,
				1
			},
			{
				6,
				4,
				1,
				6
			}
		};

		obj.is_symmetric(matrix1);

		//Matrix B
		int[,] matrix2 = {
			{
				1,
				2,
				3,
				6
			},
			{
				2,
				5,
				4,
				4
			},
			{
				5,
				4,
				1,
				1
			},
			{
				6,
				4,
				1,
				6
			}
		};
		obj.is_symmetric(matrix2);
	}
}

Output

  7  1  5  6
  1  2  4  4
  5  4  1  1
  6  4  1  6
  Yes
  1  2  3  6
  2  5  4  4
  5  4  1  1
  6  4  1  6
  No
<?php
/*
  Php Program
  Check if a matrix is symmetric
*/
class MyMatrix {
	//Display element of matrix

	public 	function show_data($matrix, $row, $col) {
		for ($i = 0; $i < $row; ++$i) {
			for ($j = 0; $j < $col; ++$j) {
				echo(" ". $matrix[$i][$j]);
			}
			echo("\n");
		}
	}
	//Check that if a given matrix is symmetric or not

	public 	function is_symmetric($matrix) {
		$status = true;
		$row = count($matrix);
		$col = count($matrix[0]);
		if ($row != $col) {
			$status = false;
		}
		for ($i = 0; $i < $row && $status == true; ++$i) {
			for ($j = 0; $j < $col && $status == true; ++$j) {
				//Compare matrix element

				if ($matrix[$i][$j] != $matrix[$j][$i]) {
					$status = false;
				}
			}
		}
		$this->show_data($matrix, $row, $col);
		if ($status == true) {
			echo(" Yes\n");
		} else {
			echo(" No\n");
		}
	}
};

function main() {
	$obj = new MyMatrix();
	//Matrix A
	$matrix1 = array(array(7, 1, 5, 6), array(1, 2, 4, 4), array(5, 4, 1, 1), array(6, 4, 1, 6));
	$obj->is_symmetric($matrix1);
	//Matrix B
	$matrix2 = array(array(1, 2, 3, 6), array(2, 5, 4, 4), array(5, 4, 1, 1), array(6, 4, 1, 6));
	$obj->is_symmetric($matrix2);
}
main();

Output

 7 1 5 6
 1 2 4 4
 5 4 1 1
 6 4 1 6
 Yes
 1 2 3 6
 2 5 4 4
 5 4 1 1
 6 4 1 6
 No
/*
 Node Js Program
 Check if a matrix is symmetric
*/
class MyMatrix {
	//Display element of matrix
	show_data(matrix, row, col) {
		for (var i = 0; i < row; ++i) {
			for (var j = 0; j < col; ++j) {
				process.stdout.write(" " + matrix[i][j]);
			}
			process.stdout.write("\n");
		}
	}
	//Check that if a given matrix is symmetric or not
	is_symmetric(matrix) {
		var status = true;
		var row = matrix.length;
		var col = matrix[0].length;
		if (row != col) {
			status = false;
		}
		for (var i = 0; i < row && status == true; ++i) {
			for (var j = 0; j < col && status == true; ++j) {
				//Compare matrix element

				if (matrix[i][j] != matrix[j][i]) {
					status = false;
				}
			}
		}
		this.show_data(matrix, row, col);
		if (status == true) {
			process.stdout.write(" Yes\n");
		} else {
			process.stdout.write(" No\n");
		}
	}
}

function main(args) {
	var obj = new MyMatrix();
	//Matrix A
	var matrix1 = [
		[7, 1, 5, 6],
		[1, 2, 4, 4],
		[5, 4, 1, 1],
		[6, 4, 1, 6]
	];
	obj.is_symmetric(matrix1);
	//Matrix B
	var matrix2 = [
		[1, 2, 3, 6],
		[2, 5, 4, 4],
		[5, 4, 1, 1],
		[6, 4, 1, 6]
	];
	obj.is_symmetric(matrix2);
}
main();

Output

 7 1 5 6
 1 2 4 4
 5 4 1 1
 6 4 1 6
 Yes
 1 2 3 6
 2 5 4 4
 5 4 1 1
 6 4 1 6
 No
# Python 3 Program
# Check if a matrix is symmetric
class MyMatrix :
  # Display element of matrix
  def show_data(self, matrix, row, col) :
    i = 0
    while (i < row) :
      j = 0
      while (j < col) :
        print(" ", matrix[i][j],end="")
        j += 1
      
      print(end="\n")
      i += 1
    
  
  # Check that if a given matrix is symmetric or not
  def is_symmetric(self, matrix) :
    status = True
    row = len(matrix)
    col = len(matrix[0])
    if (row != col) :
      status = False
    
    i = 0
    while (i < row and status == True) :
      j = 0
      while (j < col and status == True) :
        # Compare matrix element
        if (matrix[i][j] != matrix[j][i]) :
          status = False
        
        j += 1
      
      i += 1
    
    self.show_data(matrix, row, col)
    if (status == True) :
      print("  Yes")
    else :
      print("  No")
    
  

def main() :
  obj = MyMatrix()
  matrix1 = [
    [7, 1, 5, 6],
    [1, 2, 4, 4],
    [5, 4, 1, 1],
    [6, 4, 1, 6]
  ]
  obj.is_symmetric(matrix1)
  matrix2 = [
    [1, 2, 3, 6],
    [2, 5, 4, 4],
    [5, 4, 1, 1],
    [6, 4, 1, 6]
  ]
  obj.is_symmetric(matrix2)


if __name__ == "__main__":
  main()

Output

 7 1 5 6
 1 2 4 4
 5 4 1 1
 6 4 1 6
 Yes
 1 2 3 6
 2 5 4 4
 5 4 1 1
 6 4 1 6
 No
# Ruby Program 
# Check if a matrix is symmetric
class MyMatrix 
	# Display element of matrix
	def show_data(matrix, row, col) 
		i = 0
		while (i < row) 
			j = 0
			while (j < col) 
				print(" ", matrix[i][j])
				j += 1
			end
			print("\n")
			i += 1
		end
	end
	# Check that if a given matrix is symmetric or not
	def is_symmetric(matrix) 
		status = true
		row = matrix.length
		col = matrix[0].length
		if (row != col) 
			status = false
		end
		i = 0
		while (i < row and status == true) 
			j = 0
			while (j < col and status == true) 
				# Compare matrix element

				if (matrix[i][j] != matrix[j][i]) 
					status = false
				end
				j += 1
			end
			i += 1
		end
		self.show_data(matrix, row, col)
		if (status == true) 
			print(" Yes\n")
		else 
			print(" No\n")
		end
	end
end
def main() 
	obj = MyMatrix.new()
	matrix1 = [
		[7, 1, 5, 6],
		[1, 2, 4, 4],
		[5, 4, 1, 1],
		[6, 4, 1, 6]
	]
	obj.is_symmetric(matrix1)
	matrix2 = [
		[1, 2, 3, 6],
		[2, 5, 4, 4],
		[5, 4, 1, 1],
		[6, 4, 1, 6]
	]
	obj.is_symmetric(matrix2)
end
main()

Output

 7 1 5 6
 1 2 4 4
 5 4 1 1
 6 4 1 6
 Yes
 1 2 3 6
 2 5 4 4
 5 4 1 1
 6 4 1 6
 No
/*
 Scala Program
 Check if a matrix is symmetric
*/
class MyMatrix {
	//Display element of matrix
	def show_data(matrix: Array[Array[Int]], row: Int, col: Int): Unit = {
		var i: Int = 0;
		while (i < row) {
			var j: Int = 0;
			while (j < col) {
				print(" " + matrix(i)(j));
				j += 1;
			}
			print("\n");
			i += 1;
		}
	}
	//Check that if a given matrix is symmetric or not
	def is_symmetric(matrix: Array[Array[Int]]): Unit = {
		var status: Boolean = true;
		var row: Int = matrix.length;
		var col: Int = matrix(0).length;
		if (row != col) {
			status = false;
		}
		var i: Int = 0;
		while (i < row && status == true) {
			var j: Int = 0;
			while (j < col && status == true) {
				//Compare matrix element

				if (matrix(i)(j) != matrix(j)(i)) {
					status = false;
				}
				j += 1;
			}
			i += 1;
		}
		this.show_data(matrix, row, col);
		if (status == true) {
			print(" Yes\n");
		} else {
			print(" No\n");
		}
	}
}
object Main {
	def main(args: Array[String]): Unit = {
		var obj: MyMatrix = new MyMatrix();
		var matrix1: Array[Array[Int]] = Array(
			Array(7, 1, 5, 6),
			Array(1, 2, 4, 4),
			Array(5, 4, 1, 1),
			Array(6, 4, 1, 6));
  		obj.is_symmetric(matrix1);
		var matrix2: Array[Array[Int]] = Array(
			Array(1, 2, 3, 6),
			Array(2, 5, 4, 4),
			Array(5, 4, 1, 1),
			Array(6, 4, 1, 6));
  		obj.is_symmetric(matrix2);
	}
}

Output

 7 1 5 6
 1 2 4 4
 5 4 1 1
 6 4 1 6
 Yes
 1 2 3 6
 2 5 4 4
 5 4 1 1
 6 4 1 6
 No
/*
  Swift 4 Program
  Check if a matrix is symmetric
*/
class MyMatrix {
	//Display element of matrix
	func show_data(_ matrix: [[Int]], _ row: Int, _ col: Int) {
		var i: Int = 0;
		while (i < row) {
			var j: Int = 0;
			while (j < col) {
				print(" ", matrix[i][j],terminator:"");
				j += 1;
			}
			print(terminator:"\n");
			i += 1;
		}
	}
	//Check that if a given matrix is symmetric or not
	func is_symmetric(_ matrix: [[Int]]) {
		var status: Bool = true;
		let row: Int = matrix.count;
		let col: Int = matrix[0].count;
		if (row != col) {
			status = false;
		}
		var i: Int = 0;
		while (i < row && status == true) {
			var j: Int = 0;
			while (j < col && status == true) {
				//Compare matrix element

				if (matrix[i][j] != matrix[j][i]) {
					status = false;
				}
				j += 1;
			}
			i += 1;
		}
		self.show_data(matrix, row, col);
		if (status == true) {
			print("  Yes\n");
		} else {
			print("  No\n");
		}
	}
}
func main() {
	let obj: MyMatrix = MyMatrix();
	let matrix1: [[Int]] = [
		[7, 1, 5, 6],
		[1, 2, 4, 4],
		[5, 4, 1, 1],
		[6, 4, 1, 6]
	];
	obj.is_symmetric(matrix1);
	let matrix2: [[Int]] = [
		[1, 2, 3, 6],
		[2, 5, 4, 4],
		[5, 4, 1, 1],
		[6, 4, 1, 6]
	];
	obj.is_symmetric(matrix2);
}
main();

Output

  7  1  5  6
  1  2  4  4
  5  4  1  1
  6  4  1  6
  Yes

  1  2  3  6
  2  5  4  4
  5  4  1  1
  6  4  1  6
  No




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment