【问题标题】:python modulo infinitypython模无穷大
【发布时间】:2012-07-26 23:58:05
【问题描述】:

我有一个代码,包括涉及无穷大的模运算, 例如a%numpy.inf

我期望得到零,代码在我的旧电脑上运行良好。 但是,我现在在我的新电脑上安装了 python、numpy,操作给出了NaN

你知道如何让a%numpy.inf 为零吗?

【问题讨论】:

  • 为什么需要这个?在数学上,a % infinity 应该等于a(因为任何数除以无穷大的余数将是那个数)或NaN(因为除以无穷大是未定义的)。更改代码以处理这个新结果可能会更好。
  • @SamMussmann 不对,任何数除以无穷大的余数不会是那个数,2/infinity 是一个不确定性,所以,a%numpy.infNaN 是正确的。
  • @levi:为了方便,我们通常会扩展我们的数字字段以包含 +/-inf,并定义操作以提供最有用的结果。将 2/inf 定义为 0 并将 2 % inf 定义为 2 没有任何问题。类似的事情已经用浮点完成:例如,尝试在 Python 控制台输入 print 1e500, 2.0/1e500, 2.0 % 1e500
  • @DSM 是对的,但我的意思是“数学上”。
  • @levi:我的意思是,即使是“数学上”,也可以始终如一地做到这一点。它被称为extended real number line,R 与 +/- inf 和阶拓扑形成 R 的两点紧化。

标签: python modulo infinity


【解决方案1】:

一个很好的问题,尽管它很少受到关注。从数学上讲,评论者是对的:x mod inf 应该产生x,如in this answer to my earlier question at Math SE 所示。所以 Python 是正确的。如果您想返回零,则必须在进行计算之前使用简单的if-statement 测试无穷大。

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 2015-03-22
    • 2012-01-28
    • 2019-03-19
    • 2013-11-29
    • 1970-01-01
    • 2010-12-21
    • 2021-03-11
    • 1970-01-01
    相关资源
    最近更新 更多