跳转到内容

分形/复平面迭代/分析

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

如何分析基于有理映射的离散动力系统,该映射定义在黎曼球面上一个复变量上的有理映射?

 
 


找到非排斥周期点

  • 找到临界点(有限和无限)= 临界集
  • 找到周期点(循环),它的周期[1]和稳定性
  • 找到临界点、吸引点及其盆地(吸引域)之间的关系
  • 有理函数,即黎曼球面到自身的全纯映射,或者等效地,两个多项式的比率,在域和范围上都经过莫比乌斯变换。

Pauldelbrot 算法[2]“对于有理映射,我建议以下步骤可行

  • 跟踪所有临界轨道,进行大量迭代。
  • 对于每个轨道:再进行几千次迭代,观察它是否接近任何先前轨道的着陆点。如果是,则丢弃它。
  • 将黎曼球面划分为网格中的小区域;例如,通过保留两个方形位图,一个表示单位圆的内部,另一个表示单位圆的外部,通过表示单位圆的内部对于 w = 1/z。
  • 用红色、绿色、蓝色等颜色对这些位图中包含剩余临界轨道着陆点的像素进行着色;也许可以使用保守的距离估计,将每个像素扩展到一个小圆盘。
  • 应用原始算法,只是不再寻找击中白色或不击中白色的像素,而是寻找击中所有这些不同颜色的像素,并传播这些颜色。

最后,你应该得到彩色填充的吸引域,以及沿 Julia 集本身的灰色区域。将两个位图转换为黎曼球面的适当可视化表示留给读者作为练习。”


如果不动点附近的局部动力学难以处理

  • 将不动点移动到零
  • (待定)
  • 计算映射的度数
  • 计算关于变量 z 的一阶导数
  • 计算临界点
  • 计算吸引子(吸引周期循环)及其周期作为临界轨道的极限
  • 计算每个吸引子的乘数
  • 制作图像

有理映射 f 的度数 d 是其分母和分子的度数的最大值,前提是它们互质。

 
 
 

临界点

[编辑 | 编辑源代码]

临界点在黎曼球面上是

  • 点 z,其中 f 不是局部一对一 = 在 z 的任何邻域中都无法单射,并且 f 不是常数
  • 价数(阶)大于 1 的点


的临界点是:[3]

  • 满足的有限点 z
  • f 的阶数为 2 或更高的极点
  • 无穷大点 z = ∞
    • 如果的度数 d 至少为 2
    • 如果对于某个c和有理函数满足此条件,则

黎曼-赫维兹公式

[edit | edit source]

临界点个数n,在黎曼球面上用适当的重数计算,为

n = 2*d-2

其中 d = 函数的次数

这是一个上界(由于考虑了重数,所以是最大值),因此函数可以有更少的临界点[4]


如何检查无穷大是否是临界点?

[edit | edit source]

计算函数 f

 

在无穷远点[5]

有两种情况

  • ,因此无穷大是 f 的不动点
  • ,因此无穷大不是 f 的不动点

次数

  • 分子
  • 分母


不动点

[edit | edit source]

无穷大是 f 的不动点

 

那么的临界点,如果

 
 
 

示例



kill(all);
remvalue(all);
display2d:false;


define(f(z), (z^3+ 2*z + 3)/(z - 1));

/* first derivativa wrt z */
define( d(z), diff(f(z),z,1));


/* hipow does not expand expr, so hipow (expr, x) and hipow (expand (expr, x)) may yield different results */
n : hipow(num(f(z)),z);
m : hipow(denom(f(z)),z);

/* check if infinity is a fixed point */
limit(f(z),z,infinity);



/* finite critical points */

