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!

조회 수: 1 (최근 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에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by