跳轉到內容

分形/複平面上的迭代/二次多項式

來自華夏公益教科書,開放書籍,開放世界

復二次多項式[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·拉潘:關於與恆等式相切的對映的吸引域的存在性。密歇根大學博士論文
華夏公益教科書