无穷大 计算机语言,数值编程语言能区分“最大有限数”和“无穷大”吗?

问题动机:

在我所知的标准数值语言中(例如,Matlab、Python-numpy等),如果你取一个适度大的数的指数,那么由于数值溢出,输出是无穷大的。如果这乘以0,就得到NaN。另外,这些步骤足够合理,但它们揭示了数学实现中的逻辑错误。溢出产生的第一个数是有限的,我们显然希望用这个大的有限数乘以0的结果是0。在

明确地:>>> import numpy as np

>>> np.exp(709)*0

0.0

>>> np.exp(710)*0

nan

我想我们可以在这里引入一个“最大有限值”(LFV)的概念,它具有以下特性:LFV是数值溢出的默认值,否则

四舍五入到无穷大

LFV<无穷大

任何显式数字<LFV(例如,如果LEV代表“最大显式值”,则LEV

(MATLAB详细信息:realmax<LFV)

LFV*0=0

另一方面,不应该简单地用LFV所描述的方式重新定义无穷大。它对0*infinity=0没有意义……适当地说,当前的标准实现在这个设置中产生NaN。此外,有时需要将数字初始化为无穷大,并且您希望任何数值运算的结果,甚至是生成LFV的操作的结果都严格小于初始化值(这对于某些逻辑语句很方便)。我确信在其他情况下,一个合适的无穷大是必要的——我的观点是无限应该而不是被简单地重新定义为具有上述LFV属性。在

问题:

我想知道是否有任何语言使用这种方案,以及这种方案是否有任何问题。这个问题在正确的数学中不会出现,因为数字的大小没有这些数值限制,但我认为在编程语言中实现一致的数学时,这是一个真正的问题。基本上,通过LFV,我想我想要一个关于最大显式值和无穷大LFV=(LEV,infinity)之间的开区间的简写,但是这个直觉可能是错误的。在

更新:在评论中,人们似乎有点反对我提出的问题的效用。我的问题并不是因为发生了许多相关的问题,而是因为同一问题经常出现在许多不同的环境中。从与数据分析人员的交谈中可以看出,在训练/拟合模型时,这常常会导致运行时错误。问题基本上是为什么这不被数字语言处理。从评论中,我基本上是在收集编写语言的人没有看到这样处理事情的用处。在我看来,当某些特定的问题对于使用一种语言的人来说发生得足够频繁时,以一种原则性的方式处理这些异常可能是有意义的,这样每个用户就不必这样做了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值