Contents

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