本文 首发于 🌱 煎茶转载 请注明 来源

来源:100 years to solve an integral - Lior Sinai

作者:Lior Sinai

说明:本文为 AIGC 辅助翻译版本,已进行简单人工校对,具体细节请自行甄别。

用 100 年求解一个积分

墨卡托地图与正割积分的历史

任何初学微积分的学生都很熟悉正割函数的积分。然而,这个积分曾经是数学史上一个悬而未决的重要问题。1569 年,杰拉杜斯·墨卡托(Gerardus Mercator)为了绘制他著名的地图而首次提出了它。他没能求出精确解,只好采用近似方法。86 年后的 1645 年,这个精确解在没有微积分工具的情况下被偶然发现。此后又过了二十多年,直到 1668 年才出现形式化证明;距离墨卡托首次提出这个问题,已经过去了 99 年。

2021 年 3 月 13 日更新:补充了纳皮尔(Napier)如何计算对数三角函数表的说明。这源于本文在 Hacker News 上讨论时有人提出的一处修正。

2021 年 10 月 10 日更新:大圆航线与恒向线图像现在由使用 Cartopy 的脚本生成。此前这些图像由 Matlab 应用生成。你可以在作者的 GitHub 仓库 中查看新脚本,并输入自己的坐标来生成对应的航线。

正如 SMBC 的这幅漫画所调侃的那样,数学史往往并不那么直线前进。课堂上被例行讲授的定理、公式和记号,在当初也曾是洞见,甚至是偶然发现。本文讲述的正是这样一个公式:正割函数的积分。

我第一次读到这个故事,大约是在十年前。当时我开始对制图学(cartography)产生兴趣:制图学既是地图制作的科学,也是地图制作的艺术。1 这个积分对于墨卡托地图至关重要,因此也影响了许多使用墨卡托投影的在线地图,例如 Apple MapsGoogle Maps

这个故事此前已经被讲述过多次,可参见相关论文与综述资料。不过,这些资料大多是期刊文章,主要面向学术读者。本文希望在更轻松、更有色彩的语境中介绍它,让它更容易被理解。

本文是一篇数学文章。若读者熟悉代数、三角函数、弧度制和基础微积分,会更容易阅读;这些内容通常出现在高中高阶数学课程或大学一年级数学课程中。

大一数学课

大学一年级的数学课上,在学习了一个月的求导之后,我们开始学习它的反问题:积分。求导研究的是如何为曲线找到梯度函数;积分则是在反向追问:给定一个梯度函数,对应的曲线是什么?当时我的老师开始介绍三角函数的积分。他先写下:

[ \int \sin(x) dx = -\cos(x) + c \quad\text{and}\quad \int \cos(x) dx = \sin(x) + c ]

这组关系很容易理解,因为正弦和余弦的导数只差一个符号。只要注意负号即可。接着他推导了正切函数的积分:

[ \int \tan(x) dx = \int \frac{\sin(x)}{\cos(x)}dx = -\ln|\cos(x)| + c ]

好吧,这就有点技巧了。这里并不能一眼看出可以使用链式法则的逆过程;不过,因为函数 $\cos(x)$ 与它的导数 $\sin(x)$ 同时出现,仔细想想也能说得通。然后老师说,下面是正割函数的积分,把它背下来:

[ \int \sec(x) dx = \ln|\sec(x) + \tan(x)| + c ]

等一下,这个结果是从哪里来的?我的老师没有解释。通过求导验证它确实成立并不困难。2 但问题是:最初是谁、又是怎样想到这个形式的?

函数 $\ln|\sec(x)+\tan(x)|$ 的切线斜率为 $\sec(x)$。发现这一事实,花了差不多 100 年。

我认为在这个时刻,大多数像我一样的大一微积分学生,脑中都会闪过以下想法:

  1. 积分比求导难多了。
  2. 某位数学家一定是先通过求导偶然撞见了这个结果。
  3. 反正这东西以后到底能在哪里用?

