Error "Matrix dimensions must agree" in the line "T = norm(rref(Y)- rref(U)) < tol;" I used "A=[1 1 4;0 -4 0;-5 -1 -8; 2 3 -1] [L,U] = eluinv(A);" in my livescript. Thank you so much!

2 views (last 30 days)
Here is the function.m:
function [L,U] = eluinv(A)
[m,n] = size(A);
[L,U] = lu(A);
B = L*U;
C = closetozeroroundoff(B,7);
q = closetozeroroundoff(A,7);
if q == C
disp('Yes, I have got LU factorization');
end
Y = closetozeroroundoff(A,7);
tol = 1e-6;
T = norm(rref(Y)- rref(U)) < tol;
if T
disp('U is an echelon form of A');
else
disp('Something is wrong')
end
if rank(A) ~= n
sprintf('A is not invertible');
invA = [];
return
else
invL = eye(n)/rref(L);
invU = eye(n)/rref(U);
invA = invU * invL;
end
P = inv(A);
J = closetozeroroundoff(P,7);
Q = closetozeroroundoff(invA,7);
if J == Q
disp('Yes, LU factorization works for calculating the inverses');
else
disp('LU factorization doesnt work for me');
end
  4 Comments
Tianlan Yang
Tianlan Yang on 18 Mar 2021
Hi , here is the closetozeroroundoff function:
function B=closetozeroroundoff(H,p)
H(abs(H)<10^-p)=0;
B=H;
end
Tianlan Yang
Tianlan Yang on 18 Mar 2021
Edited: Tianlan Yang on 18 Mar 2021
Could you please show how to make it work? Because I try 3*4 matrix, it works, but when I try 4*3 matrix, it shows error. Thank you!

Sign in to comment.

Accepted Answer

KSSV
KSSV on 18 Mar 2021
Replace the line:
T = norm(rref(Y)- rref(U)) < tol;
with
T = (norm(rref(Y))- norm(rref(U))) < tol;

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!