跳转到内容

分形/复平面上的迭代/boettcher

来自维基教科书,开放的书籍,开放的世界

Boettcher 函数将 Mandelbrot 集(Julia 集)的补集共形映射到闭合单位圆盘的补集。

参数平面上的复势

[编辑 | 编辑源代码]
势的梯度

复势

动力学平面上的复势

[编辑 | 编辑源代码]

是一个度数为 d 的多项式,并且 那么多项式 p 的格林函数



外部补集填充的 Julia 集是

可以使用以下方法进行分析

  • 逃逸时间(简单但只给出径向值 = 逃逸时间)LSM/J,
  • 距离估计(更高级,连续,但只给出径向值 = 距离)DEM/J
  • Boettcher 坐标或复势(最佳)

"由于 Bottcher 定理[1],对 多项式 的动力学比对一般有理映射的动力学理解要好得多"

超吸引不动点

[编辑 | 编辑源代码]

对于 复二次多项式,存在许多 超吸引不动点乘子 = 0)

  • 无穷大(对于多项式来说,它始终是超吸引不动点)。在这种情况下,Julia 集的外部是超吸引域
  • 当 c 是 Mandelbrot 集的任何双曲分量的中心(核) 时,Julia 集的内部是一个超吸引域
    • 是映射 的有限超吸引不动点
    • 是映射 的两个有限超吸引不动点。
    • 其他中心

描述

[edit | edit source]

靠近[2]超吸引不动点(例如无穷大)时,离散动力系统[3] 的行为

基于 复二次多项式

基于

它可以被视为在两个坐标系中观察的同一个动力系统

  • 简单(w)
  • 难以分析(z)

[3]

换句话说,映射 在无穷远处与映射 共轭 [4][5]

名称

[edit | edit source]
  • 是Boettcher坐标
  • 是Boettcher函数 [6]
  • Boettcher函数方程:[7][8]
 

其中

 


复势或Boettcher坐标具有

  • 径向值(实势)LogPhi = CPM/J = 格林函数的值
  • 角值(外部角)ArgPhi

这两个值都可以用于 使用二维梯度着色

计算

[edit | edit source]

数值解

[edit | edit source]

方法

[edit | edit source]
原始方法
[编辑 | 编辑源代码]

Boettcher 函数方程:[9]


其中

  • f 是一个给定的函数,在固定点 x 的邻域内解析
  • F 是 Boettcher 函数

当固定点 x 是超吸引时


一个“基本算法”



是一个函数,使得



那么函数方程的一般解由下式给出


其中 Q 是任意常数。

Mathemathica
[编辑 | 编辑源代码]

Mathemathica 中的公式[10]


要计算 Boettcher 坐标 ,使用此公式[11]

看起来“很简单”,但是



PDE 的方法
[编辑 | 编辑源代码]

为了在给定域 上显式构造黎曼映射,使用以下 PDE 方法[12]

  • 首先,平移域,使其包含原点
  • 接下来,使用数值方法构造一个调和函数 ,满足 对于所有 ,并令

然后 ,以及 是调和的,因此 上的黎曼映射的径向分量(即模数)。

现在可以通过以下事实确定角分量:它的等值线与 的等值线垂直,并且在原点附近具有相同的角间距。

例子

[edit | edit source]
巴塞利卡茱莉亚集
[edit | edit source]
  • 是曼德勃罗集的周期 2 双曲分量的中心
  • 不动点
  • 超吸引 2 点循环(极限循环):(周期为 2)
  • 2 条 外部射线 降落在不动点 上,它是中心为 z=-1 的填充茱莉亚集分量的根点
  • 巴塞利卡的捏合点是外部射线角为形式为 的点的,对于某些 k,n∈Nk, n ∈ Nk,n∈N。
中心分量
[edit | edit source]
巴塞利卡层压结构

