Hello 天文

一块长条花园,怎样一步步变成正方形?

面积不变,调整两条边,亲眼看见“越猜越准”。

通用算法与数值计算

你有 159 平方米的地,想围成正方形。先随手定一条边,另一条边就用“面积 ÷ 边长”算出来。两条边不相等?取它们的平均值,再试一次。

打开互动课程 →

先猜一下

想把固定面积的长方形变成正方形,最后两条边应该?

查看答案与解释

一样长 — 正方形的两条相邻边相等,面积仍然是同一个数。

再把体验和科学连起来

把未知边长换成一个猜测

蓝点是猜测 x,灰点是 159/x。两者乘起来始终为 159,但往往还不是正方形。

长 × 宽 = x × (159/x) = 159

两条边向中间靠拢

若一条偏短,另一条就偏长。把它们取平均,作为下一次的边长猜测。

x新 = (x旧 + 159/x旧) / 2

重复同一条规则

改变修正次数,观察两点逐渐重合。初值不同会影响需要多少步,不改变这道题的正平方根。

12 → 12.625 → 12.6095297 → …

代回原问题检查

不只看最后两次数字像不像:把当前边长平方,看看与 159 还差多少。

残差 = x² − 159

把计算链展开

xₙ₊₁ = (xₙ + N/xₙ)/2 rₙ = xₙ² − N

N=159;从正数起步。先算 N/x,再与旧 x 取平均。残差接近零,表示平方接近目标,不等于所有位数都准确。

试一试

把初值从 12 换成 1,逐步增加修正次数。六步是否已经达到你想要的精度?

动手看一遍 →

符号不用背

x
当前的正边长猜测
159/x
保证矩形面积为 159 的另一条边
残差
把候选答案代回原方程后剩下的差

算法、精度与适用范围

第 5 章例 5.a,印刷页 48。这里只演示正数平方根的迭代,不能据此断言任意迭代都收敛。初值限定为正,最多展示六步,不把“步数用完”称为“达到精度”。独立验证使用二分求根、书中逐步值和残差;AA+ 的 AAKepler 是另一种迭代应用,但不是本例实现。

我的理解检查

每次调整后,花园面积变了吗?

没有,仍是 159 — 另一条边总用 159 除以第一条边,所以面积始终保持。

两条边分别为 12 和 13.25,取平均是多少?

12.625 — 把两数相加再除以 2。

画起来很像正方形,就能保证每一位小数都正确吗?

不能,还要检查误差 — 图只帮助建立直觉;足够精细的结果要用两边差值或代回方程检查。

先试一个答案,用规则修正它,再检查结果;这就是“逐次逼近”的直觉。

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

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