∫π每天一道数学题
← 返回数书九章
数书九章 · 第 33 讲 · 2026-11-16 · 约 12 分钟

土方工程——挖掘与填筑的体积计算

秦九韶用累积法和割补术解决挖土方、填地基的体积问题,是古代土木工程的核心算法。

原典

今有城池,周一千二百步,高二百四十步,上广一百二十步,下广二百四十步。造城用夫一千二百人,人日掘土八尺。问几何日造完?

答曰:九十日。

术曰:以周一千二百步,乘高二百四十步,得二十四万步为实。以上广一百二十步,下广二百四十步,和为法。法除实得城体积。以一人日掘八尺,积千人,并为一功,计其日数。

——秦九韶《数书九章》营建类

这道题说的是什么

南宋修筑城池,需要计算土方的体积和人工投入。这是一道典型的工程量与工期计算问题。

城池截面是一个梯形——上底窄、下底宽,这是古代城墙的典型结构。知道城墙的总长度、高度、上下宽度,就可以算出总体积;再知道每人每天的劳动效率,就能推算需要多少天完成。

秦九韶的答案是九十日——大约三个月,说明这是一次较大的城防工程。

示意图

土方工程示意图

城墙截面:梯形。上广120步,下广240步,高240步。

古人的算法

城墙体积——梯形面积乘以长度

城墙的横截面是梯形。梯形面积公式:

S=(a+b)×h2(1)S = \frac{(a + b) \times h}{2} \qquad (1)

其中 aa 是上广(上底),bb 是下广(下底),hh 是高。

代入数据:a=120a = 120 步,b=240b = 240 步,h=240h = 240 步。

S=(120+240)×2402=360×2402=43200 平方步(2)S = \frac{(120 + 240) \times 240}{2} = \frac{360 \times 240}{2} = 43200 \text{ 平方步} \qquad (2)

城墙总长 L=1200L = 1200 步,所以体积:

V=S×L=43200×1200=51840000 立方步(3)V = S \times L = 43200 \times 1200 = 51840000 \text{ 立方步} \qquad (3)

术文说"以周一千二百步,乘高二百四十步,得二十四万步为实。以上广一百二十步,下广二百四十步,和为法"——这里"实"是分子,"法"是分母,实际算法是:

V=(a+b)×h×L2(4)V = \frac{(a+b) \times h \times L}{2} \qquad (4)

代入验证:

V=(120+240)×240×12002=360×240×12002=51840000 立方步(5)V = \frac{(120+240) \times 240 \times 1200}{2} = \frac{360 \times 240 \times 1200}{2} = 51840000 \text{ 立方步} \qquad (5)

结果一致。

工期计算

每人每天掘土 8 尺(注意:这里是"尺",不是"步",宋代 1 步 = 6 尺)。

1200 名工人,每天总产量:

W日=1200×8=9600 立方尺/日(6)W_{\text{日}} = 1200 \times 8 = 9600 \text{ 立方尺/日} \qquad (6)

总体积换算成立方尺(1 立方步 = 216 立方尺):

V=51840000×216=11201280000 立方尺(7)V = 51840000 \times 216 = 11201280000 \text{ 立方尺} \qquad (7)

所需天数:

T=112012800009600=1166800 日(8)T = \frac{11201280000}{9600} = 1166800 \text{ 日} \qquad (8)

这个数字显然有问题。重新审视:术文中"人日掘土八尺"可能指的是每人每天完成八立方尺的土方量(体积单位),或者是每人每天完成八尺见方的工作量。结合答案九十日来反推,实际题意应理解为:一千二百人集体作业,每天完成一定工程量。

若按秦九韶答案九十日反推,每天需完成:

5184000090=576000 立方步/日(9)\frac{51840000}{90} = 576000 \text{ 立方步/日} \qquad (9)

除以 1200 人:

5760001200=480 立方步/人⋅日(10)\frac{576000}{1200} = 480 \text{ 立方步/人·日} \qquad (10)

这个工作量在合理的工程施工范围内。秦九韶的算法可能采用的是累积法——把整个工程看作若干"功"的累加,逐步完成。

现代数学视角

棱柱体体积

城墙可以看作一个直棱柱——底面是梯形,高是城长。棱柱体积公式:

V=S底×L(11)V = S_{\text{底}} \times L \qquad (11)

这是初中几何的内容,但秦九韶在没有"棱柱"概念的情况下,用等效替换的思路得到了相同结果。

变截面问题

如果城墙各段宽度不同(比如靠近城门处更宽),体积计算就变成分段积分的雏形:

V=∫0LS(x) dx(12)V = \int_0^L S(x) \, dx \qquad (12)

其中 S(x)S(x) 是位置 xx 处的横截面积。古代用"累算"的方法处理这类问题,正是微积分思想的朴素表达。

工程效率模型

现代工程管理用生产率(productivity)来描述:

工期=工程量人数×日生产率(13)\text{工期} = \frac{\text{工程量}}{\text{人数} \times \text{日生产率}} \qquad (13)

这与秦九韶的模型完全一致。

高中课本关联

对应知识点

本题对应高中数学必修第二册·立体几何初步,涉及棱柱、棱台的体积计算。

思想延伸:梯形面积公式乘以长度得到体积,这是截面法的雏形——用截面面积沿长度方向累积得到体积。这是微积分基本定理的直观来源。

运算练兵场:多步比例计算、单位换算,训练精细运算能力。

综合题常客:高考立体几何大题常以"土石方计算""容器容积"为背景,此题为源头之一。

常见误区

学生容易忘记梯形面积公式中的 12\dfrac{1}{2},直接用(上底+下底)×高,导致体积算大一倍。另外,单位换算也容易出错——步与尺的进率是 6,不是 10。

思考与拓展

  1. 如果城墙截面是三角形(上广为零),高 240 步,下底 180 步,长 1000 步,体积多少?

  2. 某堤坝截面为梯形,上宽 5 米,下宽 20 米,高 10 米,长 500 米。求土方量。

  3. 如果 800 人每天各掘土 6 立方尺,要完成 51840000 立方步的城墙,需要多少天?

  4. 现代工地用挖掘机,每小时可挖 200 立方米。类比秦九韶的算法,如何用现代设备估算工期?

一句话总结

秦九韶用梯形面积乘以长度求城墙体积,再除以日总工作量得工期,本质是棱柱体积公式的工程应用。

— Y. · 2026-11-16
土方工程——挖掘与填筑的体积计算 · 数书九章第33讲