E3 · 出版卷 25

容差、浮点运算与可复现性

容差、舍入、稳定排序与审计输出

学习目标

  • 解释“容差、舍入、稳定排序与审计输出”的决定边界与证据边界。
  • 设计并实现相关钻孔数据或算法契约,不使用隐藏约定。
  • 区分硬发布质量门、诊断、解释与获授权审查。
  • 使用合成证据产出一份数值政策与跨运行环境可复现测试套件。

只有当学习者能够为数据模型、算法、测试与发布决定同时辩护时,本章才算完成。没有来源证据与可执行不变量的美观轨迹或整洁区间表仍然未经验证。

这是一部通用、机构中立的教程,与任何公司或个人没有关系。本章中的钻孔标识、坐标、深度、方向、区间、数值和审查事件全部为合成教学材料,不得用于实际业务决定。

决定情境

数值政策决定何时把计算量视为等价、如何进行边界分类,以及哪些差异必须保持可见。一个全局 epsilon 无法同时适用于米、角度、标识符和无量纲比率。容差属于具体比较与用途。舍入是显示或规范化规则,不能替代具备容差意识的几何判断。

选择转换前先写明预期用途、错误后果、所需证据与发布权限。同一来源可以适合探索显示,却不适合正式派生发布。适用性应针对版本化契约和用途评估,而不能永久贴在文件上。

核心概念

二进制浮点只能近似表示多数十进制小数。重复运算、不同求和顺序、融合运算和函数库选择都可能改变低位比特。因此,可复现性需要记录数值类型、运算顺序、可控时的舍入模式、算法版本与输出精度。确定性还要求使用完整决胜键稳定排序,否则相同或近似相同深度可能改变叠置与组合顺序。

接收观测、合格证据视图与派生结果应保持为不同对象。这样,更正证据或改变方法可以生成新结果而不改写历史。每个派生坐标或区间都同时回答一个科学问题与一个来源问题。

算法与数据模型

为深度相等、坐标相等、角度相等与报告格式分别定义命名比较政策。每项政策声明绝对容差、适用时的相对容差、单位、尺度限制,以及相等判断影响分类、拓扑还是发布。保留原始值与全精度计算值;舍入导出作为派生物。审计输出包含输入指纹、环境身份、规则版本与规范结果哈希。

在可行范围内,把转换定义为纯粹、可测试的运算。解析、语义验证、证据选择、数值计算与发布评估是不同阶段;每个阶段输出结构化结果,不依赖界面状态、文件名顺序或无文档默认值。

约束与不变量

| 不变量 | 可执行或审查测试 | | --- | --- | | 容差政策按量与用途分别定义。 | 拒绝或隔离违反该条件的记录,并记录精确受影响身份。 | | 原始值与全精度值予以保留。 | 在生成任何轨迹或区间派生结果前评估该条件。 | | 每次排序都具有确定性的完整决胜键。 | 保留接收证据,并为每次更正创建新版本。 | | 规范输出与科学等价性分开测试。 | 在审计输出中包含规则标识、观测值与解决状态。 |

不变量必须在导入、转换、处理、导出与重跑中持续成立。硬不变量失败时,不得生成表面有效的替代结果。诊断检查保留阈值、作用域与证据,只有经审查规则允许时才能触发更正。

定量推理

尺度相关比较可使用 |a-b|\le\epsilon_{abs}+\epsilon_{rel}\max(|a|,|b|),但各项必须具有相同单位。圆周角使用圆周距离;向量可使用方向夹角。稳定累计固定输入顺序,并在误差分析支持时使用补偿求和。单位向量范数、支撑守恒等不变量用容差验证;规范序列化输出则另行进行精确可复现比较。

每项指标都包含单位、适用时的分子与分母、排除项、比较政策与评估版本。若汇总可能掩盖局部失败,应分层报告。定量诊断支持决定,但不能推翻身份缺失、几何无效、冲突未解决或血缘断裂。

证据与不确定性

观测不确定性、插值不确定性、数值近似与元数据不确定性应保持分离。平滑轨迹可以在数值上非常精确,但在测站间距过大时仍缺乏约束;精确区间叠置在来源深度基准未知时仍可能不适用。考核结果应说明哪些不确定性属于现象、测量、算法和解释。

