A square matrix A is diagonal if all the elements on the off-diagonal are zero. That is, A(i,j)=0 for i~=j.

In this posting, I show a MATLAB program that finds whether a square matrix is diagonal by using three different methods. These are academic ways to reinforce programming skills in a student.

The MATLAB program can be downloaded as a **Mfile ** (better to download it, as single quotes from the web-post do not translate correctly with the MATLAB editor). The **html** file showing the mfile and the command window output is also available.

%% 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(‘ ‘)

%% 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(‘ ‘)

%% 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

%% 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

%% 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

This post is brought to you by Holistic Numerical Methods: Numerical Methods for the STEM undergraduate at http://numericalmethods.eng.usf.edu.

An abridged (for low cost) book on *Numerical Methods with Applications* will be in print (includes problem sets, TOC, index) on December 10, 2008 and available at lulu storefront.

Subscribe to the blog via a reader or email to stay updated with this blog. **Let the information follow you**.