Contents

IS A GIVEN SQUARE MATRIX STRICTLY DIAGONALLY DOMINANT?

Language : Matlab 2007a Authors : Autar Kaw Last Revised : November 25, 2008 Abstract: This program shows you two ways of finding out if a square matrix is diagonally dominant. A square matrix is diagonally dominant if for all rows the absolute value of the diagonal element in a row is strictly greater than than the sum of absolute value of the rest of the elements in that row

clc
clear all
disp('This program shows you two ways of finding out')
disp('if a square matrix is diagonally dominant. A square matrix is')
disp('diagonally dominant if for all rows the absolute value of the')
disp('diagonal element in a row is strictly greater than than the sum')
disp('of absolute value of the rest of the elements in that row')
disp('  ')
This program shows you two ways of finding out
if a square matrix is diagonally dominant. A square matrix is
diagonally dominant if for all rows the absolute value of the
diagonal element in a row is strictly greater than than the sum
of absolute value of the rest of the elements in that row
  

INPUTS

The square matrix

A=[-12  1  -7  2;1  3.4  1.1  1.1; 1  0  -4.5 0;10  1  1  10];
disp ('INPUTS')
disp('Here is the square matrix')
A
disp(' ')
INPUTS
Here is the square matrix

A =

  -12.0000    1.0000   -7.0000    2.0000
    1.0000    3.4000    1.1000    1.1000
    1.0000         0   -4.5000         0
   10.0000    1.0000    1.0000   10.0000

 

FIRST SOLUTION

This is based on finding for how many rows the condition the absolute value of the diagonal element in a row is strictly greater than than the sum of absolute value of the rest of the elements in that row.

%size gives how many rows and columns in the A matrix
rowcol=size(A);
n=rowcol(1);
% count = for how many rows is the inequality met that
% the absolute value of the diagonal element in a row is
% strictly greater than than the sum of absolute value
% of the rest of the elements in that row
count=0;
for i=1:1:n
    sumrow=0;
    for j=1:1:n
        if i~=j
            sumrow=sumrow+abs(A(i,j));
        end
    end
    if abs(A(i,i))>sumrow
        count=count+1;
    end
end
disp('FIRST WAY')
if count==n
    disp('Matrix is strictly diagonal dominant')
else
    disp('Matrix is NOT strictly diagonal dominant')
end
FIRST WAY
Matrix is NOT strictly diagonal dominant

SECOND SOLUTION

This is based on finding for if for any row the condition the absolute value of the diagonal element in a row is strictly greater than than the sum of absolute value of the rest of the elements in that row is NOT met

%size gives how many rows and columns in the A matrix
rowcol=size(A);
n=rowcol(1);
% flag = keeps track if the condition is not met
% flag = 1 if matrix is strictly diagonally dominant
% flag = 2 if matrix is not strictly diagonally dominant

% Assuming matrix is strictly diagonally dominant
flag=1;
for i=1:1:n
    sumrow=0;
    for j=1:1:n
        if i~=j
            sumrow=sumrow+abs(A(i,j));
        end
    end
    % As soon as the condition is not met, it is not a strictly
    % diagonally dominant matrix
    if abs(A(i,i))<=sumrow
        flag=2;
        break;
    end
end
disp('  ')
disp('SECOND WAY')
if flag==1
    disp('Matrix is strictly diagonal dominant')
else
    disp('Matrix is NOT strictly diagonal dominant')
end
  
SECOND WAY
Matrix is NOT strictly diagonal dominant