证据包应包含不可变接收记录、语义声明、验证发现、算法输入输出、测试结果、审查决定与指纹。矛盾证据继续保留。必需依赖无法解析时,返回显式未知、冲突或阻止状态,而不是选择最方便的值。

接口与存储

接口在数值旁传递身份、单位、坐标与深度参考、约定、值状态、版本与血缘。轨迹交换包含孔口与基准上下文、合格测站身份、算法身份、数值政策与输出坐标;区间交换包含支撑类型、边界约定与来源链接。结构化错误标识记录、字段、观测值、预期条件与规则。

权威接收证据与可复现派生物、可丢弃视图分开存储。索引、缓存与可视化可以改善访问,但不能成为角度约定、合格测站决定或区间血缘的唯一副本。导出往返应验证标识、精度、顺序与缺失状态在编码变化后仍然保留。

治理与审查

责任分配给角色,而不是具名机构或个人:证据保管角色、规则编写角色、实现维护角色、独立验证角色与发布审查角色。任何角色都不能抹去来源证据。规则与算法变更在影响发布前必须经过审查、版本化,并对固定回归夹具评估。

例外是显式决定,包含作用域、理由、证据、批准角色、受影响版本与复审触发条件。例外不会改写失败规则,也不会自动传播。承载教程的网站在该工作流中没有所有权或科学权威角色,只负责内容交付。

综合检查点

一份数值政策与跨运行环境可复现测试套件
一份数值政策与跨运行环境可复现测试套件

把本图视为从保留证据,经显式约定、确定性计算与验证,通向发布的推理地图。每条箭头代表声明关系或转换。把一份数值政策与跨运行环境可复现测试套件整合到持续演进的合成钻孔数据包,重跑此前全部夹具,并记录任何变化的假设。

合成算例

一个合成区间边界在一条路径中由 0.1+0.2 计算,另一条路径接收十进制 0.3。二进制精确相等失败,但命名深度政策把二者分类为重合,同时保留两个原值及其差。第二次运行反转贡献顺序,使组合样最低位发生变化;采用稳定身份排序与声明的累加器后,规范输出恢复确定性。

  1. 保留接收记录,在不更正的情况下声明预期决定。
  2. 解析身份、单位、约定与证据资格,并标记每个未解决项。
  3. 运行版本化算法与测试,同时保留中间诊断。
  4. 作出接受、拒绝或隔离决定,并展示独立审查者如何复现。

练习任务

针对一个合成夹具实现本章成果。夹具至少包含一个正常用例、一个边界用例、一个无效用例与一个证据未解决用例。保留接收夹具,并产出规范输入、验证发现、派生输出、处理清单与简短发布决定。

验收条件:

  • 规则所需的每个输入身份、单位与约定均显式声明。
  • 实现在稳定排序与声明数值政策下具有确定性。
  • 任何更正都不覆盖接收证据,也不把未知变成猜测值。
  • 所有硬失败均阻止受影响派生物,并保持机器可读。
  • 第二个实现或审查者可只依靠数据包复现结果。

提交一份数值政策与跨运行环境可复现测试套件、黄金与对抗夹具、精确发现项和限制说明。截图不能作为充分证据,因为它不标识输入版本、算法或规则配置。

常见失败模式

  • 对计算得到的十进制深度使用精确相等。
  • 对所有量使用同一个 epsilon。
  • 在轨迹累计前舍入输入。
  • 依赖数据库行顺序处理相同边界。

这些失败具有共同模式:用隐含便利替代证据。应定位假设最早进入的边界,恢复来源主张,把约定或规则显式化,重跑全部依赖派生物,并以替代方式更新受影响发布,而不是覆盖。

复习问题

  1. 为什么通用 epsilon 不合理?
  2. 稳定排序与可复现性有什么关系?
  3. 什么时候适合舍入?
  4. 为什么要把科学等价与输出完全相同分开测试?

每个答案都要指出支配不变量、评估所需证据、涉及的数值或语义政策,以及条件失败时的正确行为。

来源与延伸阅读