描述

  • 中心有界法图分量
  • 大的中心分量,其中包含复平面的原点
  • 它是巴塞利卡层压结构中的中心间隙的商,即包含圆盘中心点的间隙
  • 它是通过将围绕该间隙的无限多个中心弧线都塌缩到中心间隙中得到的。我们可以使用二元有理数对这些中心弧线进行标记。每个中心弧线对应于中心分量 C 的边界 ∂C 上的一个点。这些点在 ∂C 中是稠密的,用二元数标记中心弧线会在 ∂C 和单位圆之间产生一个定义良好的同胚映射[13]

  • alpha 固定点及其前像[14]
Boettchers 方程
[编辑 | 编辑源代码]

Maxima CAS 源代码 

(%i1) kill(all);
(%o0)                                done
(%i1) remvalue(all);
(%o1)                                 []
(%i2) display2d:false;

(%o2) false
(%i3) define(f(z), z^2-1);

(%o3) f(z):=z^2-1
(%i4) a:factor(f(f(z)));

(%o4) z^2*(z^2-2)
(%i5) 
 taylor(a,z,0,14);

(%o5) (-2*z^2)+z^4


它给出了 Böttcher 的函数方程[15]


 


求解上述函数方程,得到 Boettcher 映射


巴氏曲线中心分量的黎曼映射
[编辑 | 编辑源代码]

方法由 James M. Belk 用于

  • 绘制外部射线
  • 巴氏曲线中心分量的黎曼映射[16]

描述

  • 选择具有已知 Bottcher 坐标的起点:中心分量边界上的二元点
  • 计算这些点的非常大量的逆像
  • 绘制穿过正确点序列的曲线

以下是绘制二次 Julia 集等势线的步骤摘要

  • 从以原点为中心的半径很大(例如 R = 2^16)的圆上,取大量(例如 3 * 2^13)等间隔的样本点。注意,由于半径很大,该圆基本上是 Julia 集的等势线。
  • 计算该圆的逆像上的等量点(这也基本上是一个等势线,其半径是 R 的平方根)。注意,每个原始点都有两个前像,因此必须在每种情况下确定使用哪个前像。
  • 迭代步骤 2,生成大量(例如 50 个)收敛到 Julia 集的等势线上的样本点。


如果你想绘制外部射线,可以使用在不同等势线上的对应点之间绘制分段线性路径。当然,由此产生的外部射线在样本点之间将是直线,但你可以通过使用多个等势线轨迹来解决这个问题。

巴氏曲线中心分量的黎曼映射的绘制方式基本相同,只是它不是从大圆上的点开始,而是从以原点为中心的半径很小(例如 0.00001)的圆上的样本点开始。

泡泡浴 Julia 集
[编辑 | 编辑源代码]

Bottcher 映射是定义良好的(直到选择将哪个射线映射到角度为零为止),这是由上一页第 42 页的定理确定的


对于 泡泡浴 Julia 集[17]  

 


一个交换图(描述函数复合的图形)



这里

  • 是中间气泡(分量),其中心是 z=0
  • 是开单位圆盘,其中心是 w=0
  • 是将单位圆盘映射到自身的函数 ,其方程为
  • 是将中间气泡映射到自身的函数 ,其方程为
  • 是 Boettcher 映射,它将中间气泡映射到单位圆盘


Maxima CAS 代码

a:factor(f(f(f(z))));

(%o10)(z^4*(z^4-4*z^2+2))/(2*z^2-1)^2

 taylor(a,z,0,14);

(%o11) 2*z^4+4*z^6+9*z^8+20*z^10+44*z^12+96*z^14



在上方的方框图中,图表的交换性意味着

.

它给出 Böttcher 的函数方程[18]


 


求解上述函数方程,得到 Boettcher 映射

显式闭合形式解

[edit | edit source]
  • 幂映射
  • 切比雪夫多项式


c = -2

[edit | edit source]
极坐标系和 对于

对于 c = -2,Julia 集是实轴上 -2 到 2 之间的水平线段:[19]


