使用Infinity进行复数乘法的奇怪规则

时间:2015-10-18 16:12:43

标签: matlab

在MATLAB中有以下矛盾结果的解释吗?

/a1/b1[2]/c1

这是一个错误还是有任何解释?

更新

有趣的是MATLAB,Maple& Mathematica都给出了相同的结果。但编程语言遵循不同的哲学。检查例如C99附件G 5.1.6。 FORTRAN也是如此。备受推崇的GNU MPC库也提供了NaN + Inf * i。

我的结论是我们需要更好的和更好的复杂操作的统一语义,可能是复杂无穷大的单独概念。

1 个答案:

答案 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

Inf0分别乘以0i也会产生NaN

>> Inf*0+Inf*0i
ans =
   NaN