事实上,第一点是真的;许多学生在考试之后都会作证。第二点是错的:它实际上是一位教师在查看原始数值表时发现的。用这种方式发现一个积分极其罕见,甚至可以猜测它可能是唯一一个以这种方式被发现的积分。在微积分课堂上,原始数字表如此少见,如果你试图靠查数表来求一个积分,大概会被人笑话。至于第三点,对我个人来说仍然是真的。

不过,这并不意味着这个积分没有用。它被用来构造墨卡托地图。也正因为如此,那位教师才会在处理大量数字时,意外地意识到公式的真实形态。

快速回顾:三角函数

正割函数是一个标准三角函数。对于直角三角形中角 $\varphi$ 而言,它被定义为斜边 $c$ 与邻边 $a$ 的比值:

[ \sec(\varphi) = \frac{c}{a} ]

它也是更常用的余弦函数的倒数:

[ \sec(\varphi) = \frac{1}{\cos(\varphi)} ]

若画出从 $-2\pi$(-360°)到 $2\pi$(360°)范围内的正割函数与余弦函数图像,就能直观看到二者的关系。

正割函数的积分可以解释为图像下方的面积。3

制图学入门

地球无法在不产生畸变的情况下投影到平面地图上。多年来,制图师设计了许多不同的地图投影,试图在尽量减少畸变与保留其他性质之间取得平衡。这些投影形态各异。为了理解后文的墨卡托地图,下面先介绍两种最简单的投影。

所有地图投影都可以表示为一组方程:它们把球面坐标转换为平面地图坐标。球面上的坐标是角度 $\varphi$ 与 $\lambda$,分别对应纬线(parallels)和经线(meridians)。平面地图上的坐标则是 $x$ 与 $y$。因此,地图投影就是从 $\varphi, \lambda$ 到 $x, y$ 的变换。

最简单、也是已知最古老的投影之一,是等距圆柱投影(equirectangular projection)。

它的做法是把经线和纬线分别映射为间距固定的竖直直线与水平直线。这会沿纬线方向拉伸物体。它的投影方程为:

[ \begin{align} y &= R\varphi\ x &= R\lambda \end{align} ]

虽然方程很简单,但构造过程并不总是容易想象。可以把球面的一段剥离并压平来理解:沿经度方向把弧线拉成直线。弧线本身在这个过程中长度不变,但这要求沿 $x$ 轴方向拉伸两侧。因此,所有弧线相交的一个点会被拉伸成一条线。

等距圆柱投影的总面积为 $(2\pi R)(\pi R)=2\pi^2 R^2$,而球面的表面积为 $4\pi R^2$。因此,这种投影会使面积产生一个 $\frac{\pi}{2}\approx1.57$ 倍的畸变因子。

另一类投影可以通过从球面向制图平面投射线来得到。兰伯特圆柱投影(Lambert cylindrical projection)就是一个例子。它可以理解为用一个圆柱包住球面,然后通过平行于 $x$ 轴的直线把点投射到圆柱上。

对应的方程是:

[ \begin{align} y &= R\sin(\varphi)\ x &= R\lambda \end{align} ]

对于赤道附近的物体,这种投影产生的畸变很小,例如非洲附近。但靠近两极的物体会因为球面曲率而被压缩;格陵兰岛就是一个很明显的例子。

这种地图有一个有用的性质:它的面积等于球面的表面积。平面地图面积为 $(2\pi R)(2R)=4\pi R^2$,与球面面积相同。因此,虽然物体形状发生了畸变,它们的面积仍然是正确的。格陵兰岛相对于非洲的比例,在这张地图中就得到了准确表示。

墨卡托地图

1569 年,杰拉杜斯·墨卡托希望绘制一幅适合航海的全球地图。他生活在一个横跨大洋航行相当普遍的时代;1492 年,克里斯托弗·哥伦布就是从西班牙一路航行到美洲。前面介绍的那些地图适合作为艺术化印象图或一般用途图,却不适合导航。畸变会妨碍在地图上准确测量距离和方位。在局部尺度上,现实中彼此垂直相交的线(例如道路),在地图上可能会变得相互倾斜。