s:solve(d(z)=0)$
s : map(rhs,s)$
s : map('float,s)$
s : map('rectform,s)$

不是不动点

[edit | edit source]

无穷大不是 f 的不动点

  
 
 

看看这个函数

 . 
 

导数为

 

那么如果

  • ,那么不是的临界点。
  • ,那么如果
    • 分子是次,并且不是的临界点。
    • 如果分子项的次数小于 ,那么 **是** 的一个临界点。
  • 如果 ,那么 **不是** 的一个临界点。
  • 如果 ,那么 **是** 的一个临界点。

吸引子

[edit | edit source]
  • 寻找吸引子(吸引周期点,循环)作为临界轨道的极限集
  • 寻找循环的周期


如何检查无穷大是否为不动点?

[edit | edit source]

这里无穷大周期为 2,因此它不是不动点。

 a: -3-3*%i; /* d */
c: 0.0;
define(f(z), 1/(z^3+ a*z + c));

(%i4) limit(f(z),z,infinity);
(%o4)                                  0
(%i5) limit(f(z),z,0);
(%o5)                              infinity


这里无穷大不是不动点。

remvalue(all);
display2d:false;
define(f(z), 1/(z^3+ 2.099609375*z +  0.349609375));
(%i5)limit(f(z),z,infinity);
(%o5) 0
(%i6) limit(f(z),z,0);
(%o6) 2.860335195530726

这里无穷大是不动点。

define(f(z), (z^3+ 2*z + 3)/(z - 1));
n : hipow(num(f(z)),z);
m : hipow(denom(f(z)),z);
(%o3) f(z):=(z^3+2*z+3)/(z-1)
(%i4) 
(%o4) 3
(%i5) 
(%o5) 1
(%i6) limit(f(z),z,infinity);
(%o6) infinity

盆 = 法图域

[edit | edit source]
  • 每个法图域(吸引盆)至少包含 的一个临界点。
  • 每个吸引、超吸引和抛物线循环都吸引一个临界点。
  • 法图域的数量是有限的。
    • 度为 d 的有理函数不能拥有超过 2(d—1) 个稳定区域循环。[6]
    • "不同周期循环的吸引盆是相互分离的。由于度为 d 的有理映射最多有 2d−2 个临界点,因此 f 的吸引和抛物线循环的数量受限于 2d − 2" [7]
  • 一个法图域可以包含多个临界点。
  • 有理映射的法图集中的每个域可以分为四种不同的类别。[8]
  • 分量数量

盆数据

[edit | edit source]
  • 函数(输入)
  • 吸引循环的周期
  • 一个落入吸引循环的临界点,它与吸引点位于同一个分量中(见下文)
  • 吸引子 = 吸引循环中的一个点,它与上述临界点位于同一个分量中
  • 吸引循环的乘子

如果拥有每个盆的上述数据,那么就可以创建动态平面的图像


图像

[edit | edit source]
  • 临界轨道(临界点的正向轨道)
  • 周期点(主要是吸引循环)
  • 吸引盆

示例

[edit | edit source]

程序

[edit | edit source]

GRPF:全局复根和极点查找算法

[edit | edit source]

可视化

[edit | edit source]

Maxima CAS 代码

[编辑 | 编辑源代码]

步骤

  • 使用符号方法计算一阶导数 d(z)
  • 计算(有限的)临界点,作为方程 d(z) = 0 的根,使用符号方法
  • 计算临界点的正向轨道并生成图像
  • 通过图像的视觉检查获得吸引子的近似周期
kill(all);
remvalue(all);
display2d:false;



/* map */ 

define(f(z), (z^2)/(z^9 -z + 0.025));


/* first derivativa wrt z */
define( d(z), diff(f(z),z,1));




GiveOrbit(z0,iMax):=
   /* 
   computes (without escape test)
    (forward orbit of critical point )
   and saves it to the list for draw package */
block(
 [z,orbit,temp],
 z:z0, /* first point = critical point z:0+0*%i */
 orbit:[[realpart(z),imagpart(z)]], 
 for i:1 thru iMax step 1 do
        ( z:f(z),
          z:float(z),
          z:rectform(z),
          z:float(z),
          if (cabs(z)>3) then break,
          /*if (cabs(z)< 0.00001) then break, */
          orbit:endcons([realpart(z),imagpart(z)],orbit)),
         
 return(orbit) 
)$



        
GiveAttractor(z0,iMax):=
   /* 
   computes (without escape test)
    (forward orbit of critical point )
   and saves it to the list for draw package */
block(
 [z,orbit,temp],
 z:z0, /* first point = critical point z:0+0*%i */
 orbit:[], 
 
 for i:1 thru iMax step 1 do
        ( z:f(z),
          z:float(z),
          z:rectform(z),
          z:float(z)
          
          ),
 
 for i:1 thru 10 step 1 do
        ( z:f(z),
          z:float(z),
          z:rectform(z),
          z:float(z),
          if (cabs(z)>3) then break,
          /*if (cabs(z)< 0.00001) then break, */
          orbit:endcons([realpart(z),imagpart(z)],orbit)),
         
 return(orbit) 
)$
    
    

    
        
GiveScene(attractor):=
gr2d(title= "Possible cycle",
	user_preamble = "set nokey;set size square;set noxtics ;set noytics;",
	
        point_type    = filled_circle,
	points_joined = false,
        point_size    = 0.7,
        /* */
	color		  =red,
	points(attractor)
        )$



/* critical points 

[-0.8366600265340756*%i,0.8366600265340756*%i]


*/

s:solve(d(z)=0)$
s : map(rhs,s)$
s : map('float,s)$
s : map('rectform,s)$

s2 :  allroots(s[2])$
s2 : map(rhs,s2)$
s2 : map('float,s2)$
s2 : map('rectform,s2)$
s : cons(s[1], s2);  






MyOrbits:[];
for z in s do (
  	print(i,z),
    	orbit : GiveOrbit(z,30),
  	MyOrbits:endcons([discrete,orbit], MyOrbits)
  	

)$


MyAttractors:[];
for z in s do (
  	
    	attractor : GiveAttractor(z,300),
    	attractor : GiveScene(attractor),
  	MyAttractors:endcons(attractor, MyAttractors)
  	

)$

load(draw);
path:""$ /*  pwd, if empty then file is in a home dir , path should end with "/" */
fileName: sconcat(path,  "cycles")$
draw(
	terminal = png,
	file_name = fileName,
	columns= 4,
	MyAttractors
);

多项式映射和有理映射之间的区别

[编辑 | 编辑源代码]

无穷大

  • 对于多项式,无穷大是一个超吸引不动点。因此,在 Julia 集的外部(无穷大的吸引域),所有多项式的动力学都相同。 逃逸测试(= 逃逸测试)可以作为第一个通用工具。
  • 对于有理映射,无穷大不是超吸引不动点。它可能是一个周期点,也可能不是。

临界点

  • Lucas 定理指出,复平面上多项式的临界点位于零点的凸包内或其上。[9]
  • 圆盘内部的 B(Z) 的临界点位于 B(Z) 的零点(相对于 Poincaré 度量)的(非欧几里得)凸包内或其上。


可视化

  • “为了以图形方式研究这些集合,我们将看到它们是四维的,我们采用了一系列技术来可视化更高维度的物体,这些技术通常用于研究来自 MRI 或 CT 扫描的 3D 体积,这些技术被称为体积可视化。”[10]
  • 由接近零的分母引起的溢出。解决方案: “使用归一化的齐次坐标可以避免溢出和下溢错误”。 Luis Javier Hernández Paricio。
  • “用一对具有相同次数的两个变量的齐次多项式来表示有理函数,使我们能够计算函数在任何极点以及无穷大处的数值”。 Luis Javier Hernández Paricio。


如何从图像中读取位置?

[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]
  1. fractalforums.org : 周期检测
  2. fractalforums.org : Julia 集的真实形状和逃逸时间
  3. 关于有理映射的零点和临界点。作者:XAVIER BUFF
  4. 有理函数的 Julia 集简介,作者:Andre Pedroso Kowacs
  5. math.stackexchange 问题:什么时候无穷大是有理函数在球面上的临界点?
  6. Shishikura, M.. “关于有理函数的拟共形手术”。 Ecole Normale Superieure 科学年鉴 20 (1987):1-29。
  7. 一维实数和复数动力学,讲义,数学教学中心,2014 年春季,Davoud Cheraghi,2014 年 12 月 8 日
  8. Beardon,有理函数的迭代,定理 7.1.1。
  9. 有限 Blaschke 乘积的临界点位置,作者:DAVID A. SINGER
  10. 交替 Julia 集的连接集的图形探索 M,不连接的交替 Julia 集的集合,作者:Marius-F. Danca · Paul Bourke · Miguel Romera
华夏公益教科书