FractalPark
奇异高级

McMullen 2–3 映射

一种有理映射:平方项把点推向外,三次倒数项则把轨道带向原点的极点。

在探索器中打开
淡蓝色的 McMullen 分形围成多边形般的圆胞环带,中央留有宽阔空腔
FractalPark 的 McMullen 2–3 渲染:层层嵌套的珠状边界围绕着宽阔的中央空腔。

概览

McMullen 2–3 映射属于通常写作 \(f_\lambda(z)=z^n+\lambda/z^d\) 的一族函数。FractalPark 用 \(c\) 表示参数,取 \(n=2\)、\(d=3\)。起初它像二次映射多加了一项;可 \(z^3\) 一进分母,规矩就变了:原点不是普通点,而是极点。

一条公式里有两片地带。远离原点,\(z^2\) 占上风,把大数推得更远;贴近零,\(c/z^3\) 接手,也把点送向无穷,只是要穿过极点。中间那条边界一直在移动,谁也压不住谁。

这条边界会闭成圆环、碎成珠链似的圆胞,或连成一张网。形态取决于参数 \(c\) 和临界点的轨道。McMullen 家族没有统一的轮廓。

数学原理

二次项与三阶极点

z(n+1) = z(n)^2 + c / z(n)^3

每一步先把当前复数平方,再加上 \(c/z^3\)。当 \(|z|\) 很大时,第一项约按 \(|z|^2\) 增长,倒数项按 \(1/|z|^3\) 衰减。靠近零时,局面翻过来,倒数项会急剧增大。

把两项通分,可以得到

$$ f_c(z)=\frac{z^5+c}{z^3}. $$

映射在 \(z=0\) 有一个三阶极点;当 \(c\neq0\) 时,它作为有理映射的次数是五。“2–3”说的是原公式中两个幂的指数,不是映射次数。

严格的数学定义里,原点会在黎曼球面上映到无穷远点。数值渲染器不能真的除以零,FractalPark 因而把极接近原点的值换成很小的非零值,并保护分母。这是计算上的护栏,不是另一条数学公式。

历史

这族映射得名于数学家 Curtis T. McMullen。1988 年,他在论文 *Automorphisms of Rational Maps* 第 7 节构造了一类有理映射,其 Julia 集会分裂成“Jordan 曲线的 Cantor 集”——可以把它想成无穷多条彼此分离的闭合曲线,又以 Cantor 集的方式排列。后来的研究者把与这一构造相关的 \(z^n+\lambda/z^d\) 称为 McMullen 映射。McMullen 现任哈佛大学 Cabot 数学教授,他的个人学术主页和论文目录仍可直接访问。

2–3 是满足下面这个特征不等式的最小整数组合:

$$ \frac{1}{n}+\frac{1}{d}<1, $$

因为 \(1/2+1/3=5/6\)。它也给出了这部分理论里最低的映射次数 \(n+d=5\)。不过,只满足不等式并不意味着每个参数都一定产生圆圈;相关临界轨道还必须进入特定的逃逸区域。

McMullen 之后的研究进一步厘清了参数与形态之间的关系。Robert Devaney、Daniel Look 和 David Uminsky 在 2005 年证明了“逃逸三分律”:当自由临界轨道逃向无穷时,Julia 集可能是 Cantor 集、圆圈的 Cantor 集,或 Sierpiński 曲线,具体取决于它以何种方式进入无穷远吸引域。

视觉特征

示例图围着一个明亮宽阔的中央空腔展开。外面是一圈大小不一、像吹起的圆胞;再往外是细密的小圆胞花边。最初平滑的淡蓝环带,靠近看便露出拥挤的层次。

外缘略带折面感,不是标准圆环;圆胞的大小和形状也不整齐。这属于当前参数、取景和着色方案,不代表每个 McMullen 映射都长成这样。浅色方案强调浮雕感和嵌套边界,不用强烈色带显示逃逸速度。

再创作与示例

从 canonical Document 开始

