CurvG
登录

第 11 个 · 动力系统 · 混沌

两行公式、四个数,为什么能画出这样的图?

从一个点出发,代进两行公式得到下一个点,再代进去……跳三百万次,把落点的疏密画出来,就是一幅画。改动四个数,画面连续变形;有些数下,混沌会突然消失,只剩几个点。

为什么?

讲解

每一步都完全确定,点却永远不重复、也不会跑远,在一个有分形细节的形状上无穷无尽地游走:这就是奇异吸引子。李雅普诺夫指数大于 0 是混沌,小于 0 时轨道会落进少数几个点的循环。

01一个映射

这组公式叫 Clifford 吸引子(归于 Clifford Pickover):

xn+1=sin⁡(a yn)+ccos⁡(a xn),yn+1=sin⁡(b xn)+dcos⁡(b yn)x_{n+1}=\sin(a\,y_n)+c\cos(a\,x_n),\qquad y_{n+1}=\sin(b\,x_n)+d\cos(b\,y_n)

因为 ∣sin⁡∣|\sin|、∣cos⁡∣|\cos| 不超过 1,点永远待在 ∣x∣≤1+∣c∣|x|\le1+|c|、∣y∣≤1+∣d∣|y|\le1+|d| 的方框里,不会跑到无穷远。画板做的事情很简单:迭代三百万次,统计每个像素被落中多少次,用对数把次数映射成亮度。

02混沌的标尺:李雅普诺夫指数

取两个挨得极近的起点,各自迭代。如果它们的距离平均每步乘以 eλe^{\lambda},λ\lambda 就是(最大)李雅普诺夫指数。画板用雅可比矩阵带着一个切向量一起迭代来算它。

  • λ>0\lambda>0:微小的差别被指数放大,这是混沌,点铺成一幅有分形细节的画。
  • λ<0\lambda<0:差别被压小,所有点都被吸进同一个循环。a=−0.95a=-0.95、b=1.6b=1.6、c=1c=1、d=0.7d=0.7 时是一个 3 点循环。
  • λ≈0\lambda\approx0:点沿一条闭合曲线绕圈,不混沌也不停下。

画廊里的六幅,λ\lambda 都大于 0。

03为什么会有"形状"

混沌并不意味着点在方框里乱撒。映射会把平面反复拉伸、折叠:拉伸让相邻的点分开(混沌),折叠把它们收回有限的区域。一遍遍拉伸折叠之后留下的,是一个面积为零、却有无穷层细节的集合,点在上面的分布还有固定的疏密,这就是画面里的明暗。

洛伦兹吸引子(本站第 3 个奇观)是连续时间里的同一类东西;这里是离散的一步一跳,所以几百万个点只要零点几秒就能算完。

常见问题

同一组数,每次画出来都一样吗?

一样。虽然单个点的轨迹对起点极其敏感,但点落下的疏密(吸引子上的"不变测度")和起点无关,所以画面稳定,换个起点也一样。

"随机一幅"是怎么找的?

在 −2.5 到 2.5 之间随机取四个数,算李雅普诺夫指数,只接受大于 0.1 且点铺得够开的组合;不满足就再抽一次。大约几次就能抽到一幅。

可以把它打印出来吗?

可以用底栏的"保存分享图"或导出视频。把四个数记下来,就能在任何程序里用同样的两行公式重新画出同一幅画。

课本里的这部分

相关曲线

资料: Paul Bourke — Clifford attractors · Lyapunov exponent — Wikipedia · Attractor — Wikipedia