与咖啡杯有关的数学:焦散线方程

周末在家看了一天 YouTube 上 Numberphile 频道里面 Tadashi Tokieda 教授的视频,非常过瘾。Tokeida 教授的讲述非常生动、幽默,让你从一开始就被深深吸引。

其中有两个视频使用了杯子作为道具,第一个是 “听声辨形”,即通过倾听敲击杯子的音调变化来判断把手的位置:

第二个演示了杯子中小球的旋转方向会根据球的数目发生某种“相变”的现象:

其实与杯子有关的有趣的数学问题还有不少,还有一个可能是大家都已经非常熟悉的,即光线在杯子内壁反射形成的曲线:

从上图中可见光线在杯子内壁反射后形成了一个光斑 (术语叫焦散),焦散的形状是一条优美的曲线,叫做心脏线 (cardioid)。焦散与所有的反射光线是相切的。

形成焦散的原因是,从光源出发的光线在杯子内壁反射以后路径出现了交叉,其中某些位置经过的光线特别密集,所以亮度就更高。

焦散的具体形状其实和光源的位置有关:当光源是一个点光源,且位置恰好在杯子边缘上某一点时得到的才是严格意义下的心脏线;当光源是平行光源时 (可以视作无穷远处的点光源),得到的焦散是肾形线。心脏线和肾形线的形状非常像。当光源距离杯子有一段距离时,焦散的形状介于心脏线和肾形线之间。

于是趁着周末我动手推导了一番焦散的参数方程。这个推导其实网上的资料已经很多了,然而我很懒,看到那些微积分推导就头疼,也记不住它们,所以采用了一个另类点的方法,以下是具体步骤。

Möbius 变换的分类与 Poincaré 双曲空间的等距

这几天因为疫情居家观察难得多出点时间 (不用健步挤地铁),可以写点小文章。我之前写过一篇介绍 Möbius 变换分类的文章,今天继续那里的讨论,介绍 Möbius 变换 \(M\) 作为 Poincaré 双曲空圆盘 \(\mathbb{H}\) 上的等距的两种构造方法:

  1. 指定 \(M\)\(\mathbb{H}\) 中不动点的位置,根据不动点的位置变换可以分成椭圆/抛物/双曲三种不同类型,所以还需要再额外指定一个旋转角度/平移距离/缩放因子。
  2. 指定一对 \(\mathbb{H}\) 中的测地线作为镜面,则关于这两个镜面的反演变换的复合变换是一个 Möbius 变换,此变换是椭圆/抛物/双曲型的,当且仅当这对镜面在 \(\mathbb{H}\) 中是相交/平行/超平行的。

这两种方法分别对应在 \(M\) 作用下保持不变的两个圆族。

本文的插图使用 matplotlib 绘制,代码在 github 上。没有使用 shader 画的一个原因是因为计划用这部分代码继续画 circle packing,另一个原因是采用 Python 实现可以比较严格的遵循数学逻辑。当然如果后面有时间也不排除加上 shader 动画的可能。

Coxeter 群基础知识 (二):几何实现

在本系列的第一篇文章中讨论了两个反射生成的万花筒的结构,这篇文章是本系列的第二篇,将讨论推广到一般的有限生成 Coxeter 群。

我们还是会同时关注 \(V^\ast\) 中根系 (反射镜面) 的结构和 \(V\) 中 Tits 锥(万花筒)的结构。

“锥”是本文中出现的一个高频词,有必要在这里明确澄清。本文采用如下定义:

\(V\) 是一个实向量空间,称集合 \(C\subset V\) 是一个,如果对任何 \(x\in C\) 和实数 \(\alpha\geq0\)\(\alpha x\in C\)。此外如果 \(C\) 还是一个凸集,就称 \(C\) 是一个凸锥。这时对任何 \(x,y\in C\) 和非负实数 \(\alpha,\beta\geq0\) 都有 \(\alpha x + \beta y\in C\) 成立。

Coxeter 群基础知识 (一):反射

这个系列的目的是整理下面两个项目涉及的理论知识:

这两个项目的主题都是双曲空间中的万花筒,背后的主要数学支撑是 Coxeter 群的理论。我计划分四篇文章来介绍它们:

  1. 两个反射生成的 Coxeter 群。
  2. 一般 Coxeter 群的几何实现。
  3. 双曲 Coxeter 群与圆堆。
  4. Coxeter 群的极小根与正则语言。

前两篇是预备知识,后面两篇分别对应两个项目。

本文是这个系列的第一篇,介绍两个反射生成的 Coxeter 群的结构,直白点就是两个反射镜面得到的万花筒的结构。这是最简单的、同时又是非平凡的 Coxeter 群的例子,理解它们对后面的学习至关重要。麻雀虽小,五脏俱全,许多对一般 Coxeter 群成立的重要性质在 rank=2 这个最简单的情形也可以看得非常清楚。不幸的是,这篇的文字读起来会很晦涩,劝退指数略高。这样处理是受到了 Casselman 的影响,他的讲义就是首先对两个反射的情形“挖地三尺”般进行讨论。我开始念的时候很不适应,心想反射变换那么简单,有什么好教的呢?就算两个反射放在一起又能复杂到哪去?后来才认识到,熟悉 rank=2 的 Coxeter 群的表示对后面的理解大有助益。特别是 \(n_{s,t}>4\) 的情形对应的是两个双曲空间中超平行的镜面,关于它们的镜面反射是两个球面的反演变换。所以如果只把对万花筒的认识停留在生活中见到的万花筒的样子的话,是难以领会许多定理的含义的。

在本文中,需要始终抓住的一条主线是同时注意发生在 \(V\)\(V^\ast\) 上的两个现象:

  1. \(V\) 上群在 Tits 锥上是如何作用的。
  2. \(V^\ast\) 上根系 \(\Phi\in V^\ast\) 的结构。

万花筒里的数学:双曲空间、蜂巢、球堆和分形

本文比较长,且包含大量图片和动画。

本文介绍我和哥廷根大学的陈浩老师最近合作完成的一个数学可视化项目:绘制高维双曲空间中的球堆。这个项目非常有意思,可谓“雅俗共赏”,一方面读者不需要具备专门的数学知识,仅通过直观欣赏即可领略数学中的对称之美、分形之美;另一方面它的背后涉及不少硬核的数学,如双曲几何、Coxeter 群、动力系统等,漂亮的图形背后蕴含着更为深刻的内在美,所以我迫不及待地把它写出来分享给大家。我尽量不引入复杂的数学概念和证明,虽然有时候也很难避免做一些推理。

文章的主标题是万花筒,万花筒是我们生活中常见的一种玩具,我想对它大家应该并不陌生,而副标题则涉及四个数学名词双曲空间 (hyperbolic space)、密铺 (tiling)、球堆 (ball packings)、分形 (fractals),这几个概念恐怕对有些同学就比较陌生了。打个比方的话,双曲空间是故事发生的舞台,密铺和球堆是舞台上的两位主演,它们相互合作呈现出分形的效果。

 | 

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器