AAE-NA-Labs/Direct Methods for Solving Linear Systems/back_substitution.m

24 lines
436 B
Matlab

% Argorithm 4: Back Substitution (Alg. 3.1.2)
function b = back_substitution(U,b)
[n, m] = size(U);
if n ~= m
error('Matrix is not squared!')
end
if length(b) ~= n
error('Vector b has wrong length!')
end
if det(U) == 0
error('Matrix is not nonsingular!')
end
% b(n, :) so that matrices are also accepted
b(n, :) = b(n, :)/U(n, n);
for i = n-1:-1:1
b(i, :) = (b(i, :) - U(i, i+1 : n)*b(i+1 : n, :))/U(i, i);
end
end