现在

  • 等势线是椭圆
  • 场线是双曲线
  • Boettcher 映射及其逆具有显式方程(闭合形式表达式[20]


其中分支切割被认为与 重合


另见

历史

[edit | edit source]

1904 年 LE Boettcher:[22]

  • 解决了 Schröder 函数方程[23][24],对应于超吸引不动点[25][26]
  • "证明了存在一个解析函数 附近,它将多项式与 共轭,即 " (Alexandre Eremenko) [27]

LogPhi - Douady-Hubbard 势 - 实势 - 复势的径向分量

[edit | edit source]

近似到分形的距离[28]

  • 它是平滑的
  • 它在分形处为 0,在无穷远处为 log|z|



势函数和实迭代次数

[edit | edit source]

对于 ,Julia 集是单位圆,在外面的 Fatou 域上,势函数 φ(z) 定义为 φ(z) = log|z|。该函数的等势线是同心圆。由于 ,我们有

其中 是由 z 生成的迭代序列。对于更一般的迭代 ,已证明如果 Julia 集是连通的(即如果 c 属于(通常的)Mandelbrot 集),那么存在一个 双全纯映射 ψ 在外部 Fatou 域和单位圆的外部之间,使得 .[29] 这意味着由这种对应关系定义的外部 Fatou 域上的势函数由下式给出

此公式在 Julia 集不连通时也有意义,因此对于所有 c,我们可以用此公式定义包含 ∞ 的 Fatou 域上的势函数。对于一般有理函数 f(z),使得 ∞ 是一个临界点和一个不动点,即,使得分子的次数 m 至少比分母的次数 n 大 2,我们通过以下公式定义包含 ∞ 的 Fatou 域上的 势函数

其中 d = mn 是有理函数的次数。[30]

如果 N 是一个非常大的数(例如 10100),并且如果 k 是第一个迭代次数使得 ,那么我们有

对于某个实数 ,应该被视为实际迭代次数,并且我们有

其中最后一个数在区间 [0, 1) 中。

对于指向阶数为 r 的有限吸引循环的迭代,我们有,如果 z* 是循环中的一个点,那么 r 次复合),并且数字

是循环的吸引力。如果w是一个非常接近z*的点,w'w迭代r次的结果,那么我们有

因此,数字 几乎与k无关。我们在Fatou域上定义势函数为

如果ε是一个非常小的数字,k是第一个迭代次数,使得 ,那么我们有

对于某个实数,它应该被视为真实的迭代次数,我们有

如果吸引力是∞,这意味着循环是超吸引的,再次意味着循环中的一个点是临界点,我们必须用以下公式替换α

其中w'w迭代r次的结果,而φ(z)的公式为

现在,真实的迭代次数由下式给出:

为了着色,我们必须有一个循环的色标(用数学方法构建,例如),并包含从 0 到 H−1 的 H 种颜色(例如,H = 500)。我们将实数 乘以一个固定的实数,该实数决定了图像中颜色的密度,然后取该数字模 H 的整数部分。

势函数的定义和我们的着色方法假设循环是吸引的,即不是中性的。如果循环是中性的,我们就不能以自然的方式对法图域进行着色。由于迭代的终点是一个旋转运动,我们可以例如通过迭代保持不变的循环的最小距离进行着色。

CPM/J

[edit | edit source]
填充的Julia集的势
使用两种方法计算的势图:简单和完整

注意,Kc内部的势为零,因此

伪代码版本

if (LastIteration==IterationMax)
 then potential=0    /* inside  Filled-in Julia set */
 else potential= GiveLogPhi(z0,c,ER,nMax); /* outside */

它还消除了log(0)的潜在错误。

完整版本

[edit | edit source]

数学(完整)符号:[31]

Maxima(完整)函数

GiveLogPhi(z0,c,ER,nMax):=
block(
 [z:z0,
 logphi:log(cabs(z)),
 fac:1/2,
 n:0],
 while n<nMax and abs(z)<ER do
 (z:z*z+c,
 logphi:logphi+fac*log(cabs(1+c/(z*z))),
 n:n+1
 ),
 return(float(logphi))
)$