墨卡托尤其希望制作一张能让恒向线(rhumb lines)表现为直线的地图。恒向线是相对于经线保持恒定方位角的曲线。沿恒向线航行时,导航员只需要在整个旅程中保持罗盘上的同一方位。例如,穿过现代纽约与开普敦的恒向线,在每一点上与经线的夹角都为 48.56°,这对应于从开普敦到纽约的方位角 311°26′18″。

与恒向线相对的是大圆航线(great circle)。大圆是球面上圆心位于球心的圆;沿大圆航行总是更短。在纽约到开普敦这个例子中,大圆距离约为 12550 千米,而沿恒向线约为 12600 千米。借助现代技术,船舶和飞机很容易沿大圆航线行进。

但在墨卡托的时代,这并不容易。因此,水手更倾向于沿恒向线航行:他们宁愿多走一点路抵达目的地,也不愿迷航后走更多冤枉路。

墨卡托的想法是,在南北方向上拉伸一张圆柱投影地图,以保持形状与角度。观察兰伯特投影可以发现,4 每一个纬度所需的拉伸因子都不同:在赤道处不需要拉伸;在 45° 纬线上只需要少量向上拉伸;越接近两极,物体越需要被大幅拉伸,才能抵消原先的压缩。

这个拉伸因子可以这样计算。

首先,墨卡托把地球划分为等间距的经纬网格,间隔分别为 $\delta\varphi$ 与 $\delta\lambda$。沿经线方向,每个小网格的弧长为 $R\delta\varphi$。沿纬线方向,该纬圈半径为 $R\cos(\varphi)$,所以弧长为 $(R\cos(\varphi))\delta\lambda$。于是切线值可以近似为:

[ \tan(\alpha) \approx \frac{R\cos(\varphi)\delta\lambda}{R\delta\varphi} ]

接着,把这个小网格压平成一个矩形,并满足两个要求:

  1. 保持角度不变,即令 $\alpha=\beta$。
  2. 像兰伯特投影那样,把纬线投影到 $x$ 轴方向。这意味着 $\delta x = R\delta\lambda$。

因此,变换关系为:

[ \begin{align} \tan(\alpha) &= \tan(\beta) \ \frac{R\cos(\varphi)\delta\lambda}{R\delta\varphi} &= \frac{\delta x}{\delta y} \ \delta y &= \frac{\delta x}{\delta \lambda} \frac{1}{\cos(\varphi)} \delta \varphi = R \sec(\varphi) \delta \varphi \end{align} ]

从这里再向前一步,就可以把它写成积分。不过,严格意义上的微积分要在墨卡托发表地图之后一个世纪才形成。墨卡托实际做的是意识到:可以把每一点上的拉伸因子逐项相加。第 $n$ 个网格处的拉伸,近似等于它下方网格的拉伸再加上 $R\sec(\varphi)\delta\varphi$。于是可以得到求和式:

[ \begin{align} y_n &\approx R \sec(n \cdot \delta \varphi) \delta \varphi + y_{n-1} \ &=\sum^{n}_{k=0} R \sec(k \cdot \delta \varphi) \delta \varphi \end{align} ]

通过使用固定的 $\delta\varphi$,墨卡托便能计算出地图上的纬线间距,然后在其上绘制世界地图。现代渲染出的结果,就是我们熟悉的墨卡托地图。

这张地图畸变非常严重。格陵兰岛现在看起来比非洲还大;大圆航线则呈现为奇怪的曲线。但恒向线是直线!只用一把尺子和量角器,就可以计算方位;不需要额外思考,也不需要复杂数学,更不需要在地球仪上使用精巧仪器。用现代的话说,它在水手中大受欢迎。

对于在线地图而言,局部投影非常重要。如果你在城市中查路线,你最关心的是道路看起来是否正确。墨卡托地图被采用,正是因为它能保持道路网格之间的角度。其他地图投影无法满足这个简单要求。一个小问题是比例尺会随纬度变化;但在线地图可以在每个点上轻易计算这种变化。你可以在 Google Maps 中尝试观察:相同缩放级别下,不同纬度的比例尺长度并不相同。赤道附近比例尺可能最小为 5 米;接近两极时,由于被拉伸得更厉害,比例尺可能降到 1 米。不过,当你在地图上缩放到某一个具体地点时,通常不会注意到这一点。

