在MATLAB中有以下矛盾结果的解释吗?
/a1/b1[2]/c1
这是一个错误还是有任何解释?
更新:
有趣的是MATLAB,Maple& Mathematica都给出了相同的结果。但编程语言遵循不同的哲学。检查例如C99附件G 5.1.6。 FORTRAN也是如此。备受推崇的GNU MPC库也提供了NaN + Inf * i。
我的结论是我们需要更好的和更好的复杂操作的统一语义,可能是复杂无穷大的单独概念。
答案 0 :(得分:6)
这不是自相矛盾的行为,因为0+1i
是一个数字,尽管很复杂; Inf
因此没有分发。由于0+1i
的幅度不是0
,因此将其乘以Inf
会产生一定的行为;在这种情况下无限大。显然,算术是这样的,无穷大只是明确地复杂,但是它深入研究复杂平面中的无穷大,它本身就是interesting discussion。
如果您将数字更改为零幅度的数字,则您具有相同的(实际)行为:
>> Inf*(1+0i) % Real with magnitude 1
ans =
Inf
>> Inf*(0+1i) % Imaginary with magnitude 1
ans =
0.0000 + Infi
>> Inf*(1/sqrt(2)+1i/sqrt(2)) % Complex with magnitude 1
ans =
Inf + Infi
>> Inf*(0+0i) % Imaginary with magnitude 0
ans =
NaN
Inf
和0
分别乘以0i
也会产生NaN
。
>> Inf*0+Inf*0i
ans =
NaN