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 (최근 30일)
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
Tianlan Yang
Tianlan Yang 2021년 3월 18일
Hi , here is the closetozeroroundoff function:
function B=closetozeroroundoff(H,p)
H(abs(H)<10^-p)=0;
B=H;
end
Tianlan Yang
Tianlan Yang 2021년 3월 18일
편집: Tianlan Yang 2021년 3월 18일
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!

댓글을 달려면 로그인하십시오.

채택된 답변

KSSV
KSSV 2021년 3월 18일
Replace the line:
T = norm(rref(Y)- rref(U)) < tol;
with
T = (norm(rref(Y))- norm(rref(U))) < tol;

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by