打开本指南使用的同一份已审定公式状态,再在交互式探索器中调整视图、着色、变换或动画。

常见问题

名称中的 2 和 3 表示什么?

它们对应 \(z^2+c/z^3\) 中的两个幂:多项式部分把 \(z\) 平方,倒数部分则除以 \(z\) 的三次方。在一般的 McMullen 映射族中,这两个指数通常记作 \(n\) 和 \(d\)。

它们不能理解成“二次到三次”。通分以后,映射写作 \((z^5+c)/z^3\);只要 \(c\neq0\),它作为有理映射的次数就是五。

z = 0 时会发生什么?

分母 \(z^3\) 在这里等于零,所以原点是一个极点,而不是普通初值。在扩充后的复平面上,零会映到无穷远;附近的点也会被猛烈推出去,强度大致按 \(1/|z|^3\) 增长。

这个极点不是渲染误差;它正是这个家族区别于 \(z^2+c\) 一类多项式的地方。FractalPark 只在零附近加上一道极小的数值保护,让着色器避开未定义的除零运算,同时保留相同的极限行为。

参考资料

源码导读

  1. frm-v1:37a6c61666fd5bf3e2bdef96849dc27a10bd58d152e6a161005ab6e565f12ce0:init/0

    在 mcMullen23 中,初始化节点仅执行:ismand 分支把 z 设为 0,否则设为 pixel。

  2. frm-v1:37a6c61666fd5bf3e2bdef96849dc27a10bd58d152e6a161005ab6e565f12ce0:loop/0

    在 mcMullen23 中,此循环节点仅执行:z3 = z ^ 3。

  3. frm-v1:37a6c61666fd5bf3e2bdef96849dc27a10bd58d152e6a161005ab6e565f12ce0:bailout

    在 mcMullen23 中,bailout 节点仅测试:|z| <= 256。

语法特征

initialization-flow

在 mcMullen23 中,初始化特征聚焦 ismand 分支把 z 设为 0,否则设为 pixel 这一个起始操作。

iteration-flow

在 mcMullen23 中,迭代特征聚焦 z3 = z ^ 3 这一个循环赋值。

bailout-test

在 mcMullen23 中,终止特征聚焦比较 |z| <= 256。

参数实验

步骤

  1. 以固定参数平面基线渲染 mcMullen23:中心 (0, 0)、缩放 0.25、旋转 0、96 次迭代。
  2. 除迭代次数外保持基线不变,以 48 次迭代再渲染一次,并与 96 次迭代的基线比较。

观察要点

在 mcMullen23 中,记录 48 次与 96 次迭代的比较是否出现差异,并标出源代码限制 |z| <= 256。

练习

在 mcMullen23 中,找出三个注释:分别说明 ismand 分支把 z 设为 0,否则设为 pixel、z3 = z ^ 3 和 |z| <= 256,并解释为什么相邻语句不属于循环注释。

完成检查

在 mcMullen23 中,完成时应列出全部 3 个注释键,并准确说明 z3 = z ^ 3 与 |z| <= 256 的作用。

来源与权利

来源说明见英文事实单元。

权利说明见英文事实单元。

公式档案

mcMullen23

该 FractalPark 规范实现已发布并可运行。

mcMullen23 的确定性预览

规范源码

语言
frm-like/1
标准库
1
Profile 模式
parameter-plane
Profile 中心
0, 0
Profile 缩放
0.25
Profile 迭代次数
96
Profile 证据等级
family

参数

没有声明参数

规范源码

这是经过验证的只读规范版本。Remix 会创建一份独立的可编辑分支。

正在加载规范源码…

来源与当前实现

公式 ID
cc40b50c-d3ff-54f0-b4ea-98bdf0fd0096
规范名称
mcMullen23
原始名称
mcMullen23
历史来源
FractalPark
当前实现
项目自有

这是 FractalPark 项目自有实现。所链接文件是固定版本的规范 Definition。

对权利或署名有异议?

请附上公式 ID 和支持证据。维护者可在复核期间暂缓或撤下该实现。 contact@fractalpark.com