# Why do I get this error?

3 views (last 30 days)
Tianlan Yang on 18 Mar 2021
Edited: Adam Danz on 19 Mar 2021 Here is the function:
function [X1,X2,X] = msystem(A,B)
[~,n] = size(A);
[~,p] = size(B);
[L,U] = lu(A);
%solving for X1
X1 = inv(A)*B;
invL = [L eye(n)];
invL = rref(invL);
invL = invL(:,(n+1:n*2));
Y = invL*B;
invU = [U eye(n)];
invU = rref(invU);
invU = invU(:,(n+1:n*2));
X2 = invU * Y;
X = Y ./ U;
if (closetozeroroundoff(X1 - X2) == zeros(n,p))
disp('The solutions are the same')
else
disp('An error has been made on this exercise')
end
if (closetozeroroundoff(X1 - X) == zeros(n,p))
disp('The solutions are the same')
else
disp('An error has been made on this exercise')
end
end

Adam Danz on 18 Mar 2021
Edited: Adam Danz on 18 Mar 2021
closetozeroroundoff(), a 3rd party function not defined in the question, contains more than one input and one of the inputs is apparently named H or p. However, you're only providing 1 input so H or p is not defined in the function.
Adam Danz on 19 Mar 2021
Edited: Adam Danz on 19 Mar 2021
That's like asking how to make this cube look like a circle. A 4x3 matrix can never look like a 3x3 matrix without changing the data. You can remove the first row, second row, third row, or 4th row of the 4x3 matrix but now it's a completely different variable. m = (1:4)'.*ones(1,3)
m = 4×3
1 1 1 2 2 2 3 3 3 4 4 4
m(3,:) = [] % remove 3rd row
m = 3×3
1 1 1 2 2 2 4 4 4