跳转到内容

分形/复平面上的迭代/二次多项式

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

复二次多项式[1]

  • "由于博特切尔定理[2]多项式的动力学比一般有理映射的动力学更容易理解"
  • 无穷大总是多项式的一个超吸引不动点。
  • n 次多项式最多有 n 个实根和 n-1 个拐点。[3]

形式为 的复二次多项式

属于函数类 

"...典型的记号惯例是用一个角度来参数化临界先周期多项式 ,而不是用 c 来参数化,而这个角度是落在临界值上的外射线。如果有多条射线落在临界值上,则可能会有多个参数指代同一个多项式。例如,多项式

  • 对于 c= -0.228155493653962 +1.115142508039937 i

如何计算迭代

[编辑 | 编辑源代码]

在 Maxima CAS 中 

(%i28) z:zx+zy*%i;
(%o28) %i*zy+zx
(%i37) c:cx+cy*%i;
(%o37) %i*cy+cx
(%i38) realpart(z^2+c);
(%o38) -zy^2+zx^2+cx
(%i39) imagpart(z^2+c);
(%o39) 2*zx*zy+cy

临界点

[编辑 | 编辑源代码]
曼德布罗集主分量边界上不同抛物线参数的临界轨道

的一个关键点是动态平面中的一个点 ,使得导数为零

因为

这意味着

可以看出

  • 唯一的(有限)临界点是点
  • 对于所有 c 参数,临界点都是一样的

是 Mandelbrot 集合迭代的初始点。[4]

动态平面

[edit | edit source]

周期 1(= 固定)点:[5]


周期 2 点


Mandelbrot 集主成分 1/2 内部射线的末端,对应抛物线参数的 Julia 集

首先使用内部角 p/q 和 Maxima CAS 计算乘数 m

(%i1) p:1$
(%i2) q:2$
(%i3) m:exp(2*%pi*%i*p/q);
(%o3)                                 - 1

现在计算函数的参数 c

(%i1) GiveC(t,r):=
(
 [w,c],
 /* point of  unit circle   w:l(internalAngle,internalRadius); */
 w:r*%e^(%i*t*2*%pi),  /* point of circle */
 c:w/2-w*w/4, /* point on boundary of period 1 component of Mandelbrot set */
 float(rectform(c))    
)$

(%i3) c:GiveC(1/2,1);
(%o3) −0.75

找到固定点 z

(%i4) z1:z^2+c;
(%o4) z^2−0.75
(%i2) f:z^2+c;
(%o2)                              z^2  - 0.75
(%i3) d:diff(f,z,1);
(%o3)                                 2 z
(%i6) s:solve(z1=z);
(%o6)                              [z = 3/2, z = -1/2]
(%i7) s:map(rhs,s);
(%o7)                             [z = 3/2, z = -1/2]
(%i8) z:s[1];
(%o8)                                  3/2
(%i9) abs(float(rectform(ev(d))));
(%o9)                                 3.0
(%i10) z:s[2];
(%o10)                                - 1/2
(%i11) abs(float(rectform(ev(d))));
(%o11)                                1.0

所以 z=-1/2 是一个抛物线固定点。

z^2 + m*z

[edit | edit source]

形式为 的复二次多项式

它有一个无差异固定点[6],其乘数[7]

在原点[8][9]

属于函数类

如何计算迭代

[edit | edit source]

在 Maxima CAS 中 

(%i1) z:zx+zy*%i;
(%o1) %i*zy+zx
(%i2) m:mx+my*%i;
(%o2) %i*my+mx
(%i3) z1:z^2+m*z;
(%o3) (%i*zy+zx)^2+(%i*my+mx)*(%i*zy+zx)
(%i4) realpart(z1);
(%o4) -zy^2-my*zy+zx^2+mx*zx
(%i5) imagpart(z1);
(%o5) 2*zx*zy+mx*zy+my*zx

临界点

[edit | edit source]

的一个关键点是动态平面中的一个点 ,使得导数为零

因为

这意味着

可以看出

  • 临界点与m值有关,需要针对每个m参数计算。

是Mandelbrot集合迭代的初始点。

参数平面lambda

参数平面

[edit | edit source]

周期1分量

