Python 中的机器 Epsilon

2024-02-08

我目前正在学习的一本手册(我是新手)说:

“相差小于机器 epsilon 的数字在数值上是相同的”

使用 Python,可以通过键入获得浮点值的机器 epsilon

eps = numpy.finfo(float).eps

现在,如果我检查

1 + eps/10 != 1

我得到了 False。

但如果我检查

0.1 + eps/10 != 0.1

我得到了True。

如果我将 eps 除以 100,我的后一个逻辑表达式将变为 False。 那么,机器 epsilon 是如何工作的呢? Python 文档只是说

“最小的可表示正数,使得 1.0 + eps != 1.0。eps 的类型是适当的浮点类型。”

先感谢您。


在这种情况下,你实际上不想要np.finfo。你想要的是np.spacing,它计算输入与下一个可以精确表示的最大数字之间的距离。

本质上,np.spacing计算任何给定数字的“eps”。它使用数字的数据类型(本机 python 浮点数是 64 位浮点数),因此np.float32 or np.float16将给出与 64 位浮点数不同的答案。

例如:

import numpy as np

print 'Float64, 1.0 -->', np.spacing(1.0)
print 'Float64, 1e12 -->', np.spacing(1e12)
print 'Float64, 1e-12 -->', np.spacing(1e-12)
print ''
print 'Float32, 1.0 -->', np.spacing(np.float32(1.0))
print 'Float32, 1e12 -->', np.spacing(np.float32(1e12))
print 'Float32, 1e-12 -->', np.spacing(np.float32(1e-12))

其产量:

Float64, 1.0 --> 2.22044604925e-16
Float64, 1e12 --> 0.0001220703125
Float64, 1e-12 --> 2.01948391737e-28

Float32, 1.0 --> 1.19209e-07
Float32, 1e12 --> 65536.0
Float32, 1e-12 --> 1.0842e-19
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的机器 Epsilon 的相关文章

