跳轉到內容

分形/複平面迭代/分析

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

如何分析基於有理對映的離散動力系統,該對映定義在黎曼球面上一個復變數上的有理對映?

 
 


找到非排斥週期點

  • 找到臨界點(有限和無限)= 臨界集
  • 找到週期點(迴圈),它的週期[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
華夏公益教科書