[edit | edit source]
(%i1) e1:z^2+m*z=z;
(%o1) z^2+m*z=z
(%i2) e2:2*z+m=w;
(%o2) 2*z+m=w
(%i3)  s:eliminate ([e1,e2], [z]);
(%o3) [-(m-w)*(w+m-2)]
(%i4) s:solve([s[1]], [m]);
(%o4) [m=2-w,m=w]

这意味着存在两个周期为1的分量。

  • 第一个分量半径为1,中心为0 (m=w)。
  • 第二个分量半径为1,中心为-2 (m=2-w)。

如何计算第一个分量的边界点?

(%i1) m:exp(2*%pi*%i*p/q);
(%o1) %e^((2*%i*%pi*p)/q)
(%i2) realpart(m);
(%o2) cos((2*%pi*p)/q)
(%i3) imagpart(m);
(%o3) sin((2*%pi*p)/q)

动态平面

[edit | edit source]
对于f(z) = z^2+z 或者 f(z) = z^2 + 1/4 或者 f(z)= z-z^2 的Julia集。
Fatou坐标的定义域。
显示了Julia集内部某些点的轨道(白点)。

首先计算**函数的参数**。

p:1$
q:1$
m:exp(2*%pi*%i*p/q);

参数是

那么函数是

它给出了与函数相同的Julia集(花椰菜[10])。


计算**不动点**。

(%i3) solve(z=z^2+z);
(%o3) [z=0]
(%i4) multiplicities;
(%o4) [2]

找到不动点的**稳定性指数** = |乘子|。

(%i1) f:z^2+z;
(%o1) z^2+z
(%i2) d:diff(f,z,1);
(%o2) 2*z+1
(%i7) z:0;
(%o7) 0
(%i8) abs(float(rectform(ev(d))));
(%o8) 1.0

临界点

迭代

f(z):= z^2+z;

fn(n, z) :=
  if n=0 then z
  elseif n=1 then f(z)
  else f(fn(n-1, z));

首先使用内部角度p/q和Maxima CAS计算**不动点的乘子m = 函数f的参数**。

(%i1) p:1$
(%i2) q:2$
(%i3) m:exp(2*%pi*%i*p/q);
(%o3)                                 - 1

因此**函数**f是

**如何计算迭代**

(%i29) z1;
(%o29)                              z^2  - z
(%i30) z:zx+zy*%i;
(%o30)                            %i zy + zx
(%i32) realpart(ev(z1));
(%o32)                         - zy^2  + zx^2  - zx
(%i33) imagpart(ev(z1));
(%o33)                           2 zx zy - zy

然后找到f的**不动点**。

(%i4) z1:z^2+m*z;
(%o4)                               z^2  - z
(%i5) zf:solve(z1=z);                                                  
(%o5)                           [z = 0, z = 2]
(%i6) multiplicities;
(%o6)                               [1, 1]

不动点的稳定性。

(%i7) f:z1;
(%o7)                               z^2  - z
(%i8) d:diff(f,z,1);
(%o8)                               2 z - 1
(%i9) z:zf[1];   
(%o9)                                z = 0
(%i10) abs(ev(d));
(%o10)                         abs(2 z - 1) = 1
(%i11) z:zf[2];
(%o11)                               z = 2
(%i12) abs(ev(d));
(%o12)                         abs(2 z - 1) = 3
(%i13) 

因此不动点

  • z=0 是抛物型 (稳定性指数 = 1)
  • z=2 是排斥型 (稳定性指数 = 3,大于1)

找到**临界点 **

(%i14) zcr:solve(d=0);
(%o14)                              [z = 1/2]
(%i15) multiplicities;
(%o15)                                [1]

吸引向量

因为q=2,所以我们检查f的二次迭代。

(%i16) z1;
(%o16)                              z^2  - z
(%i17) z2:z1^2-z1;
(%o17)                        (z^2  - z)^2  - z^2  + z
(%i18) taylor(z2,z,0,20);
taylor: z = 2 cannot be a variable.
 -- an error. To debug this try: debugmode(true);
(%i19) remvalue(z);
(%o19)                                [z]
(%i20) z;
(%o20)                                 z
(%i21) taylor(z2,z,0,20);
(%o21)/T/                    z - 2 z^3  + z^4  + . . .

z的下一项是a

所以这里

  • 上述项的次数为k=3
  • 吸引方向(和花瓣)的数量为n= k-1 = 2 (也为n = e*q)
  • 抛物退化e = n/q = 1
  • 上述项的系数a = -2