简化版本

[edit | edit source]

多项式 f 的逃逸速率函数定义为

其中

"函数Gp在C上是连续的,在Julia集的补集上是调和的。它在K(f)上恒等于零,并且因为它在无穷远处具有对数极点,所以它是C/K(f)的格林函数。" (Laura G. DeMarco)[32]

简化的数学公式

Maxima函数

GiveSLogPhi(z0,c,e_r,i_max):=
 block(
  [z:z0,
   logphi,
   fac:1/2,
   i:0
  ],
  while i<i_max and cabs(z)<e_r do
  (z:z*z+c,
    fac:fac/2,
    i:i+1
  ),
 logphi:fac*log(cabs(z)),
 return(float(logphi))
)$

如果您不检查轨道是否无界(逃逸,逃逸测试),则使用此Maxima函数

GiveSLogPhi(z0,c,e_r,i_max):=
block(
 [z:z0, logphi, fac:1/2, i:0],
  while i<i_max and cabs(z)<e_r do
   (z:z*z+c,
    fac:fac/2,
    i:i+1 ),
   if i=i_max
    then logphi:0
    else logphi:fac*log(cabs(z)),
   float(logphi) 
)$

C版本

double jlogphi(double zx0, double zy0, double cx, double cy)
/* this function is based on function by W Jung http://mndynamics.com */
{ 
 int j; 
 double 
 zx=zx0,
 zy=zy0,
 s = 0.5, 
 zx2=zx*zx,
 zy2=zy*zy,
 t;
 for (j = 1; j < 400; j++)
 { s *= 0.5; 
  zy = 2 * zx * zy + cy;
  zx = zx2 - zy2 + cx; 
  zx2 = zx*zx; 
  zy2 = zy*zy;
  t = fabs(zx2 + zy2); // abs(z)
  if ( t > 1e24) break; 
 } 
return s*log2(t);  // log(zn)* 2^(-n)
}//jlogphi

R. Grothmann 的 Euler 版本(带有小改动:从 z^2-c 到 z^2+c):[33]

function iter (z,c,n=100) ...

h=z;
loop 1 to n;
h=h^2+c;
if totalmax(abs(h))>1e20; m=#; break; endif;
end;
return {h,m};
endfunction

x=-2:0.05:2; y=x'; z=x+I*y;
{w,n}=iter(z,c);
wr=max(0,log(abs(w)))/2^n;

势能的等值线 = pLSM/J

[编辑 | 编辑源代码]

这是一个 Delphi 函数,用于返回电势的等级 

Function GiveLevelOfPotential(potential:extended):integer;
 var r:extended;
 begin
    r:= log2(abs(potential));
    result:=ceil(r);
 end;

电势水平曲线 = 等势线 = pLCM/J

[编辑 | 编辑源代码]

连续电势公式与迭代带不完全匹配

ArgPhi - 外角(复电势的角分量)和外部射线

[编辑 | 编辑源代码]

可以从无穷大吸引盆地的二进制分解开始。

第二步可以使用


倍增映射下角的周期

[编辑 | 编辑源代码]

如何在倍增映射下找到以圈数为单位测量的外角的周期 

这是 Common Lisp 代码 

(defun give-period (ratio-angle)
  "gives period of angle in turns (ratio) under doubling map"
  (let* ((n (numerator ratio-angle))
	 (d (denominator ratio-angle))
	 (temp n)) ; temporary numerator
    
    (loop for p from 1 to 100 do 
	  (setq temp  (mod (* temp 2) d)) ; (2 x n) modulo d = doubling)
	  when ( or (= temp n) (= temp 0)) return p )))

Maxima CAS 代码 

doubling_map(n,d):=mod(2*n,d);

/* catch-throw version by Stavros Macrakis, works */
GivePeriodOfAngle(n0,d):=
catch(
      block([ni:n0],
          for i thru 200 do if (ni:doubling_map(ni,d))=n0 then throw(i),
          0 ) )$

