- 首页 > it技术 > >
% Judge is a matrix is a strict diagonal dominance matrix
% and Transform the matrix into a strict diagonal dominance matrix
% input:
%A: the original matrix
% output:
%X: the strict diagonal dominance matrix that we transform
%t: the time that the transform process takesfunction [X t]= StrictDiagMatrix(A)
tic
%if the matrix is not a squre matrix,return error
if size(A, 1) ~= size(A, 2)
error('It is not a square matrix');
end
% get the size of the matrix and initial a matrix X to store the output matrix
n = size(A,1);
X = zeros(n,n);
% the record array is used to accord if all the row be set
record = zeros(n);
for i = 1 : n;
% get the absolute value of every element in every row
row_max = abs(A(i,:));
% find out the max element of the row,and use pos to accord its position in
[max_ele,pos] = max(row_max);
% check if the max_ele is the realy max element of the row,if not,return error
if max_ele <= sum(abs(A(i,:))) - max_ele
error('The matrix can not be transformed into a strictly diagonally dominant matrix');
end
% set the row pos of matrix X with A(i,:)
% accord this row has been set
X(pos,:) = A(i,:);
record(pos) = 1;
end
% if there exits any row that has not been set,return error
if sum(record) ~= n
error('The matrix can not be transformed into a strictly diagonally dominant matrix');
end
% output the time it take and output success
fprintf('The oringinal matrix input is:\n');
disp(A);
fprintf('The time it cost is:')
t = toc;
disp(t);
fprintf('It can be transformed to a strictly diagonally dominant matrix: \n');
end
推荐阅读