栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有哪些可能导致Python出现NaN的计算?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有哪些可能导致Python出现NaN的计算?

如果您在不使用浮点环境的情况下执行以下任何一项操作,则应该得到一个NaN,而您以前没有使用过NaN:

  • 0/0
    (在顶部和底部都签名)
  • inf/inf
    (在顶部和底部都签名)
  • inf - inf
    (-inf) + inf
    inf + (-inf)
    (-inf) - (-inf)
  • 0 * inf
    inf * 0
    (均在两个因素上均签字)
  • sqrt(x)
    什么时候
    x < 0
  • fmod(x, y)
    y = 0
    x
    无限时; 这
    fmod
    是浮点余数。

机器算术这些方面的规范参考是IEEE
754规范
。第7.1节描述了无效的操作异常,这是您将要获得NaN时引发的异常。IEEE
754中的“异常”意味着与编程语言上下文不同。

许多特殊的函数实现以其尝试实现的功能的奇异点来记录其行为。对于参见手册页

atan2
log
,例如。

您是在专门询问NumPy和SciPy。我不确定这是说“我正在询问有关NumPy幕后发生的机器算术”还是“我正在询问有关

eig()
内容”。我假设是前者,但是此答案的其余部分试图与NumPy中的更高级别函数建立模糊的联系。基本规则是:
如果函数的实现犯了上述错误之一,则将获得NaN。

例如

fft
,对于,
NaN
如果输入值约为
1e1010
或大于,则很容易获得;如果输入值约为
1e-1010
或小于,则有可能导致精度的无声损失。但是,除了真正可笑的扩展输入之外,您还可以放心使用
fft

对于涉及矩阵数学的事情,

inf - inf
如果您的人数众多
矩阵病情严重,NaN可能会出现(通常是通过路线)。关于如何通过数值线性代数进行运算的完整讨论太长了,无法解决。我建议在几个月的时间里翻阅一本数字线性代数书(Trefethen和Bau很流行)。

在编写和调试“不应”生成NaN的代码时,我发现有用的一件事是告诉计算机捕获是否发生NaN。在GNU C中,我这样做:

#include <fenv.h>feenableexcept(FE_INVALID);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号