∫π每天一道数学题
← 返回海岛算经专题
海岛算经 · 第 3 讲 · 2026-08-24 · 约 12 分钟

第三讲 望深谷 —— 站在边上,怎么知道谷有多深?

站在悬崖边,想知道下面的谷有多深,下不去怎么办?刘徽用两把矩(曲尺),两次观测,就算出了四十一丈九尺的深度。累矩法的代表作。

原典

今有望深谷,偃矩岸上,令句高六尺。从句端望谷底,入下股九尺一寸。又设重矩于上,其矩间相去三丈。更从句端望谷底,入上股八尺五寸。问谷深几何?

答曰:四十一丈九尺。

术曰:置矩间,以上股乘之,为实。上、下股相减,馀为法,除之。所得以句高减之,即得谷深。


这道题说的是什么

前两道题是"往上看"——测海岛、测松树的高度。

这道题反过来了:往下看,测深度

你站在悬崖边上,下面是一道深不见底的峡谷。你想知道这谷有多深,但你下不去。怎么办?

刘徽说:用两把"矩"(就是直角曲尺、L 形的尺子)就能测出来。

怎么测?

  1. 在悬崖边放第一把矩,让矩的"勾"(短边)伸出崖边,勾高 6 尺
  2. 从矩的勾端往下看谷底,视线跟矩的"股"(长边)交于一点。这个交点距离勾的下端有 9 尺 1 寸——这叫"入下股"
  3. 往上挪 3 丈(30 尺),再放第二把矩
  4. 同样从勾端看谷底,视线跟上矩的股交于 8 尺 5 寸——这叫"入上股"

就这么两下,谷深就算出来了:四十一丈九尺,也就是 419 尺,差不多 140 米——搁现在也挺深的了。


示意图

望深谷累矩法示意图

两把矩上下叠放,分别从勾端望谷底,读取入股长度。

"矩"是什么东西?

"矩"是中国古代最基本的测量工具,就是一个直角拐尺。你可以把它想象成一个大号的三角板的直角。

  • :矩的短边,一般是竖直方向
  • :矩的长边,一般是水平方向
  • 句高:就是勾的长度。这里是 6 尺
  • 偃矩:就是把矩放倒、放在某个位置的意思

"偃矩岸上"——就是在悬崖边上放一把矩。"重矩"——就是再放一把矩。

前两道题用的工具叫"表"(直杆子),这道题开始用的工具叫"矩"(曲尺子)。工具不一样,但原理是一样的——都是相似三角形。

为什么测高用表、测深用矩?因为测高你可以往后退着测,测深你是站在边上往下看,用矩更方便。


古人的算法

公式很简洁:

谷深=d×b2b1b2a\text{谷深} = \dfrac{d \times b_2}{b_1 - b_2} - a

其中:aa = 句高,dd = 矩间,b1b_1 = 入下股,b2b_2 = 入上股。

代入数字:

  • 句高 a=6a = 6
  • 矩间 d=3d = 3=30= 30
  • 入下股 b1=9b_1 = 9 尺 1 寸 =9.1= 9.1
  • 入上股 b2=8b_2 = 8 尺 5 寸 =8.5= 8.5
  • 上下股相减 b1b2=9.18.5=0.6b_1 - b_2 = 9.1 - 8.5 = 0.6

谷深

H=30×8.50.66=2550.66=4256=419 尺H = \frac{30 \times 8.5}{0.6} - 6 = \frac{255}{0.6} - 6 = 425 - 6 = 419 \text{ 尺} =41 丈 9 尺= 41 \text{ 丈 } 9 \text{ 尺}

跟刘徽的答案完全一致!

你看,就这么几步:乘一乘、减一减、除一除,谷深就出来了。古代人拿两把尺子比划两下,就能算出几十丈深的峡谷,是不是很厉害?


现代数学视角:为什么往上挪一下就能测深度?

我们用相似三角形来推一推。

设:

  • 谷深为 HH
  • 句高 a=6a = 6
  • 矩间 d=30d = 30
  • 入下股 b1=9.1b_1 = 9.1
  • 入上股 b2=8.5b_2 = 8.5
  • 谷底到崖壁的水平距离为 LL

