FractalPark
奇异高级

有理映射 1

一种二次有理迭代:z²/(z + c)。它有一个零点,还有一个会随 c 移动的极点。

在探索器中打开
有理映射 1 的 Julia 局部放大:弯曲扇叶自极点向外辐射
FractalPark 渲染的有理映射 1:弯曲扇叶构成慢旋扇面,自极点向外辐射,窄色带记录擦过极点的轨道。

概览

有理映射 1 迭代 z² / (z + c)。像 z² + c 这样的多项式没有分母失效的地方;这条映射有。z = −c 处立着一个随 c 移动的极点。轨道擦过它,可能一下被甩远,下一步又改走另一条路。

它只有一个零点(z = 0)和一个极点(z = −c)。有理次数仍是二,极点却把平面重新划开。远离原点时,z² / (z + c) 大致按 z 增长(大 |z| 时 z² / (z + c) ≈ z),无穷远便不再是唯一主导的不动点。盆地围着有限个吸引周期聚集,极点在其间切出弯曲通道和扇形区域。

FractalPark 同时呈现 c 变化的参数平面和 c 固定的 Julia 图。这张导读图是 Julia 局部:弯曲扇叶从极点附近张开,细色带跟着擦过奇点的轨道。

数学原理

有理迭代

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

每一步先把 z 平方,再除以 z + c。分子在 z = 0 处为零;分母在 z = −c 处为零,那里就是极点。它的有理次数为二:z² 是二次,z + c 是一次;消去公因子后,得到一个零点和一个极点(各计重数)。

贴近极点试一次。取 c = 0.5,极点在 z = −0.5;从它右侧紧邻的 z₀ = −0.49 出发:z₁ = (−0.49)² / (−0.49 + 0.5) = 0.2401 / 0.01 = 24.01。一步就被甩远。由于 |z₁| 很大,下一步 z₂ ≈ z₁² / z₁ = z₁ = 24.01;它不会像磁石家族那样猛然折回。像素颜色记录它越过逃逸阈值前走了多少步。

多项式映射里,无穷远总会吸引逃离的轨道;这里远离原点的行为接近线性(z → z),被甩远的轨道反而可能慢慢漂移。因此逃逸时间着色铺成宽缓渐变,而非 z² + c 里突兀的跳色。

视觉特征

这是一张 Julia 局部放大。极点附近张开弯曲扇叶和扫掠通道,顺着映射的局部方向延展。叶片之间的细色带,记下那些擦过极点、许多步后才越过逃逸阈值的轨道。

远处的动力学接近线性,不是爆炸式增长,色带因而宽而平滑。画面像一把缓慢转动的扇子,极点就是转轴。c 一变,极点的位置和整把扇子的布局都会变。

再创作与示例

从 canonical Document 开始

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

常见问题

为什么称为有理映射?

它的迭代规则是两个复多项式之商:z² 除以 z + c,不是单独一个多项式。因此它有极点——分母为零、函数值趋于无穷的地方;多项式映射没有这一站。

极点在哪里?

令 z + c 为零,就得到 z = −c。这个唯一极点随 c 移动,也参与画出图中的弯曲扇面和叶片。轨道从旁边经过会被甩到很大数值;远离原点时映射接近线性增长,它随后可能缓慢漂移。

源码导读

  1. frm-v1:69a7d072638f6981ee8e06c85d03831c9a53fb549337605eb35bb3cdf1db4e10:init/0

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

  2. frm-v1:69a7d072638f6981ee8e06c85d03831c9a53fb549337605eb35bb3cdf1db4e10:loop/0

    在 rationalMap1 中,此循环节点仅执行:numer = z * z。

  3. frm-v1:69a7d072638f6981ee8e06c85d03831c9a53fb549337605eb35bb3cdf1db4e10:bailout

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

语法特征

initialization-flow

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

iteration-flow

在 rationalMap1 中,迭代特征聚焦 numer = z * z 这一个循环赋值。

bailout-test

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

参数实验

步骤

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

观察要点

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

练习

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

完成检查

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

来源与权利

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

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

公式档案

rationalMap1

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

rationalMap1 的确定性预览

规范源码

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

参数

没有声明参数

规范源码

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

正在加载规范源码…

来源与当前实现

公式 ID
37425fb2-8542-502f-94ac-94c0ccb6e508
规范名称
rationalMap1
原始名称
rationalMap1
历史来源
FractalPark
当前实现
项目自有

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

对权利或署名有异议?

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