Hello 天文

两次称重几乎一样,相减就能知道少了多少吗?

先把两张读数记下来,再看舍入怎样改变那个很小的差。

通用算法与数值计算

你想知道一个袋子前后少了多少重量,于是称两次、把数字相减。如果记录时省掉了末尾几位,小变化就可能被抹掉。这里把书中的两个数借作千克读数,只做一个理想数字实验:不模拟真实秤的测量误差。

打开互动课程 →

先猜一下

两张称重记录都写 6.927 kg,能断定两次重量完全相等吗?

查看答案与解释

不能,末尾可能被舍掉了 — 记录相同只能说明保留的这些位相同;更细小的差异可能被舍入隐藏。

再把体验和科学连起来

先看看原始差值

取书中的两个数。它们都接近 7,可我们想知道的是它们之间约 0.00002 的间隔。

6.9273649 − 6.9273451 = 0.0000198

让输入先经过舍入

拖动保留位数。两个数分别被舍入,末尾丢掉的部分并不相同。

先舍入 a 与 b,再计算 a − b

把差值局部放大

上方是原始差值,下方是舍入后差值。输入看起来只差一点,结果的相对误差却可能很大。

相对误差 = |估计差值 − 原始差值| / 原始差值

显示位数不能找回信息

把 0.00001 写成 0.000010000000,不会恢复已经丢掉的输入。计算中保留精度,展示时再舍入。

更多小数 ≠ 更小误差

把计算链展开

Δ = a − b Δ舍入 = round(a) − round(b) 相对误差 = |Δ舍入 − Δ| / |Δ|

这里的 round 表示按所选有效数字舍入。两数相近时,分别舍入会丢失差值中的信息;Δ=0时不能用此相对误差式。

试一试

先选“只记四位”,再选“记六位”和“保留原数”。袋子的两次原始值一直不变,改变的只是你记下多少位。

动手看一遍 →

符号不用背

有效数字
从第一个非零数字起计数,区别于小数位数
a − b
本课关注的差值
相对误差
误差与原始差值之比,界面用百分数表示

算法、精度与适用范围

重现第 2 章印刷页 16 的十进制舍入例子。原始差值以整数比 198/10000000 表示,避免用同一浮点减法充当真值。滑块模拟十进制有效数字舍入,不模拟某种完整硬件浮点格式。本课没有对应 AA+ 专用函数,数值由整数十进制独立路线核验。图的横轴只画差值,不是原始数值的位置。 情景说明:借用 Meeus 第 2 章原数 6.9273649 与 6.9273451,并赋予 kg 作为教学情境;不是实际称重报告,也不宣称现实秤有这些有效位。这里只模拟十进制记录舍入,未加入仪器噪声或误差。

我的理解检查

把记录从四位改到六位,实验里什么发生了变化?

保留下来的数字 — 两个原始数不变;变化的是我们把它们记录得多细。

6.92736 kg 减去 6.92735 kg,是多少毫克?

10 mg — 差是 0.00001 kg。1 kg = 1,000,000 mg,所以是 10 mg。

一台真实秤显示很多小数,就一定测得同样准确吗?

不一定 — 显示位数不等于测量准确度;仪器校准、噪声和测量条件还会带来误差。本课只演示舍入。

小差值最怕输入先被舍粗了;多写几个零,补不回已经丢掉的信息。

Jean Meeus · Astronomical Algorithms, 2nd ed. · 第 2 章

通用算法与数值计算 · 全部互动课程