顺便说一句,如果你要在 Google Maps 上查看长距离范围,最好打开“地球视图”(Globe view)。

三角函数表、墨卡托表与对数表

故事在这里出现了意外转折。为了理解这一点,需要先介绍另一段历史:数学表。

今天,袖珍计算器和计算软件太常见,以至于我们已经忘记数学表曾经无处不在。即便到了 20 世纪 90 年代,情况仍然如此。

过去,如果你想计算 $\sec(36^\circ)$,可以画一个大三角形,用尺子实际测量角度和边长,然后手工完成长除法。更常见、更现实的做法,是在三角函数表中查找这个值。这些表中的数字,需要通过近似公式和三角恒等式辛苦计算出来;但对于使用者来说,它们非常简单。

你只需要查表即可;如果想要更高精度,偶尔在相邻数值之间做插值。这些表还有一个额外好处:反查也很方便。例如,如果你在正割表中查找数字 1.23606,会发现它对应 36°。

1599 年,爱德华·赖特(Edward Wright)发表了赤道墨卡托地图方程所需的表格。他采用 $\delta\varphi=1’=\frac{1}{60}1^\circ$。他还给出了墨卡托地图的第一份数学描述;墨卡托本人并没有完整说明这一点。这使其他人更容易制作自己的墨卡托地图。

1614 年,约翰·纳皮尔(John Napier)引入了对数。对数是指数运算的逆运算。用现代记法,以 $b$ 为底的 $x$ 的对数 $y$ 写作:

[ y = \log_b x \quad ; \quad b^y = x ]

纳皮尔的主要动机,是寻找更容易执行乘法和除法的方法。例如,根据指数法则:

[ 2^a \div 2^b = 2^{a-b} ]

因此,除法可以这样完成:

[ 3764 \div 873 = 2^{11.878} \div 2^{9.770} = 2^{2.108} = 4.311 ]

其中 $\log_2(3764)=11.878$,$\log_2(873)=9.770$。

对数同样需要通过近似计算辛苦制表。纳皮尔使用了一种运动学框架来完成这件事。这个想法今天看来可能很奇特,但它与纳皮尔最初如何想象对数有关。5 他的最终表格把数字与其对数以及正弦联系起来。用户可以用这样的表查找对数,并同样享受方便反查的好处。这些表非常受欢迎——显然,过去的人们并不喜欢做乘除法。用加减法替代乘除法,也能降低出错概率,尤其是在连续计算中。

随后,数学家把这类表扩展到了其他三角函数。

1645 年,根据传说,一位名叫亨利·邦德(Henry Bond)的教师注意到一个奇怪现象:赖特的墨卡托表中的数字,与 $\log_e(\tan(\varphi))$ 表中的数字非常相似。二者只是在表格中相差一个因子 2 和一个 45° 的偏移。因此,他本质上猜想:

[ \int_0^{\varphi_1} \sec(\varphi) d\varphi = \ln \left| \tan \left( \frac{\varphi_1}{2} + 45^\circ \right) \right | ]

数学家们注意到了这个断言,却无法证明它。当时微积分仍处于萌芽阶段。1668 年,也就是墨卡托首次绘制地图 99 年后、邦德给出结果 23 年后,詹姆斯·格雷戈里(James Gregory)终于证明了它。不过,这个证明被认为冗长而“令人疲惫”。1670 年,艾萨克·巴罗(Isaac Barrow)通过部分分式积分给出了更简洁的证明。

最后,借助三角恒等式可以证明,下列三个公式完全等价:

[ \int \sec(\varphi) d\varphi = \begin{cases} \ln |\sec(\varphi) + \tan(\varphi) | + c \ \ln \left| \tan \left( \frac{\varphi}{2} + 45^\circ \right) \right | + c\ \frac{1}{2}\ln \left| \frac{1+\sin(\varphi)}{1-\sin(\varphi)} \right| + c \end{cases} ]

结论

这是一篇很长的文章。希望你和我一样觉得这段历史引人入胜。对我来说,真正令人惊叹的是:一个出现在大一考试中的小公式,背后竟然有如此丰富多彩的历史。我确实认为,课堂上应该更多讲述它。已经有人尝试过这种教学方式;在小规模教学实验中,效果不错。

