matlab - 无穷大复数乘法的奇怪规则

标签 matlab

在 MATLAB 中出现以下矛盾的结果有什么解释吗?

>> Inf*0
ans =
   NaN

>> Inf*(0+1i)
ans =
            0 +        Infi

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

更新:

有趣的是,MATLAB、Maple 和 Mathematica 都给出了相同的结果。但是编程语言遵循不同的哲学。例如检查 C99附录 G 5.1.6。 FORTRAN 也一样。受人尊敬GNU MPC库还提供 NaN + Inf*i。

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

最佳答案

这并不矛盾,因为 0+1i 是一个数字,虽然很复杂; Inf 因此不会分发。由于 0+1i 的大小不是 0,因此将它乘以 Inf 具有定义的行为;在这种情况下无限大。显然,该算法使得无穷大仅显式复杂,但它深入研究了复平面中的无穷大,即 interesting discussion。靠自己。

如果您将数字更改为零幅度的 1,则您具有相同的(真实)行为:

>> 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 分别乘以 00i 也会产生 NaN

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

关于matlab - 无穷大复数乘法的奇怪规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200151/

相关文章:

matlab - 如何将Matlab中绘图使用的字体设置为默认的Latex字体?

java - 如何从java在matlab中加载图像

matlab - 查找数组的等效分区

返回对应于 R 中唯一元素的重复元素的索引

linux - Matlab(Linux): mp4 video loading

matlab - 时域/频谱/DSP

matlab - 在 MATLAB R2010a 中实现 ADABoost

matlab - 如何在 matlab 中更改中线的颜色?

algorithm - 优先附件,Matlab 中的复杂网络

arrays - 如何在Matlab中从多维数组中获得积分?