在Matlab上有一件我不喜欢的东西:它有时会过于聪明.例如,如果我有一个负平方根
a = -1; sqrt(a)
Run Code Online (Sandbox Code Playgroud)
Matlab不会抛出错误,而是静默地切换到复数.负对数也会发生同样的情况.这可能导致在更复杂的算法中难以发现错误.
类似的问题是Matlab"解决"静默非二次线性系统,如下例所示:
A=eye(3,2); b=ones(3,1); x = A \ b
Run Code Online (Sandbox Code Playgroud)
显然x不满足A*x==b(它解决了最小二乘问题).
是否有可能关闭"功能",或者至少让Matlab在这种情况下打印警告信息?在许多情况下,这确实会有很大帮助.