静电场与 Marden 定理

我昨晚刚完成了一个 Shadertoy 小动画,演示平面几何中的 Marden 定理与静电场的关系:

这个动画包含两层含义:

  1. 在复平面上不共线的三个点 \(A,B,C\) 处各自放置一个带有单位正电荷,则电场强度为 0 的点都位于 \(\Delta ABC\) 的内部,这样的点有两个,它们是三次复多项式 \(P(z) = (z-A)(z-B)(z-C)\) 的导数 \(P'(z)\) 的零点。
  2. 不仅如此,这两个零点还是一个内切于 \(\Delta ABC\) 的椭圆的焦点,此椭圆是所有内切于 \(\Delta ABC\) 的椭圆中面积最大者,并且其与 \(\Delta ABC\) 的三边的切点均为各边中点。这个椭圆叫做 Steiner 内切椭圆

这个动画是受几天前 Albert Chern 的一篇推文启发所作,John Baez 也写了一篇关于这个话题的文章。我是由此才了解到 Marden 定理还有如此有趣的物理学解释,的确大开眼界!

Shadertoy 作品:三维欧式蜂巢、双曲蜂巢和 Coxeter 群的几何实现

本文介绍我最近完成的两个 Shadertoy 小项目,它们的目的是演示怎样用一种统一的方式从 Coxeter diagram 出发构造三维欧式空间 \(E^3\) 和三维双曲空间 \(H^3\) 中的均匀密铺,即所谓的蜂巢结构。我写这两个项目的目的是为了帮助自己更好的理解 Coxeter 群的标准几何实现,尤其是其中涉及的 Tits 锥的概念。球面蜂巢 \(S^3\) 的情形因为之前使用 Python + POV-Ray 实现过了,所以这里就没有再重复。由于个人水平和精力所限,我没有在场景美观上下太多功夫,也没有处理 dual 和 snub 的情形,主要目的还是展示背后的数学。

二维随机游动 (二):一个随机的完美迷宫分别有多少个死角、拐角、岔路和十字路口?

此为二维随机游动系列的第二篇文章,但本文介绍的理论也适用于一般的图。

问题:在 \(n\times n\) 的正方形网格图 \(G_n\) 的所有生成树中等概率地随机任选一个,记这个随机生成树为 \(T\)\(T\) 叫做 \(G_n\) 的一个均匀生成树。对 \(G_n\) 中任一顶点 \(v\)\(v\)\(T\) 的叶节点的概率是多少?

这个问题也可以表述为,“对一个完全随机的 \(n\times n\) 的完美迷宫,求它包含的死角的比例”。这里一个迷宫称作是完美的,如果迷宫中的任何两个房间之间都有且仅有唯一的道路相连 (这正是生成树的等价描述!)。迷宫中的一个房间称作是“死角”,当且仅当它只有一条道路与其它房间相通。换句话说,一旦进去了就必须原路返回,没有其它出路 (这正是叶节点的等价描述!)。

下图显示了三个不同的均匀生成树,它们分别来自大小为 \(80\times 80\)\(120\times120\)\(200\times200\) 的三个网格图,这三个生成树的叶节点 (用蓝色标出) 占全体顶点的比例分别为 \(1884/6400=0.294375\)\(4234/14400\approx0.294028\)\(11776/40000=0.2944\)。咦?看起来好像是在围着一个固定的值波动喔?

二维随机游动 (一):逃出太阳系可没有你想象的那么难!

这是一个关于二维随机游动的小系列,整理自我研究生时的读书笔记,每篇文章会从一个有趣直观的问题出发,介绍随机游动理论中的一个相关知识。整个系列的内容都比较基础,涉及的知识在 Durrett 的教材 1 中都可以找到。

今天的问题依然有趣,但是并不简单。

问题:假设某人以太阳系的中心为原点出发,在一个固定的平面内,以恒为 1 米的步长作随机行走。每次这个人等概率地随机选择东、南、西、北中任一方向,然后向此方向移动 1 米的距离。如果某个时刻此人回到了原点,或者离开了太阳系则过程结束。

现在有 A, B 两个旁观者打赌哪一种情形先发生,A 认为此人会先回到原点,B 认为此人会先离开太阳系。请问 A, B 获胜的概率分别是多少?

作为参考,太阳系半径约为 45 亿千米,看作一个中心在原点的圆形区域。

Shadertoy 作品:Kleinian 群的极限集与无限 Coxeter 群的极限根

惊喜的发现我的博客又是半年多没更新了。比起折腾博客主题的次数来,我上传文章的频率未免太低了点。太容易的东西没意思不想写,有意思的东西写起来又太不容易。尤其还要白天上班晚上带娃,个人可以静下来独处的时间严重不足。我觉得钻研数学最好的地方是在象牙塔里,不满足这个条件的话就得要么单身,要么娶两个老婆。大老婆以为你在陪小老婆,小老婆以为你在陪大老婆,这样你就有时间做点数学了。

言归正传,下面是正文。

具有超理想顶点的双曲蜂巢

下图来自 Roice Nelson 1,我先不说话,大家欣赏下,看看能不能看懂它画的是什么?

Coxeter 群,有限状态机与均匀密铺

终于完成了一个新的 Python 小程序,虽然还有一些功能有待实现,但是大致的效果已经出来了。这个程序是我最近半年多来利用几乎所有业余时间呕心沥血、披星戴月、艰苦攻关完成的新作品,是一个纯粹的、优雅的、有益于广大人民欣赏数学之美的程序。代码在 github 上,目前还有许多不尽人意的地方,后面还会继续维护和改进。

这个程序是我目前为止写过的所有程序中最难的一个,它涉及的数学知识相当复杂,使用了 Coxeter 群的一些深刻性质,所以理解起来可能不太容易。但是这个程序可以做的事情相当惊人,它可以用来绘制二维和三维欧式空间、双曲空间和球面上的各种均匀密铺 (uniform tilings),生成的图片效果非常优美。我最好还是先有图有真相:

例子

  • 下图是二维的欧式密铺 omnitruncated (4, 2, 4):

Todd-Coxeter 算法和 3D/4D 均匀多胞体

The English version of this doc is here.

本文要介绍的是我写的一个高颜值的、脱离了低级趣味的小程序:用 Python 和 POV-Ray 绘制各种三维多面体和四维多胞体,代码在 github 上。

以下是用这个程序渲染的一些例子:(注意不同颜色的顶点/边/面表示它们在对称群的作用下位于不同的轨道中,具体解释见后)

Möbius 变换的分类与上半双曲空间的等距

本文的想法源自 Roice Nelson 的 shadertoy 项目,我觉得他的创意很棒,就是效果有点糙,于是动手改进了一番,结果见这里。不懂的人看这个动画可能只是觉得好玩,其实它背后的数学并不简单。

这篇文章将用动画的形式从三个角度演示 Möbius 变换,这三个角度是密切相关的:

  1. Möbius 变换作为扩充复平面 \(\hat{\mathbb{C}}\) 到自身的全纯函数。
  2. Möbius 变换作为 Riemann 球面 \(S^2\) 到自身的全纯函数。
  3. Möbius 变换作为上半双曲空间中的等距变换。

本文只做演示,并不介绍详细的数学证明。读者可以参考下面的两份资料:

  1. 维基百科页面.
  2. Visual complex analysis, Tristan Needham.

借助本文的动画你可以很容易地理解这两份资料中的内容。

文中的动画全部使用 shader 程序制作,需要你的浏览器支持 Webgl2.0,代码在 github 上。

 | 

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