У вас есть ошибка в вашем if r == c == n
чеке.Выражение r == c == n
можно развернуть как (r == c) == n
, поэтому оно сравнивает значение logical(r == c)
с n
.
. Например:
>> 2 == 2 == 1
ans =
logical
1
Перепишите ваш чек как r == c && c == n
или isequal(r,c,n)
, и вы должны быть хорошими.
РЕДАКТИРОВАТЬ: Вы можете несколько упростить свою логику, скажем, например:
function x = cramers(A, b)
if diff(size(A)) && size(A,1) == n
D = det(A);
if D == 0
disp('Oops! Either, there are a family of solutions or no unique solution')
return
else
result = zeros(n, 1);
for i = 1:n
A_x = A;
A_x(:, i) = b;
Dx = det(A_x);
result(i,1) = Dx/D;
end
x = result;
end
else
disp('Dimension error')
return
end
end