吸引向量满足

所以这里

可以使用 Maxima CAS 求解

(%i22)  s:solve(z^2=1/4);
(%o22)                         [z = - 1/2, z =1/2]
(%i23) s:map(rhs,s);
(%o23)                             [-1/2, 1/2]
(%i24) carg_t(z):=
 block(
 [t],
 t:carg(z)/(2*%pi),  /* now in turns */
 if t<0 then t:t+1, /* map from (-1/2,1/2] to [0, 1) */
 return(t)
)$
(%i25)  s:map(carg_t,s);
(%o25)                              [1/2, 0]

因此,吸引向量为

  • 到原点
  • 到原点

临界点 z=1/2 位于吸引向量 上。因此,在迭代下,临界轨道直接趋向原点[11]

排斥向量 满足

所以这里

可以使用 Maxima CAS 求解

(%i26) s:solve(z^2=-1/4);
(%o26)                        [z = - %i/2, z = %i/2]
(%i27) s:map(rhs,s);
(%o27)                            [- %i/2, %i/2 ]
(%i28) s:map(carg_t,s);
(%o28)                              [3/4, 1/4]
对于 f(z)=z^2 + mz,其中 p/q=1/3 的临界轨道

首先计算**函数的参数**。

/* Maxima CAS session */
(%i1) p:1;
      q:3;
      m:exp(2*%pi*%i*p/q);
(%o1) 1
(%o2) 3
(%o3) (sqrt(3)*%i)/2-1/2
(%i9) float(rectform(m));
(%o9) 0.86602540378444*%i-0.5

然后找到不动点

/* Maxima CAS session */
(%i10) f:z^2+m*z;
(%o10) z^2+((sqrt(3)*%i)/2-1/2)*z
(%i11) z1:f;
(%o11) z^2+((sqrt(3)*%i)/2-1/2)*z
(%i12) solve(z1=z);
(%o12) [z=-(sqrt(3)*%i-3)/2,z=0]
(%i13) multiplicities;
(%o13) [1,1]

计算不动点的倍数

(%i23) d:diff(f,z,1);
(%o23) 2*z+(sqrt(3)*%i)/2-1/2

检查不动点的稳定性

