## IS A GIVEN SQUARE MATRIX A DIAGONAL MATRIX?

Language : Matlab 2007a Authors : Autar Kaw Last Revised : November 15, 2008 Abstract: This program shows you three ways of finding out if a square matrix is a diagonal matrix. A square matrix is diagonal if all the off-diagonal elements are zero, that is A(i,j)=0 for i~=j.

```clc
clear all
disp('This program shows you three ways of finding out')
disp('if a square matrix is a diagonal matrix.')
disp('A square matrix is diagonal if all the off-diagonal')
disp('elements are zero, that is A(i,j)=0 for i~=j.')
disp('  ')
```
```This program shows you three ways of finding out
if a square matrix is a diagonal matrix.
A square matrix is diagonal if all the off-diagonal
elements are zero, that is A(i,j)=0 for i~=j.

```

## INPUTS

The square matrix

```A=[1  0  0  0;0  3.4  0  0; 0  0  -4.5 0;0  0  0  0];
disp ('INPUTS')
disp('Here is the square matrix')
A
disp(' ')
```
```INPUTS
Here is the square matrix

A =

1.0000         0         0         0
0    3.4000         0         0
0         0   -4.5000         0
0         0         0         0

```

## FIRST SOLUTION

This is based on counting the number of zeros on off the diagonal. If this count is n^2-n then it is a diagonal matrix, otherwise it is not a diagonal matrix

```%size gives how many rows and columns in the A matrix
rowcol=size(A);
n=rowcol(1);
% count = how many zeros not on the diagonal
count=0;
for i=1:1:n
for j=1:1:n
if A(i,j)==0 & i~=j
count=count+1;
end
end
end
disp('FIRST WAY')
if count==n^2-n
disp('Matrix is diagonal')
else
disp('Matrix is NOT diagonal')
end
```
```FIRST WAY
Matrix is diagonal
```

## SECOND SOLUTION

This is based on finding if any of the off-diagonal elements are nozero. As soon as this condition is met, the matrix can be deemed not diagonal. If the condition is never met, the matrix is diagonal

```%size gives how many rows and columns in the A matrix
rowcol=size(A);
n=rowcol(1);
% flag = keeps track if it is diagonal or not
% flag = 1 if matrix is diagonal
% flag = 2 if matrix is not diagonal

% Assuming matrix is diagonal
flag=1;
for i=1:1:n
for j=1:1:n
% flag=2 if off-diagonal element is nonzero.
if A(i,j)~=0 & i~=j
flag=2;
end
end
end
disp('  ')
disp('SECOND WAY')
if flag==1
disp('Matrix is diagonal')
else
disp('Matrix is NOT diagonal')
end
```
```
SECOND WAY
Matrix is diagonal
```

## THIRD SOLUTION

This is based on finding if the sum of the absolute value of the off-diagonal elements is nonzero. If the sum is nonzero, the matrix is NOT diagonal. If the sum is zero, the matrix is diagonal

```%size gives how many rows and columns in the A matrix
rowcol=size(A);
n=rowcol(1);

% sum_off_diagonal= sum of absolute value of off-diagonal elements
sum_off_diagonal=0;
for i=1:1:n
for j=1:1:n
if i~=j
sum_off_diagonal=sum_off_diagonal+abs(A(i,j));
end
end
end

disp('  ')
disp('THIRD WAY')
if sum_off_diagonal==0
disp('Matrix is diagonal')
else
disp('Matrix is NOT diagonal')
end
```
```
THIRD WAY
Matrix is diagonal
```