Can someone solve this Error for me? Thank you

1 view (last 30 days)
Tianlan Yang
Tianlan Yang on 18 Mar 2021
Commented: KSSV on 18 Mar 2021
Here is the function:
function [L,U] = eluinv(A)
[~,n]=size(A);
[L,U] = lu(A);
format compact
if closetozeroroundoff(A,7) == closetozeroroundoff(L*U,7)
disp('Yes, I have got LU factorization')
end
if closetozeroroundoff(rref(U),7) == closetozeroroundoff(rref(A),7)
disp('U is an echelon form of A')
else
disp('Something is wrong')
end
if rank(A) ~= min(size(A))
sprintf('A is not invertible')
invA=[];
return
else
leye = [L eye(n)];
ueye = [U eye(n)];
invLech = rref(leye);
invUech = rref(ueye);
invL = invLech(:,(n+1):size(invLech,2));
invU = invUech(:,(n+1):size(invUech,2));
invA = invU*invL;
if isequal(closetozeroroundoff(invA-inv(A),7),zeros(size(A)))
disp('Yes, LU factorization works for calculating the inverses')
else
disp('LU factorization does not work for me?!')
end
end

Answers (1)

KSSV
KSSV on 18 Mar 2021
Replace lines:
leye = [L eye(n)];
ueye = [U eye(n)];
with:
leye = [L eye(size(L,1))];
ueye = [U eye(size(U,1))];
  2 Comments
KSSV
KSSV on 18 Mar 2021
This error is clear, if you want to find the inverse of a matrix, the matrix should be a square matrix.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!