# There is an error in my code

1 view (last 30 days)
Tianlan Yang on 18 Mar 2021
Commented: Cris LaPierre on 18 Mar 2021
Here is the function:
function [L,U] = eluinv(A)
[~,n]=size(A);
[L,U] = lu(A)
LU = roundingfixer(L*U);
if (A == LU)
disp('LU factorization is valid')
else
disp('A mistake was made somewhere.')
end
if (rank(U) == rank(A))
disp('U is an echelon form of A')
else
disp('A mistake was made somewhere.')
end
if (rank(A) == n)
% Use rref to row reduce the matrices
invL = [L eye(n)];
invU = [U eye(n)];
invL = rref(invL);
invU = rref(invU);
% Cut off the first half of the matrix
invL = invL(:,(n+1:n*2));
invU = invU(:,(n+1:n*2));
invA = roundingfixer(invU * invL)
P = roundingfixer(inv(A))
if (invA == P)
disp('LU works for calculating the inverse for A')
else
disp('Error in calculating the inverse for A')
end
else
sprintf('A is not invertible.')
invA = [];
end
end
roundingfixer.m:
function B = roundingfixer(A)
[m,n]=size(A);
A=closetozeroroundoff(A,7)
for i=1:m
for j=1:n
A(i,j) = round(A(i,j),8);
end
end
B=A;
end
##### 0 CommentsShow -1 older commentsHide -1 older comments

Sign in to comment.

### Answers (1)

Cris LaPierre on 18 Mar 2021
Edited: Cris LaPierre on 18 Mar 2021
Look at line 17: invL = [L eye(n)];
You are concatenating L and eye(n) horizontally. The error message is again telling you what the problem is. See this documentation page for more.
A = [1; 2]
A = 2×1
1 2
B = [3 4 5]
B = 1×3
3 4 5
C = [A B]
Error using horzcat
Dimensions of arrays being concatenated are not consistent.
##### 8 CommentsShow 7 older commentsHide 7 older comments
Cris LaPierre on 18 Mar 2021
I am not aware of a function that will do this for you. I believe you will need to write your code in a way to either ensure the two matrices have the same number of rows.

Sign in to comment.

### Categories

Find more on Programming 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!