古埃及人用绳子量土地时发明的几何 巴比伦人算粮仓时的算术 这些数学起源如何变成你今天网购比价房贷计算和手机APP编程的基础
嘿,朋友!你有没有想过,为什么你去买房的时候,那个房贷计算器能嗖的一下算出你每个月要还多少钱?或者你网购的时候,各种优惠券、满减、返现让你眼花缭乱,最后到底哪个最划算?这些看似高深的东西,其实都可以追溯到几千年前,尼罗河畔一群穿着亚麻袍子的人,用绳子在地上画来画去的故事。
一、尼罗河泛滥后的那一根绳子
把时间倒回去四千年。那时候的埃及,尼罗河每年都要发一次大水,把田地里的界限全冲没了。村民们第二天早上起来,发现自己的地到底多大、邻居的地到底在哪,全都搞不清楚。于是,法老的官员们就想了个办法:拿绳子来量。
这根绳子可不是普通的绳子,上面打了一连串的结,每隔一段打一个,就像我们现在的尺子上的刻度。村民们拉着绳子,在田地上拉出直边、画出方形,然后数一数里面占了多少”绳单位”,就算出这块地有多大了。
这就是几何的雏形。几何这个词在希腊语里本来就是”测地”的意思,geo是土地,metron是测量。古埃及人为了重新划分被洪水冲毁的土地,被迫发明了这门学科。
有意思的是,他们不只是会量长方形。他们还能算出三角形的面积,甚至能近似计算圆的面积。在著名的莱因德纸草书里,就记载着这样的题目:一个圆形田地的直径是9杆,问它的面积是多少?他们用了一个很聪明的近似方法,算出来的结果其实相当准确。
古埃及人的几何不是用来考试的,是用来吃饭的。如果你量错了一块地,农民就要抗议,法老就要丢面子。所以每一次测量,都必须精确。这种对精确的追求,一直传承了下来。
二、两河流域的粮仓管理员和泥板上的秘密
与此同时,在东边的两河流域,苏美尔人和后来的巴比伦人正在为另一件事头疼:粮食。
一个城邦要养活几万人口,就得知道今年收了多少麦子、存了多少粮食、能分给多少人、能换多少布匹。巴比伦的粮仓管理员每天的工作,就是对着堆积如山的泥罐和麻袋算账。
他们用一种叫楔形文字的系统刻在泥板上记录一切。你想想那个画面:一个官员坐在泥板前,手拿芦苇杆,一下一下地刻画,记录今天收了500斗大麦,给了祭司120斗,给了军队80斗,还剩多少……
巴比伦人最厉害的地方,是他们发展出了一套非常先进的算术系统。他们用的是六十进制,就是你今天还能感受到的——一个小时60分钟,一分钟60秒,一个圆360度。这种进制在他们那里不是因为好算,而是因为在计算天体运行和粮食分配时特别好用。
在一块著名的泥板上,记载着这样一个问题:一个粮仓是长方形的,长5米,宽3米,高2米,问能装多少斗麦子?这其实就是在算体积。巴比伦人已经知道长方体的体积等于长乘宽乘高。更厉害的是,他们还处理过更复杂的形状,比如棱台、圆柱体的体积计算。
你可以想象那个粮仓管理员,他手边可能已经有一块小泥板,上面抄录着前人总结好的公式和表格。他不用每次都从头算,只需要查表、代入数字、完成运算。这听起来是不是很耳熟?
三、从泥板到纸莎草:知识的传递方式变了
埃及人和巴比伦人的计算方法,都是通过抄写一代一代传下去的。埃及人把公式写在纸莎草上,巴比伦人刻在泥板里。这些”教科书”里不仅有计算方法,还有很多练习题。
在莱因德纸草书里,有一个有趣的问题:100块面包要分给5个人,使得每个人分到的数量构成一个等差数列,而且较大的两份之和是较小的三份之和,问每个人分到多少?
这本质上是一个方程问题。用现代的话来说,假设五个人分到的面包分别是 a-2d、a-d、a、a+d、a+2d,那么:
(a+d)+(a+2d) = (a-2d)+(a-d)+a 2a+3d = 3a-3d a = 6d
又因为总数是100: (a-2d)+(a-d)+a+(a+d)+(a+2d) = 5a = 100 a = 20
所以 d = 20⁄6 ≈ 3.33
五个人分到的面包分别是:13.33、16.67、20、23.33、26.67块。
你看,四千多年前的人,已经在解这样的方程组了。他们的方法可能和我们今天用的代数不一样,但本质是完全相同的:找未知数,列关系式,求解。
四、从测量土地到测量宇宙:希腊人的飞跃
埃及和巴比伦的实用数学传到了希腊,发生了一次巨大的飞跃。希腊人开始问:为什么这些方法有效?能不能证明它们是对的?
欧几里得把前人积累的几何知识整理成了一本叫《几何原本》的书。这本书最了不起的地方,不是它有什么新发现,而是它建立了一套”公理化”的体系——从几条简单的假设出发,一步一步逻辑推导,证明所有的定理。
比如,你知道为什么三角形的内角和是180度吗?欧几里得可以给你证明:过三角形的一个顶点作一条平行于对边的直线,利用平行线的性质,就能把三个内角拼成一条直线,也就是180度。
这种”证明”的思维,是数学史上最伟大的创新之一。它告诉后人:数学不仅仅是算出答案,而是要让人信服答案为什么是对的。
后来,阿基米德用穷竭法计算圆的面积、球的体积,他的方法已经非常接近今天的微积分思想了。他用一系列内接和外切的多边形,不断逼近圆的面积,最终证明了圆的面积等于π乘以半径的平方。
五、数字系统的进化:从象形到印度-阿拉伯数字
你可能会问,古埃及人用象形文字记数,巴比伦人用楔形文字记数,他们怎么算得那么快?
答案是一个关键的进化:数字符号的简化。
古埃及的数字系统虽然能表示很大的数,但写起来非常麻烦。比如要写345,你需要画三个百符号、四个十符号、五个一符号。巴比伦的六十进制也很复杂。
真正改变历史的,是印度人发明的十进位值制数字系统,后来传给了阿拉伯人,再由阿拉伯人传到了欧洲。这就是我们今天用的0、1、2、3、4、5、6、7、8、9。
为什么这个发明这么重要?因为它让计算变得极其简单。有了位值制,你只需要十个符号就能表示任何大小的数。有了0这个概念,你可以做减法(没有东西减去东西就是0),可以做乘除法的竖式运算。
在印度-阿拉伯数字系统传入欧洲之前,欧洲商人做乘法要用很麻烦的方法。比如你要算45乘以67,你可能需要在桌面上摆小石子,或者用算盘。有了位值制和竖式乘法,你只需要:
45
× 67
─────
315 ← 45×7
2700 ← 45×60
─────
3015
整个过程不超过一分钟。而在埃及象形文字时代,这可能需要在纸莎草上画几十个符号来慢慢数。
六、从房贷计算到网购比价:算术的回归
现在回到你的问题。这些东西怎么就变成了你今天网购比价、算房贷的能力?
其实答案很简单:它们从来没有离开过。它们只是换了一层外衣。
让我给你讲一个具体的故事。
假设你要买一套房子,总价200万,首付30%,贷款140万,利率4.9%,贷款30年。银行给你的月供是多少?
这看起来很难,对吧?但它的本质,就是一个四千多年前巴比伦人也会遇到的等比数列求和问题。
贷款的本质是:你借了银行一笔钱,每月还一部分,利息按月计算。月供固定的话,每个月的还款里,有一部分是还利息,有一部分是还本金。随着本金越来越少,利息也越来越少,所以实际上你每个月还的本金在逐渐增加。
计算月供的公式是:
月供 = 贷款本金 × 月利率 × (1+月利率)^还款月数 ÷ [(1+月利率)^还款月数 - 1]
代入数字:
贷款本金 = 1400000
月利率 = 4.9% ÷ 12 = 0.0040833
还款月数 = 30 × 12 = 360
(1+0.0040833)^360 ≈ 4.4677
月供 = 1400000 × 0.0040833 × 4.4677 ÷ (4.4677 - 1)
= 1400000 × 0.018247 ÷ 3.4677
= 25545.8 ÷ 3.4677
≈ 7373 元
你看,这个计算的核心就是指数运算和分式运算。巴比伦人没有指数符号,但他们完全理解倍数增长的概念。他们在泥板上计算复利、计算粮食的存储和分配时,用的就是同一种思维。
七、网购比价的数学本质
再说网购比价。你打开购物软件,看到三个店铺卖同一个东西:
- 店铺A:原价199元,打8折,再减20元
- 店铺B:原价220元,打7折
- 店铺C:原价180元,不折扣,但满150减30
哪个最划算?
这看起来是简单的算术,但其实涉及到了多步运算和条件判断。让我用代码的方式帮你理清思路:
# 计算各店铺最终价格
shop_a = 199 * 0.8 - 20 # 先打折再减
shop_b = 220 * 0.7 # 直接打折
shop_c = max(180 - 30, 0) # 满减,但不低于0
print(f"店铺A最终价格: {shop_a}元")
print(f"店铺B最终价格: {shop_b}元")
print(f"店铺C最终价格: {shop_c}元")
# 找出最划算的
prices = {"A": shop_a, "B": shop_b, "C": shop_c}
best_shop = min(prices, key=prices.get)
print(f"最划算的是店铺{best_shop},价格为{prices[best_shop]}元")
运行这段代码,你会得到:
店铺A最终价格: 139.2元
店铺B最终价格: 154.0元
店铺C最终价格: 150.0元
最划算的是店铺A,价格为139.2元
这段代码里发生了什么?你用了乘法、减法、条件判断(max函数)、比较(min函数)和字典数据结构。这些概念,每一个都能追溯到古代。
乘法——巴比伦人用累加的方法做乘法,他们有一张张乘法表刻在泥板上。你查乘法表,就是在使用四千年前的知识。
减法——古埃及人用”补数”的方法做减法,比如要算100-37,他们就思考”37加上多少等于100”。这和今天的竖式减法本质一样。
条件判断——这在古代以另一种形式存在。比如巴比伦的税收规则:如果你的收入超过100斗,超出部分按10%缴税;不超过100斗的,免税。这就是一个if-else语句,只不过写在了法律条文里。
比较大小——这是几何的基础。两条线段谁长谁短?两个面积哪个大哪个小?古埃及人测量土地时,第一件事就是在比较。
八、编程的本质:把古代算术变成机器能懂的语言
现在我们来谈谈手机APP编程。你可能会觉得,编程是很新的东西,跟古埃及人有什么关系?
关系大了。
编程的本质是什么?是把一系列的计算步骤,用机器能理解的语言写出来,让机器按步骤执行,最终得到一个结果。
这个思维过程,和巴比伦粮仓管理员查泥板表格、古埃及测量员按绳结测量,是同一个逻辑:把问题分解成步骤,按步骤执行,得到答案。
只是现在,你不是用泥板和绳子,而是用代码。
让我给你看一个更实际的例子。假设你要做一个房贷计算器的小程序,核心代码可能长这样:
def calculate_mortgage(principal, annual_rate, years):
"""
计算房贷月供
参数:
principal: 贷款本金
annual_rate: 年利率(百分比)
years: 贷款年限
返回: 月供金额
"""
monthly_rate = annual_rate / 100 / 12
months = years * 12
if monthly_rate == 0:
# 无息贷款,简单除法
monthly_payment = principal / months
else:
# 等额本息公式
factor = (1 + monthly_rate) ** months
monthly_payment = principal * monthly_rate * factor / (factor - 1)
return round(monthly_payment, 2)
# 测试
print(f"贷款140万,利率4.9%,30年月供: {calculate_mortgage(1400000, 4.9, 30)}元")
这段代码里,每一行背后都站着几千年数学史:
principal * monthly_rate * factor / (factor - 1)这个公式,就是巴比伦人处理复利问题的现代版本。if monthly_rate == 0这个条件判断,对应着古埃及税收规则中的免税条款。return round(..., 2)这个精度控制,源于古代会计中对”分”这个最小单位的坚持——你不可能还半分钱。
而整个函数封装成 calculate_mortgage 的过程,其实就是把欧几里得《几何原本》中”命题-证明-应用”的结构,变成了”函数定义-逻辑-调用”的结构。
九、几何怎么变成了编程中的图形和界面
你可能还会问:几何呢?几何不也变成了今天的APP吗?
当然。你今天看到的每一个APP界面,每一张地图,每一款游戏中的3D世界,背后都是几何。
先说最简单的:为什么你的手机APP的按钮是圆角的?这不是随便定的。圆角矩形的面积计算,在古希腊时期就是一个经典问题。阿基米德研究过圆和矩形的关系。今天的设计师选择圆角,是因为圆角在视觉上有亲和力,但在数学上,它对应着一个”圆角矩形”的面积公式:
圆角矩形面积 = (L-2r)(W-2r) + πr² + 2r(L-2r) + 2r(W-2r)
= LW - 4r² + πr² + 2rL - 4r² + 2rW - 4r²
= LW - 4r²(2-π/2) + 2r(L+W)
这个公式看起来复杂,但它的核心思想是:把图形分解成简单的部分,分别计算,然后加总。这和古埃及人测量不规则田地时的方法完全一样:把一块不规则的地,切成几个三角形和矩形,分别量,再加起来。
再说地图APP。你打开手机地图,它能告诉你从家到公司的路线有多远、要多久。这背后是图论和几何的结合。每个路口是一个点,每条路是一条线。从家到公司的最短路径,就是一个经典的图论问题——迪杰斯特拉算法。
这个算法的思想,本质上就是古埃及测量员选择最短路线过河时的思维:每次选择离目标最近的那个点,一步步逼近目的地。
至于3D游戏和建筑渲染,那更是直接应用了三角学和解析几何。屏幕上的每一个像素,都是由三维坐标通过一系列矩阵变换投影到二维屏幕上。这些矩阵运算,就是高斯消元法、线性代数,而这些东西,都可以追溯到古代为解决实际问题而发展的代数方法。
十、一个让小朋友也能明白的类比
让我用一个小故事,帮小朋友理解这一切。
想象一下,有一个叫小明的孩子,他想要做一个果汁摊。
第一天,小明去量他的摊位大小。他拿了一根绳子,在地上比划。这根绳子就是他手中的”几何工具”,就像古埃及人用绳子量土地一样。
第二天,小明算自己要进多少斤橙子、多少包糖、多少杯。他拿着小本本,一笔一笔地算。这个算账的过程,就是”算术”,就像巴比伦人算粮仓一样。
第三天,小明发现一个顾客一次买了5杯,另一个顾客买了3杯。他想知道今天一共卖了几杯。他做了一加法:5+3=8。这个加法运算,和古埃及人把两块田的面积合在一起,是完全一样的思维。
一周后,小明发现,如果他把今天赚的钱存起来,每天存一点,下个月就能买一辆更好的榨汁机。他算了算,需要存多久。这个”存钱生钱”的想法,就是复利的概念,巴比伦人计算粮仓利息时用的就是这个。
一个月后,小明觉得一个人忙不过来,就写了一张纸条给来帮忙的表弟,上面写着:
如果客人点了X杯果汁,
那么需要橙子 X÷2 斤,
需要糖 X÷4 包,
收入是 X×5 元,
成本是 X×2 元,
利润是 X×3 元。
这张纸条,就是一段”代码”。它告诉表弟,不管来多少人,都能快速算出需要多少材料、赚多少钱。表弟按照这张纸条上的步骤去执行,就像计算机按照代码去执行一样。
小明写的这张纸条,和四千年前巴比伦粮仓管理员刻在泥板上的公式,本质上没有任何区别。它们都是在说:如果输入是A,那么输出就是B。
十一、从泥板到硅片:工具变了,思维没变
两千多年前,希腊哲学家芝诺提出了一个著名的悖论:飞矢不动。一支射出去的箭,在每一个瞬间都占据着一个确定的位置,既然在每个瞬间它都是静止的,那它怎么动呢?
这个问题困扰了人们很久。直到一千多年后,牛顿和莱布尼茨发明了微积分,用”极限”的概念解决了它:箭在每一个瞬间确实有一个确定的速度,这个速度就是位移对时间的导数。
微积分是现代工程、物理、金融、计算机科学的基础。没有微积分,就没有现代建筑、没有火箭、没有金融模型、没有机器学习。而微积分的核心思想——把复杂的东西分解成无穷小的部分来研究——正可以追溯到阿基米德穷竭法和古希腊人对连续性的思考。
再比如,你手机里的APP为什么会闪退?为什么会卡?这涉及到内存管理、算法效率等问题。而算法的效率分析,本质上就是古代数学家研究”如何用最少的步骤解决一个问题”的延伸。
巴比伦人研究如何用最快的方法查乘法表,埃及人研究如何用最快的方法量土地,希腊人研究如何用最短的证明得出最多的定理——这些都在追问同一个问题:怎样最高效地解决问题?
今天,工程师们研究怎样让一个排序算法从O(n²)优化到O(n log n),怎样让一个神经网络从训练三天缩短到训练三小时——他们追问的,是同一个问题。
工具从泥板变成了纸莎草,从纸莎草变成了印刷书,从印刷书变成了电脑屏幕。但人类的思维模式,几千年来几乎没有变过。
十二、你今天用的每一个数学工具,都在说着同样的故事
好了,我们回到你的问题。
古埃及人用绳子量土地发明的几何,巴比伦人算粮仓发明的算术,怎么就变成了你今天网购比价、算房贷、写APP的基础?
答案就是:它们从来没有变成过别的东西,它们一直都是这些东西。
你今天用的房贷计算器,它的核心公式,和巴比伦人计算复利的方法,是同一个数学结构。你网购时比较价格的运算,和古埃及人比较两块田地大小的运算,是同一种逻辑。你写APP时写的每一个函数,都是对古代”如果输入A,输出B”这种思维模式的一种实现。
区别只是:古代人用绳子和泥板,今天的人用代码和计算器。
古代人算完一次,就要重新算下一次。今天的人写一次代码,可以运行无数次。这就是进步,但这不是本质的改变。本质一直是:发现问题,建立模型,求解验证,应用到实际。
四千年前,一个埃及测量员站在尼罗河畔,用绳子量完一块地后,在沙地上写下今天的面积是多少。一个巴比伦粮仓管理员在泥板上刻下”500斗麦子,分给200人,每人2.5斗”。今天,你在手机上点一下,房贷计算器给出月供7373元,比价软件告诉你店铺A最划算。
你们在做同一件事:用数学理解世界,用计算解决问题,用逻辑做出决策。
这根从尼罗河畔延伸到今天屏幕的线,从来没有断过。它只是换了一根更细的、更透明的、更快速的材料在传递——从绳子到泥板,从泥板到纸草,从纸草到印刷书,从印刷书到电子屏幕。
而握着这根线的手,从古埃及的测量员,到巴比伦的账房先生,到希腊的哲学家,到中世纪的抄写僧侣,到近代的工程师,再到今天写代码的你们和我,从来没有换过人。
因为我们都是同一类人:好奇的人,想搞清楚世界怎么运作的人,想用最简单的方法解决最实际问题的人。
数学不是书上的符号,不是试卷上的难题。数学就是人类用来理解这个世界最强大的工具,而它从诞生的那一天起,就一直陪伴着我们,一直到今天,一直到你的手机屏幕里。