视线从矩的勾端出发,斜着到达谷底。这条斜线跟矩的股(水平边)的交点就是"入股"。

同一条视线的斜率(竖直变化 / 水平变化)是固定的,所以:

竖直落差水平距离=句高入股\frac{\text{竖直落差}}{\text{水平距离}} = \frac{\text{句高}}{\text{入股}}

从下矩看谷底: 竖直落差 = 谷深 + 句高 = H+aH + a

H+aL=ab1(1)\frac{H + a}{L} = \frac{a}{b_1} \qquad (1)

从上矩看谷底: 矩往上挪了 dd,所以竖直落差多了一个 dd

H+a+dL=ab2(2)\frac{H + a + d}{L} = \frac{a}{b_2} \qquad (2)

现在有两个方程,两个未知数(HHLL)。用 (2) 减 (1):

dL=a(1b21b1)=a(b1b2)b1b2\frac{d}{L} = a\left(\frac{1}{b_2} - \frac{1}{b_1}\right) = \frac{a(b_1 - b_2)}{b_1 b_2}

解出 LL

L=db1b2a(b1b2)L = \frac{d \cdot b_1 b_2}{a(b_1 - b_2)}

代入 (1):

H+a=ab1db1b2a(b1b2)=db2b1b2H + a = \frac{a}{b_1} \cdot \frac{d \cdot b_1 b_2}{a(b_1 - b_2)} = \frac{d \cdot b_2}{b_1 - b_2}

所以:

H=db2b1b2aH = \frac{d \cdot b_2}{b_1 - b_2} - a

哎,这就是刘徽的公式!完美对上了。

你看,两个方程,两个未知数,一消元就出来了。跟上一题的岛高公式,数学结构完全一样——都是"两个观测值的差做分母,间距乘小值做分子,再调整一个常数"。

这就是"重差术"的精髓:利用两次测量的差,来求那些你没法直接测的量。


跟高中数学的关系

这道题对应的高中知识点是:

相似三角形 + 解直角三角形

这道题如果放在高中解三角形那一章,就是一道典型的"测量不可到达深度"的问题。

而且,这道题其实能引出一个很重要的思想:间接测量

什么叫间接测量?就是你没法直接量的东西(谷深、楼高、河宽、日地距离……),通过测其他能测的量,用数学推算出来。

整个物理学、整个天文学,几乎都是靠间接测量建立起来的。

  • 地球半径怎么测的?两千年前埃拉托色尼用两个城市的太阳角度差算出来的。
  • 月球距离怎么测的?用视差法,其实跟重差术是一个道理。
  • 恒星距离怎么测的?还是视差法——地球绕太阳转,半年测一次,用差来算距离。

刘徽的重差术,本质上就是视差法。1700 年前的中国人,就已经在用现代天文学的基本方法了。


累矩法 vs 重表法

这道题叫"累矩法"——累就是叠起来的意思,两个矩叠在一起用。

上一题叫"重表法"——两个表前后立着用。

方法工具测量方向
重表法两根直杆(表)测高(往上看)
累矩法两把曲尺(矩)测深(往下看)

工具不一样,一个是直杆,一个是曲尺; 方向不一样,一个是测高,一个是测深; 但数学原理是完全一样的——都是两次观测、两次相似、消元求解。

刘徽把测高的叫"重表",测深的叫"累矩",名字不一样,道理是通的。这就是数学的"统一美"——看起来完全不同的问题,背后是同一个数学结构。


思考与拓展

  1. 这道题里,两个矩的距离(矩间)越大越好还是越小越好?为什么? (提示:想一想误差。如果入股读数差了 1 寸,矩间大的时候误差大还是矩间小的时候误差大?)

  2. 如果谷底不是平的,而是斜坡,这个方法还能用吗?测出来的结果会偏大还是偏小?

  3. 你能不能用"累矩法"的思路,设计一个测量楼高的方法(你在楼里,能上楼,但不能下楼)?

  4. 找一个生活中的"深度测量"场景(比如一口井、一个坑、一栋楼的室内层高),用两把尺子(或两本书),实际测一测,看准不准。


一句话总结

测高用两根杆,测深用两把尺。工具不同,原理相通——两次观测的"差",就是打开未知的钥匙。

— Y. · 2026-08-24