数学 / 极坐标与参数方程 · 换一套坐标 / 摆线与由运动定义的曲线 待审核 4 / 4
滚动的轨迹

摆线与由运动定义的曲线

前一页的曲线都有普通方程,参数方程只是另一种写法。本页这一族不同:摆线的参数方程由「圆在滚」直接写出,而它的普通方程需要反解一个超越方程,写不成初等的 y=f(x)y = f(x)。对这一族而言参数方程不是可选的记法,是唯一可行的记法。这一族还带着两条与运动有关的性质,它们在十七世纪引出了变分法与第一台高精度摆钟。

1 · 圆滚动划出的轨迹

设半径为 aa 的圆沿 xx 轴向右无滑动地滚动,起始时圆周上的定点 MM 在原点。圆转过角 θ\theta 后,滚过的弧长等于走过的距离,故圆心到了 (aθ,a)(a\theta, a)。定点相对圆心的位移是 (asinθ,acosθ)(-a\sin\theta, -a\cos\theta),两者相加即得摆线(cycloid)的参数方程:

{x=a(θsinθ)y=a(1cosθ)\begin{cases} x = a(\theta - \sin\theta) \\ y = a(1 - \cos\theta) \end{cases}

推导只用到「无滑动」这一个条件,参数 θ\theta 就是圆转过的角。一拱(θ\theta002π2\pi)的跨度是 2πa2\pi a,拱高是 2a2a。另有两个量不由参数方程一眼看出,数值积分给出的结果与经典闭式吻合:一拱的弧长是 8a8a,一拱下方的面积是 3πa23\pi a^2,即滚动圆面积的三倍。

反过来写成普通方程就麻烦了。由 yy 解出 cosθ=1ya\cos\theta = 1 - \frac{y}{a} 可以得到 θ\theta,代回第一式得

x=aarccos(1ya)2ayy2x = a\arccos\left(1 - \frac{y}{a}\right) - \sqrt{2ay - y^2}

这是 xx 关于 yy 的显式;而要写 yy 关于 xx 就必须反解 θsinθ=xa\theta - \sin\theta = \frac{x}{a},那是一个超越方程,没有初等闭式。星形线上的情况更直接:x=0.5x = 0.5 处有两个 yy 值(实测 ±0.225\pm 0.225),它根本不是函数图像。

图 1-1 · 圆滚动生成摆线。可拖动滚动角观察圆心、定点与已划出的轨迹,读数给出当前点的坐标、已走过的弧长与一拱的三个整体量。

2 · 最速降线

给定不在同一竖直线上的两点 AABBBBAA 的下方),求一条连接它们的曲线,使质点自 AA 静止出发、无摩擦地沿曲线滑到 BB 的时间最短。Johann Bernoulli 于 1696 年公开提出这个问题,次年收到六份解答,其中包括 Newton 的一份匿名稿。答案是一段摆线。

伽利略在 1638 年考察过同一个问题,认为圆弧比直线快。前半句对,后半句不对——圆弧确实比直线快,但它不是最快的。取 AA 为原点、B=(π,2)B = (\pi, -2)g=9.8g = 9.8,三条滑道的耗时实测如下:

滑道 耗时(秒) 与直线之比
摆线(a=1a = 1θ\theta 走到 π\pi 1.00351.0035 0.84360.8436
圆弧(在 AA 处竖直相切) 1.02901.0290 0.86500.8650
直线 1.18961.1896 11

摆线比直线省 15.64%15.64\%,而圆弧已经省了 13.50%13.50\%。伽利略的猜测差得不多,这也是它当年看起来可信的原因。摆线滑道的耗时另有闭式 θBa/g\theta_B\sqrt{a/g},本例即 π1/9.8=1.00354496\pi\sqrt{1/9.8} = 1.00354496,数值积分给出 1.003544961.00354496,两者在小数点后八位一致。

这个问题的历史地位不在答案本身,而在解法:它要求在「所有连接 AABB 的曲线」这个无穷维集合上求极值,欧拉与拉格朗日随后把这类问题整理成变分法。

图 2-1 · 三条滑道的下滑耗时对照。可调终点位置观察三条曲线的形状与耗时排序,读数给出各自的耗时、与直线之比,以及摆线那一条的闭式核对。

3 · 等时性与摆钟

摆线的第二条性质更反直觉:在开口朝下的摆线上,质点自任意一点静止下滑到最低点的时间相同,与出发点的高度无关。这条性质叫等时性,惠更斯(Christiaan Huygens)于 1659 年发现。

耗时的闭式是 πa/g\pi\sqrt{a/g}。取 a=1a = 1g=9.8g = 9.8 逐个核对:在 (0,π)(0, \pi) 内均匀取 200200 个出发角,每个都做一次数值积分,与闭式 1.003544961.00354496 的最大偏差是 1.276×1091.276 \times 10^{-9},出现在 θ0=3.1260\theta_0 = 3.1260 这一档,即最靠近最低点的那个出发点。出发点越低,下滑距离越短,积分区间越窄,偏差反而抬头。

对照组是圆弧。单摆走的是圆弧,它的等时性只在小摆角下近似成立:同一条半径为 11 的圆弧上,从较高处释放与从较低处释放的耗时并不相等,实现里的单测就是拿这条不等式来区分两族曲线的。

惠更斯把这条性质用进了摆钟。他在 1673 年的《Horologium Oscillatorium》里给出方案:在摆的悬点两侧各装一片摆线形的挡板(摆线颊),摆绳绕着挡板收放,摆锤走的轨迹就成了摆线,于是振幅变化不再影响周期。方案在数学上无懈可击,实际效果却不理想——挡板带来的摩擦与摆绳的形变,抵消掉了等时性省下的那点误差,后世的高精度摆钟改走另一条路:把摆角限制得足够小,让圆弧的近似等时性够用。

注 · 摆线在本页出现了两次,而两次的身份不同:最速降线是「所有曲线里下滑最快的那一条」,等时曲线是「下滑时间与出发点无关的那一条」。两个问题的提法互不相干,答案却是同一族曲线,惠更斯与伯努利兄弟当年也是分头得到的。

4 · 另外两种滚动面

摆线的推导只用到「无滑动地滚动」,把直线换成圆即得另外两族。半径 rr 的圆在半径 RR 的定圆外侧滚动,动圆上定点的轨迹是外摆线(epicycloid):

{x=(R+r)costrcosR+rrty=(R+r)sintrsinR+rrt\begin{cases} x = (R + r)\cos t - r\cos\frac{R + r}{r}t \\ y = (R + r)\sin t - r\sin\frac{R + r}{r}t \end{cases}

在内侧滚动则是内摆线(hypocycloid),x=(Rr)cost+rcosRrrtx = (R - r)\cos t + r\cos\frac{R - r}{r}ty=(Rr)sintrsinRrrty = (R - r)\sin t - r\sin\frac{R - r}{r}t。这一族曲线的闭合条件由 R:rR : r 约分后的分母定:约成最简分数 p:qp : q 后,动圆要绕 qq 圈轨迹才闭合。R=4rR = 4rq=1q = 1,一圈即闭合,得到四个尖点的星形线;R:r=5:3R : r = 5 : 3q=3q = 3,要绕三圈。儿童玩具 spirograph 画出的花样就是这一族,齿数比决定图案的对称性。

两条与前面各页接上的对照,实现里都逐点核对过:沿参数区间等距取 20002000 个点,R=4rR = 4r 的内摆线与星形线 x=acos3tx = a\cos^3 ty=asin3ty = a\sin^3 t 逐点最大偏差 2.238×10152.238 \times 10^{-15}R=rR = r 的外摆线把尖点平移到极点后,与心形线的极坐标方程 ρ=2(1cosθ)\rho = 2(1 - \cos\theta) 最大偏差 2.220×10152.220 \times 10^{-15}。后一条把本系列的两半接了起来:同一条曲线,极坐标那边看到的是极径随极角摆动(见 常见曲线的极坐标方程 §4),参数方程这边看到的是一个圆在滚。

图 4-1 · 外摆线与内摆线。可调定圆与动圆的半径比观察尖点数与闭合所需的圈数,读数给出约分后的比值、闭合圈数,以及与星形线或心形线的逐点偏差。

5 · 数值积分在起点处的奇点

下滑耗时 T=ds/vT = \int \mathrm{d}s / vv=2gΔhv = \sqrt{2g\Delta h} 在起点为零,被积函数在那里发散。积分本身收敛(1/1/\sqrt{\cdot} 型奇点可积),但常规求积在这个奇点上退化得厉害:直线滑道上用中点法,取 10310^3 个区间误差 1.138×1021.138 \times 10^{-2}10510^5 个降到 1.138×1031.138 \times 10^{-3}10710^7 个才到 1.138×1041.138 \times 10^{-4}。取样量每翻一百倍,精度只提高十倍,正是 O(n1/2)O(n^{-1/2}) 的样子。

换元 t=t0+s2Δtt = t_0 + s^2\Delta t 把这个奇点抹平:dt=2sΔtds\mathrm{d}t = 2s\,\Delta t\,\mathrm{d}s 里的 ss 恰好抵消被积函数里的 1/s1/s,之后走 Simpson,200200 个区间即得 1.150×10121.150 \times 10^{-12}

余下的误差来自一个意外的地方。区间数继续加不再有用:20002000 个是 1.212×10121.212 \times 10^{-12}2000020000 个是 1.304×10121.304 \times 10^{-12}200000200000 个反而涨到 3.071×10123.071 \times 10^{-12}。查下来是弧长里那个中心差分的步长 hh。固定区间数 20002000 单调 hh 实测:h=104h = 10^{-4} 时误差 8.9×10148.9 \times 10^{-14}h=106h = 10^{-6}3.9×10123.9 \times 10^{-12}h=108h = 10^{-8}1.5×1091.5 \times 10^{-9}。误差与 hh 成反比,是舍入被除法放大的形状,不是截断。实现里最初取 h=107h = 10^{-7},想着越小越准,实测比 10410^{-4} 差三个数量级。现在取 10510^{-5}:直线滑道上 10410^{-4} 更准,但那条路径的三阶导为零、截断误差本就不存在,弯曲的滑道上不能照搬。

6 · 参考文献

  1. Cycloid. Wikipedia. 摆线的推导、弧长 8a 与一拱面积 3πa²。https://en.wikipedia.org/wiki/Cycloid
  2. Brachistochrone curve. Wikipedia. 最速降线问题与 1697 年的那批解法。https://en.wikipedia.org/wiki/Brachistochrone_curve
  3. Tautochrone curve. Wikipedia. 等时曲线与惠更斯 1659 年的结果。https://en.wikipedia.org/wiki/Tautochrone_curve
  4. Huygens, C. (1673). Horologium Oscillatorium sive de motu pendulorum. Paris: F. Muguet. 摆钟的设计与摆线颊。
  5. Epicycloid. Wikipedia. 外摆线及其闭合条件。https://en.wikipedia.org/wiki/Epicycloid
  6. Astroid. Wikipedia. 星形线及其作为内摆线的来历。https://en.wikipedia.org/wiki/Astroid