/* go-loop version, works */
GiveP(n0,d):=block(
[ni:n0,i:0],
block(
  loop,
  ni:doubling_map(ni,d),
  i:i+1,
  if i<100 and not (n0=ni) then go(loop)
),
if (n0=ni) 
	then i 
	else 0
);

/* Barton Willis while version without for loop , works */
GivePeriod(n0,d):=block([ni : n0,k : 1],
  while (ni : doubling_map(ni,d)) # n0 and k < 100 do (
    k : k + 1),
  if k = 100 then 0 else k)$

计算外角

外角(幅角)是 Boettcher 坐标 的幅角

因为 Boettcher 坐标是 复数 的乘积


所以 乘积的幅角 是 

动态外部射线

[编辑 | 编辑源代码]

动态外部射线的描述


动力平面的层压

[编辑 | 编辑源代码]
兔子 Julia 集的层压

这里有一个 长描述

参考文献

[编辑 | 编辑源代码]
  1. 关于配对的概念,作者:CARSTEN LUNDE PETERSEN 和 DANIEL MEYER
  2. 维基百科中的邻域
  3. Keith Briggs 关于 George Szekeres 关于函数方程的工作
  4. 维基百科中的拓扑共轭
  5. Wolf Jung 如何绘制外部射线
  6. Wolfram : MandelbrotSetBoettcher 函数
  7. 超运算维基中的 Böttcher 方程
  8. 维基百科 : Böttcher 方程
  9. Lucjan Emil Böttcher 及其数学遗产,作者:Stanisław Domoradzki,Małgorzata Stawiska
  10. Wolfram 语言 : JuliaSetBoettcher
  11. Wolf Jung 如何绘制外部射线
  12. math.stackexchange 问题:显式黎曼映射
  13. 巴塞利卡的汤普森群,作者:James Belk,Bradley Forrest
  14. "巴塞利卡 Julia 集的拟对称群",Serhiy Merenkov,2020 年 3 月 26 日 NYGT 研讨会演讲
  15. 维基百科中的 Böttcher 方程
  16. 巴塞利卡的汤普森群,作者:James Belk,Bradley Forrest
  17. 气泡浴 Julia 集的类 Thompson 群,作者:Jasper Weinrich-Burd,2013 年
  18. 维基百科中的 Böttcher 方程
  19. 分形之美 - Heinz-Otto Peitgen 和 Peter Richter 编著,第 63 页
  20. 维基百科  : 封闭形式表达式
  21. John D. Cook 的茹科夫斯基变换
  22. 维基百科 : Lucjan_Böttcher
  23. 维基百科中的施罗德方程
  24. Lucjan Emil Böttcher 及其数学遗产,作者:Stanislaw Domoradzki, Malgorzata Stawiska
  25. L. E. Boettcher,迭代收敛的主要规律及其在分析中的应用(俄语),Izv. Kazan. fiz.-Mat. Obshch. 14) (1904), 155-234.
  26. 维基百科 : Böttchers_equation
  27. Mathoverflow : 迭代多项式的规模增长
  28. da Silva, V., Novello, T., Lopes, H., Velho, L. (2021). 实时渲染复杂分形。在:Marrs, A., Shirley, P., Wald, I. (eds) 光线追踪宝石 II. Apress, Berkeley, CA. https://doi.org/10.1007/978-1-4842-7185-8_33
  29. Adrien Douady 和 John H. Hubbard,复多项式的动力学研究,Orsay 数学预出版物 2/4 (1984 / 1985)
  30. Peitgen, Heinz-Otto; Richter Peter (1986). 分形的美丽. Heidelberg: Springer-Verlag. ISBN 0-387-15851-0.
  31. 分形的美丽,第 65 页
  32. 有理映射的全纯族:动力学、几何和势理论。Laura G. DeMarco 提交的论文
  33. R. Grothmann 的 Euler 例子
华夏公益教科书