如果你更关心 Google 如何制作地图,强烈建议阅读一位 Google 工程师写的相关博客文章。你能在 Google 的代码中找到正割积分的影子吗?

最后,我还想补充一点。围绕墨卡托地图存在很多争议。它是一种极其常见的投影。我年轻时,墙上就挂过一张墨卡托投影的世界地图。不过,希望你现在已经充分理解:它的主要用途是导航。除此之外,它会不必要地扭曲形状,尤其会使美洲和欧洲看起来比真实情况大得多。人们把这种效果与殖民主义和种族主义联系起来,并非毫无道理。

几十年来,制图师一直批评墨卡托投影被用于并不适合它的场景。6 甚至还有一段 20 世纪 90 年代电视剧中的有趣片段专门调侃这一点。

地图投影有很多种,每一种都有自己的用途。我个人最喜欢的是温克尔三重投影(Winkel Tripel projection)。它是美国国家地理学会的官方地图投影。无论在最终呈现还是数学形式上,它都是形状与尺度之间优雅的折中。另一个广受喜爱的投影是罗宾森投影(Robinson projection)。它采用一种“艺术化方法”设计:不同于其他投影,亚瑟·H·罗宾森(Arthur H. Robinson)并没有使用方程,而是以 5° 为间隔手工确定比例因子。



  1. 如果我没记错,当时我是在 Wikipedia 上漫游时读到这个故事的。途中我进入了正割函数积分页面,那里包含一段非常简短的历史。 ↩︎

  2. 通过求导验证如下:

    [ \begin{align} &\frac{d}{dx}\ln|\sec(x) + \tan(x)| \ &= \frac{d}{dx}\ln|z| \quad,\quad z=\sec(x)+\tan(x) \ &= \frac{1}{z} \frac{dz}{dx} \ &= \frac{1}{\sec(x) + \tan(x)}(\sec(x)\tan(x) + \sec^2(x)) \ &= \sec(x)\frac{\tan(x) + \sec(x)}{\sec(x) + \tan(x)} \ &= \sec(x) \end{align} ]

    这里用到了链式法则,并假定下列结论已经证明:

    • $\frac{d}{dz}\ln(z)=\frac{1}{z}$
    • $\frac{d}{dx}\tan(x)=\sec^2(x)$
    • $\frac{d}{dx}\sec(x)=\sec(x)\tan(x)$
     ↩︎
  3. 面积相对于 $x$ 轴方向的变化率就是函数值 $y$,也就是一条极薄矩形的高度。因此 $\frac{dA}{dx}=y\implies A=\int y,dx$。 ↩︎

  4. 作者并不确定墨卡托是否知道这种投影。兰伯特圆柱投影直到 1772 年才由约翰·海因里希·兰伯特正式描述。不过,它是最容易用来直观解释墨卡托投影构造过程的方式,因此原文采用了这种说明。 ↩︎

  5. 简述纳皮尔的方法:他比较一个沿无限长直线运动的粒子与另一个沿长度为 $R$ 的有限线段运动的粒子。第一个粒子匀速运动,$\frac{dx_1}{dt}=1$;第二个粒子的速度与它在有限线段上剩余的距离成正比,$\frac{dx_2}{dt}=R-x_2$。第二个粒子走过的距离与第一个粒子的距离满足微分方程 $\frac{dx_2}{dx_1}=R-x_2$。其解为:

    [ \begin{align} x_1 &= \log_{\frac{1}{e}} \left(\frac{R-x_2}{R}\right) \ &\approx \log_{\left(1-\frac{1}{R}\right)^R}\left(\sin(\theta)\right) \end{align} ]

    更多信息可参见 Dynamic logarithms。原文最初曾称对数三角函数表出现在普通对数表之后;但由于纳皮尔推导近似公式的方法很特殊,这并不准确。这个问题由 Hacker News 评论指出。 ↩︎

  6. 原文注:有几个流行的新冠疫情地图追踪器使用了墨卡托投影,令人遗憾。 ↩︎