Есть одна вещь, которая мне не нравится в Matlab: он иногда пытается быть слишком умным. Например, если у меня есть отрицательный квадратный корень, такой как
a = -1; sqrt(a)
Matlab не выдает ошибку, а тихо переключается на комплексные числа. То же самое происходит для отрицательных логарифмов. Это может привести к трудностям поиска ошибок в более сложном алгоритме.
Аналогичная проблема заключается в том, что Matlab "решает" молчащие неквадратичные линейные системы, как в следующем примере:
A=eye(3,2); b=ones(3,1); x = A \ b
Очевидно, x
не удовлетворяет A*x==b
(вместо этого решается задача наименьших квадратов).
Есть ли возможность отключить эти "функции" или хотя бы позволить Matlab напечатать предупреждающее сообщение в этом случае? Это действительно очень помогает во многих ситуациях.