随机推荐

  • CMake:CMAKE_REQUIRED_LIBRARIES 中的库顺序,用于在配置时测试最小程序

    我编写了这段小代码 以确保我的软件在必要时链接到 libatomic 通常只有在 Raspberry Pi 上才需要链接到 libatomic 目前 我使用的是 Raspberry Pi 4 带有 Raspbian Bullseye 64
  • SFINAE 与 std::enable_if 和 std::is_default_constructible 用于 libc++ 中的不完整类型

    当使用 SFINAE 检测模板化类型是否默认可构造时 我刚刚观察到 libc 的一个奇怪问题 以下是我能想到的一个最小示例 include
  • Rails、Puma、Sidekiq 如何计算总数据库连接数?

    我正进入 状态ActiveRecord ConnectionTimeoutError一天一次或两次 有人可以帮助我计算我的应用程序与数据库建立的连接数量吗 以及优化我的连接的建议 这是我的配置 AWS Database Mysql Vers
  • 在循环中创建变量和数据集? (右)

    这是我第一次尝试使用 R 构建函数 基本上我的预期目标如下 使用 RoogleVision 包与 Google Cloud Vision API 进行通信 该函数遍历目录中的图像 从 Google Vision 功能中检索每张图片的所需信息
  • 异步方法在调用或等待时抛出异常吗?

    当我调用异步方法并取回任务时 它会立即抛出还是会等到我等待任务 换句话说 这段代码能工作吗 或者我是否也必须将方法调用包装在 try 块中 Task task ThisMethodWillThrow try await task catch
  • 詹金斯管道作业的 Cobertura 代码覆盖率报告

    我正在使用 jenkins 的管道插件 我想为每次运行生成代码覆盖率报告并将其与管道用户界面一起显示 有没有一个插件可以用来做到这一点 例如 Cobertura 但它似乎不受管道支持 有一种方法可以添加管道步骤来发布覆盖率报告 但它不会显示
  • 多对多关系中的多个级联删除路径 (EF 4.1)

    表格 Shop Product Category 关系 Shop 1 lt gt n Categories Shop 1 lt gt n Products Categories n lt gt n Products 级联删除 Shop gt
  • 如何形成 cfhttp 调用来使用自定义 Web 服务 API

    我已经做了 11 年的 cf 开发人员 但很不好意思地说我在 Web 服务方面没有做过任何实质性的事情 如何形成 cfhttp 调用来使用供应商提供的以下 Web 服务 API 肥皂 1 2 要求 POST Portal internet
  • as.numeric 函数更改我的数据框中的值[重复]

    这个问题在这里已经有答案了 我有一列包含速度测量值 我需要将其更改为数字 以便我可以使用平均值和总和函数 然而 当我转换它们时 值会发生很大的变化 为什么是这样 这是我的数据最初的样子 这是数据框的结构 data frame 1899571
  • 如何在使用“layoutAttributesForElements”时对集合视图布局更改进行动画处理?

    我制作了一个自定义集合视图流布局 可以在 胶片带 和 列表 布局之间切换 带动画 但在向边缘单元添加一些奇特的动画后 切换动画中断了 这是目前的样子 没有进行这些更改 动画很流畅 对吧 这是当前的工作代码 完整的演示项目在这里 https
  • 找到两点之间角度的最快方法

    为了提高查找角度正弦 余弦的速度 我构建了一个参考表 而不是即时计算它们 我对从一点到另一点求角度也有同样的想法 我创建了一个包含 3600 个归一化向量的表 3600 10 十分之一度的精度 每当我需要知道从一个点到下一个点的角度时 我都
  • 从子片段访问父片段方法

    我正在尝试从以下位置访问Map分片至myfunction 位于父片段中Tabs 我尝试了以下行Tabs parentFragment Tabs getParentFragment 但是parentFragment 为空 我阅读了有关该主题的
  • 计算单元格中值的数量(空白除外)

    我有一个使用允许多项选择的下拉列表的单元格 如何计算选择的数量 我用过这个 LEN A2 LEN 替换 A2 1 但这并不能解释空白或没有选择的情况 如果没有选择 如何才能显示0 如果您的选择没有空格 则用逗号替换空格 修剪结果 然后按照上
  • 每次在嵌套条件 swift ios 中都会弹出 AlertController

    我定义了一个警报控制器 当用户名或密码不正确时 警报应该弹出 并且工作正常 但是当用户名和密码匹配时 尽管匹配 但每次登录时都会弹出 我想我没有以正确的方式定义嵌套条件 帮我对多重嵌套条件进行排序 登录代码 import UIKit imp
  • 如何使用 ReportViewer 设计将两个数据表添加到 Tablix

    我正在尝试使用 ReportViewer 将两个数据表添加到报告中的表 tablix 中 数据表 dt程序 名称 描述 dt改进 改进 我将有一个程序列表以及每个程序的改进列表 这是我正在寻找的示例 我不知道如何设计我的 ReportVie
  • 为什么将框架文件夹放在公共根目录之外更安全?

    为什么总是建议将框架文件放置在公共根目录之外 鉴于有时框架没有 ini or inc可以用浏览器打开的文件 好吧 肯定没什么可做的gained将框架源放置在 Web 根目录中 由于可以自由选择放置文件的位置 因此使用最小特权原则 http
  • 如何在 PhantomJS 中转到下一页进行抓取

    我正在尝试从具有多个页面的网站中获取多个元素 我目前正在使用 PhantomJS 来完成这项工作 我的代码几乎可以工作 但问题是我的代码在第一页上刮了两次 即使 根据日志 似乎我已经移到了第二页 这是代码 var page require
  • 获取jstree的已检查节点ID列表[重复]

    这个问题在这里已经有答案了 我是新来的jstree and jQuery并且在我的测试树中进行节点检查时遇到了一些问题 用户首先应勾选自己需要的节点 然后点击 概括 按钮以获取警报窗口中已检查节点的 ID 列表 我还想导出 ID 列表以供进
  • VB.NET 中的 WScript?

    这是我的程序中的一段代码 WSHShell WScript CreateObject WScript Shell 但由于某种原因 WScript 没有声明 我知道这段代码可以在 VBScript 中运行 但我正在尝试让它在 vb net 中
  • Python 中的机器 Epsilon

    我目前正在学习的一本手册 我是新手 说 相差小于机器 epsilon 的数字在数值上是相同的 使用 Python 可以通过键入获得浮点值的机器 epsilon eps numpy finfo float eps 现在 如果我检查 1 eps