(%i12) s:solve(z1=z);
(%o12) [z=-(sqrt(3)*%i-3)/2,z=0]
(%i20) s:map(rectform,s);
(%o20) [3/2-(sqrt(3)*%i)/2,0]
(%i21) s:map('float,s);
(%o21) [1.5-0.86602540378444*%i,0.0]
(%i24) z:s[1];
(%o24) 1.5-0.86602540378444*%i;
(%i31) abs(float(rectform(ev(d))));
(%o31) 2.645751311064591

这意味着不动点 z=1.5-0.86602540378444*%i 是排斥的。

第二个点 z=0 是抛物线的

(%i33) z:s[2];
(%o33) 0.0
(%i34) abs(float(rectform(ev(d))));
(%o34) 1.0

找到临界点

(%i1) solve(2*z+(sqrt(3)*%i)/2-1/2);
(%o1) [z=-(sqrt(3)*%i-1)/4]
(%i2) s:solve(2*z+(sqrt(3)*%i)/2-1/2);
(%o2) [z=-(sqrt(3)*%i-1)/4]
(%i3) s:map(rhs,s);
(%o3) [-(sqrt(3)*%i-1)/4]
(%i4) s:map(rectform,s);
(%o4) [1/4-(sqrt(3)*%i)/4]
(%i5) s:map('float,s);
(%o5) [0.25-0.43301270189222*%i]
(%i6) abs(s[1]);
(%o6) 0.5

如何加速计算?

近似

如何计算

(%i1) z:x+y*%i;
(%o1) %i*y+x
(%i2) z7:(245.4962434402444*%i-234.5808769813032)*z^8 + z;
(%o2) (245.4962434402444*%i-234.5808769813032)*(%i*y+x)^8+%i*y+x
(%i3) realpart(z7);
(%o3) -234.5808769813032*(y^8-28*x^2*y^6+70*x^4*y^4-28*x^6*y^2+x^8)-245.4962434402444*(-8*x*y^7+56*x^3*y^5-56*x^5*y^3+8*x^7*y)+x
(%i4) imagpart(z7);
(%o4) 245.4962434402444*(y^8-28*x^2*y^6+70*x^4*y^4-28*x^6*y^2+x^8)-234.5808769813032*(-8*x*y^7+56*x^3*y^5-56*x^5*y^3+8*x^7*y)+y

m*z*(1-z)

[edit | edit source]

描述

临界点

[edit | edit source]

临界点

  • z = 1/2
  • z = ∞

参数平面

[edit | edit source]

周期1分量

[编辑 | 编辑源代码]
(%i1) e1:m*z*(1-z)=z;
(%o1) m*(1-z)*z=z
(%i2) d:diff(m*z*(1-z),z,1);
(%o2) m*(1-z)-m*z
(%i3) e2:d=w;
(%o3) m*(1-z)-m*z=w
(%i4) s:eliminate ([e1,e2], [z]);
(%o4) [m*(m-w)*(w+m-2)]
(%i5) s:solve([s[1]], [m]);
(%o5) [m=2-w,m=w,m=0]

这意味着有两个周期 1 分量

  • 半径为 1,中心为 0 的圆盘
  • 半径为 1,中心为 2 的圆盘

动态平面

[编辑 | 编辑源代码]

注意,二次多项式族中的每个成员


都是抛物线型的,因为对于每个 λ ∈ C \ {0},多项式 gλ 都有一个倍数为 2 的抛物线不动点 0,并且 唯一的有限临界点由


给出,它包含在 0 的吸引域中。这个族的研究过于琐碎,因为它的所有成员都与


通过莫比乌斯变换共轭


因此,它们的所有 Julia 集 J(gλ) 都有与

HD(J(z^2 +1/4)) ≈ 1.0812 

"[13]

动态平面

[编辑 | 编辑源代码]

描述 [14]

首先使用内部角 p/q 和 Maxima CAS 计算不动点的倍数 = 函数 f 的参数

(%i1) p:1$
(%i2) q:2$
(%i3) m:exp(2*%pi*%i*p/q);
(%o3)                                 - 1

因此**函数**f是

**如何计算迭代**

使用 Maxima CAS 查找它

(%i1) z:x+y*%i;
(%o1) %i*y+x
(%i2) z1:z-z^2;
(%o2) −(%i*y+x)^2+%i*y+x
(%i3) realpart(z1);
(%o3) y^2−x^2+x
(%i4) imagpart(z1);
(%o4) y−2*x*y

然后找到f的**不动点**。

(%i6) remvalue(z);
(%o6) [z]
(%i7) zf:solve(z-z^2=z);
(%o7) [z=0]
(%i9) multiplicities;
(%o9) [2]

不动点的稳定性。

(%i11) f:z-z^2;
(%o11) z−z^2
(%i12) d:diff(f,z,1);
(%o12) 1−2*z
(%i13) zf:solve(z-z^2=z);
(%o13) [z=0]
(%i14) z:zf[1];
(%o14) z=0
(%i15) abs(ev(d));
(%o15) abs(2*z−1)=1

这意味着不动点 z=0 是一个抛物线点(稳定性指数 = 1)。

找到**临界点 **

(%i16) zcr:solve(d=0);
(%o16) [z=1/2]

参考文献

[编辑 | 编辑源代码]
  1. 维基百科:复二次多项式 - 定义
  2. 关于交配的概念 卡斯滕·伦德·彼得森 和 丹尼尔·迈耶
  3. 知识洞穴:多项式和有理函数的区别
  4. 迪特尔·罗斯 的 Java 程序展示了改变曼德布罗迭代初始点的结果
  5. 离散动力学的代数几何 一元情况 V.多洛廷 和 A.莫罗佐夫
  6. 维基百科:不动点
  7. 维基百科:倍数
  8. 维基百科:原点
  9. 迈克尔·亚姆波尔斯基,赛义德·扎凯里:交配西格尔二次多项式。
  10. 花椰菜 Julia 集图像
  11. 马克·麦克卢尔在 stackexchange 问题中:抛物线临界轨道的形状
  12. Mu-Ency 上的 lambda 映射
  13. 三次抛物线多项式的不连通 Julia 集的豪斯多夫维数的实解析性 哈西娜·阿克特
  14. S·拉潘:关于与恒等式相切的映射的吸引域的存在性。密歇根大学博士论文
华夏公益教科书