跳轉到內容

分形/複平面迭代/次級尾跡

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

如何找到任何曼德勃羅集分量(可透過有限次邊界穿越從主心形 (M0) 訪問)的根點上的外射線的角度?[1]

關鍵詞

[編輯 | 編輯原始碼]

演算法 = Douady 調諧

[編輯 | 編輯原始碼]

" 中的 r/s 內射線是外射線 的著陸點,這些外射線是從 中得到的,方法是將

  • 數字 0 替換為 的重複塊(長度為 q)
  • 數字 1 替換為 的重複塊(長度為 q)"

"透過重複相同的過程(稱為“調諧”),我們可以計算外射線的幅度,這些外射線著陸在任何可透過有限次邊界穿越從 訪問的分量的邊界上。"(Shaun Bullett)

Douady 調諧[2]

內部角數示例

[編輯 | 編輯原始碼]
曼德勃羅集週期 1 大陸附近的尾跡。使用距離估計(外部和內部)呈現曼德勃羅集邊界。用週期(藍色)、內部角和射線(綠色)以及外部角和射線(紅色)標記。


有角的內部地址:

 

描述一種方法

  • 從週期 1 雙曲分量 c=0 的中心
  • 沿著角度為 p/q 的內射線走向根點(p/q 鍵)
  • 沿著角度為 r/s 的內射線走向 s*q 雙曲分量的分量(核)的中心

其中

  • 1、q、s 是雙曲分量的週期
  • p/q、r/s 是內部角

(1/2, 1/3)

[編輯 | 編輯原始碼]

有角的內部地址

 


首先計算p/q = 1/2r/s=1/3 尾跡 的外角 





然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

使用此 c 程式,可以得到


input string = sIn = 0.(001)
Input Length = 3

replace string for digit 0 = sR0 = 0.(01)
Length of sR0 = 2

replace string for digit 1 = sR1 = 0.(10)
Length of sR1 = 2
output string in plain form sOut = 0.(010110)
Output Length = 6

output string in wikipedia math formula form = sOutf = 
 0.(\ {\color{Blue}01}\ {\color{Blue}01}\ {\color{Red}10})
sR0 displayed as a blue and sR1 as a red font
input string = sIn = 0.(010)
Input Length = 3

replace string for digit 0 = sR0 = 0.(01)
Length of sR0 = 2

replace string for digit 1 = sR1 = 0.(10)
Length of sR1 = 2
output string in plain form sOut = 0.(011001)
Output Length = 6

output string in wikipedia math formula form = sOutf = 
 0.(\ {\color{Blue}01}\ {\color{Red}10}\ {\color{Blue}01})
sR0 displayed as a blue and sR1 as a red font


結果


使用沃爾夫·容的曼德爾程式進行檢查

The angle  22/63  or  p010110
has  preperiod = 0  and  period = 6.
The conjugate angle is  25/63  or  p011001 .
The kneading sequence is  ABABA*  and
the internal address is  1-2-6 .
The corresponding parameter rays land
at the root of a satellite component of period 6.
root c = -1.125000000000000  +0.216506350946110 i    period = 10000
It bifurcates from period 2.
Center = c = -1.138000666650965  +0.240332401262098 i    period = 6

(1/3,1/25)

[edit | edit source]

有角的內部地址

 

首先計算 p/qr/s 尾跡 的外部角





然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

使用此 c 程式,可以得到

input string = sIn = 0.(0000000000000000000000001)
Input Length = 25

replace string for digit 0 = sR0 = 0.(001)
Length of sR0 = 3

replace string for digit 1 = sR1 = 0.(010)
Length of sR1 = 3
output string in plain form sOut = 0.(001001001001001001001001001001001001001001001001001001001001001001001001010)
Output Length = 75

output string in wikipedia math formula form = sOutf = 
 0.(\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Blue}001}\ {\color{Red}010})

所以結果是



使用 不能 使用  

  • 沃爾夫·容的曼德爾程式,因為週期 75 超過了曼德爾程式(5.14 版本)的容量
  • knowledgedoor 計算器  : “新數字有超過 100000 個小數位。很抱歉,我們必須中止計算以控制伺服器負載” [3]
  • 來自 xploringbinary 的二進位制到十進位制轉換器,因為  : ***錯誤:輸入中包含無效字元***[4]

浮點小數可以計算(xploringbinary 計算器)

0.00100100100100100100100100100100100100100100100100100100100100100100100101001001001001001001001001001001001001001001001001001001001001001001001001010010010010010010010010010010010010010010010010010010010010010010010010010100100100100100100100100100100100100100100100100100100100100100100100100101000100100100100100100100100100100100100100100100100100100100100100100100101000100100100100100100100100100100100100100100100100100100100100100100100101000100100100100100100100100100100100100100100100100100100100100100100100101 = 0.14285714285714285714288739403383051072639529883365108929843563075583153775763414823768752002069960029227911125999721923628800596414804821292109009060239475901499810101181257672784693799296426200506484998155193353019205064595746824097168836030939675768822757699065155639759014879516081816465598503673993914613650270765449619097486325642647311484333459622592887076714167693559186268814330532241007104844902043043591808926221035405535394453260989380025345642382995407618853788922160842622677279223353252746164798736572265625

注意

1/7 = 0.(001) = 0.(142857)= 0.1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428...

所以差異在小數點後第 23 位

使用 mandelbrot-symbolics

 ./m-binangle-to-rational ".(001001001001001001001001001001001001001001001001001001001001001001001001010)"
 5396990266136737387082/37778931862957161709567
 ./m-binangle-to-rational ".(001001001001001001001001001001001001001001001001001001001001001001001010001)"
 5396990266136737387089/37778931862957161709567

或使用 web 介面,輸入  : 1_1/3->3_1/25->75

(1/3,1/2)

[edit | edit source]

有角的內部地址

 

首先計算 p/q 和 r/s 的外部角 尾跡  





然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

結果是  



可以使用 沃爾夫·容的曼德爾程式 進行檢查  

The angle  10/63  or  p001010
has  preperiod = 0  and  period = 6.
The conjugate angle is  17/63  or  p010001 .
The kneading sequence is  AABAA*  and
the internal address is  1-3-6 .
The corresponding parameter rays are landing
at the root of a satellite component of period 6.
It is bifurcating from period 3.
Do you want to draw the rays and to shift c
to the corresponding center?

(1/3,1/3)

[edit | edit source]

首先計算 p/q 和 r/s 的外部角 尾跡(此處 p/q=r/s)  



然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

結果是  



可以使用 沃爾夫·容的曼德爾程式 進行檢查  

The angle  74/511  or  p001001010
has  preperiod = 0  and  period = 9.
The conjugate angle is  81/511  or  p001010001 .
The kneading sequence is  AABAABAA*  and
the internal address is  1-3-9 .
The corresponding parameter rays are landing
at the root of a satellite component of period 9.
It is bifurcating from period 3.
Do you want to draw the rays and to shift c
to the corresponding center?

(1/3,1/4)

[edit | edit source]

首先計算 p/q 和 r/s 的外部角 尾跡  





然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

結果是  



可以使用 沃爾夫·容的曼德爾程式 進行檢查  

The angle  586/4095  or  p001001001010
has  preperiod = 0  and  period = 12.
The conjugate angle is  593/4095  or  p001001010001 .
The kneading sequence is  AABAABAABAA*  and
the internal address is  1-3-12 .
The corresponding parameter rays are landing
at the root of a satellite component of period 12.
It is bifurcating from period 3.
Do you want to draw the rays and to shift c
to the corresponding center?

(1/3,3/4)

[edit | edit source]

首先計算 p/q 和 r/s 的外部角 尾跡  





然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

結果是  



可以在 沃爾夫·容的曼德爾程式 中進行檢查  

The angle  1162/4095  or  p010010001010
has  preperiod = 0  and  period = 12.
The conjugate angle is  1169/4095  or  p010010010001 .
The kneading sequence is  AABAABAABAA*  and
the internal address is  1-3-12 .
The corresponding parameter rays are landing
at the root of a satellite component of period 12.
It is bifurcating from period 3.
Do you want to draw the rays and to shift c
to the corresponding center?

(1/3,1/89)

[edit | edit source]
具有 5 條外部射線落在曼德爾布羅特集上的引數平面的部分。

有角的內部地址

 

(1/4, 1/5)

[edit | edit source]

輸入是  


首先計算 p/q 和 r/s 的外部角 尾跡  





然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

結果是  



可以使用 沃爾夫·容的曼德爾程式 進行檢查  

The angle  69906/1048575  or  p00010001000100010010
has  preperiod = 0  and  period = 20.
The conjugate angle is  69921/1048575  or  p00010001000100100001 .
The kneading sequence is  AAABAAABAAABAAABAAA*  and
the internal address is  1-4-20 .
The corresponding parameter rays are landing
at the root of a satellite component of period 20.
It is bifurcating from period 4.
Do you want to draw the rays and to shift c
to the corresponding center?

(4/5, 1/17)

[edit | edit source]
曼德爾布羅特集 - 尾跡 1-( 4/5)->5-(1/17)->85

角度內部地址是  

  • 1-(4/5)-> 5 -(1/17)-> 85

輸入是  


首先計算 p/q 和 r/s 的外部角 尾跡  





然後在 中替換

  • 數字 0 為 的長度為 q 的塊
  • 數字 1 為 的長度為 q 的塊

結果是  

 

使用 沃爾夫·容的曼德爾程式 無法進行檢查,因為週期過大。它只提供週期不超過 64 的答案



可以使用克勞德的 web 介面 線上進行檢查

  • .(1110111101111011110111101111011110111101111011110111101111011110111101111011110111110)
  • .(1110111101111011110111101111011110111101111011110111101111011110111101111011111011101)

3 個角度

[edit | edit source]

(1/2, 1/3, 1/4)

[edit | edit source]

我們從右到左遍歷角度列表

首先計算 (1/3,1/4) 尾跡,它將用作新的 r/s 尾跡  

 
 

之後計算 1/2 尾跡(最左側),它將用作 p/q 尾跡  

 
 

然後在 中替換

  • 數字 0 由從
  • 數字 1 由從

結果是  



以純文字格式(用於複製) 

 theta_minus(1/2, 1/3, 1/4) = 0.(010110010110010110011001)
 theta_plus( 1/2, 1/3, 1/4) = 0.(010110010110010110010110)

可以使用 Wolf Jung 的 Mandel 程式 中的射線到點命令(Ctrl+e)來檢查這種喚醒 

The angle  5858713/16777215  or  p010110010110010110011001
has  preperiod = 0  and  period = 24.
The conjugate angle is  5858902/16777215  or  p010110010110011001010110 .
The kneading sequence is  ABABAAABABAAABABAAABABA*  and
the internal address is  1-2-6-24 .
The corresponding parameter rays are landing
at the root of a satellite component of period 24.
It is bifurcating from period 6.
Do you want to draw the rays and to shift c
to the corresponding center?

(1/3, 1/4, 1/5)

[編輯 | 編輯原始碼]

輸入是一個列表 

(1/3, 1/4, 1/5)

我們從右到左遍歷角度列表,並將列表分成兩個子列表 




首先計算 (1/4,1/5) 喚醒,它將用作新的 r/s 喚醒 



然後計算 1/3 喚醒(最左邊的),它將用作 p/q 喚醒 

 
 

然後在 中替換

  • 數字 0 由從
  • 數字 1 由從

結果是  



可以使用 沃爾夫·容的曼德爾程式 進行檢查  

The angle  164984615799661137/1152921504606846975  or  p001001001010001001001010001001001010001001001010001001010001
has  preperiod = 0  and  period = 60.
The conjugate angle is  164984615799689802/1152921504606846975  or  p001001001010001001001010001001001010001001010001001001001010 .
The kneading sequence is  AABAABAABAAAAABAABAABAAAAABAABAABAAAAABAABAABAAAAABAABAABAA*  and
the internal address is  1-3-12-60 .
The corresponding parameter rays are landing
at the root of a satellite component of period 60.
It is bifurcating from period 12.
Do you want to draw the rays and to shift c
to the corresponding center?

4 個角度列表

[編輯 | 編輯原始碼]

(1/2, 1/3, 1/4, 1/5)

[編輯 | 編輯原始碼]

輸入是一個列表 

(1/2, 1/3, 1/4, 1/5)

所以內部加法器應該是 

1-2-6-24-120

無法使用 Mandel 程式進行檢查,因為它限制在週期 64。

我們從右到左遍歷輸入角度列表,並將列表分成兩個子列表 




首先計算 (1/3, 1/4, 1/5) 喚醒,它將用作新的 r/s 喚醒 



然後計算 1/2 喚醒(最左邊的),它將用作 p/q 喚醒 

 
 

然後在 中替換

  • 數字 0 由從
  • 數字 1 由從

結果是(要檢查! !!!!) 

theta_minus(1/2, 1/3, 1/4, 1/5) = 0.(010110010110010110011001010110010110010110011001010110010110010110011001010110010110010110011001010110010110011001010110)
theta_plus(1/2, 1/3, 1/4, 1/5)  = 0.(010110010110010110011001010110010110010110011001010110010110010110011001010110010110011001010110010110010110010110011001)

可以使用克勞德·海蘭德-艾倫的book 程式 透過視覺檢查。

size 640 360
view 53 -1.113644126576409e+00 2.5205986428803329e-01 3.9234950282896473e-04
ray_in 2000 .(010110010110010110011001010110010110010110011001010110010110010110011001010110010110011001010110010110010110010110011001)
ray_in 2000 .(010110010110010110011001010110010110010110011001010110010110010110011001010110010110010110011001010110010110011001010110)
text 53 -1.1152327443471231e+00 2.5276283972645397e-01 1/4
text 53 -1.1136201098499858e+00 2.5201617701965662e-01 1/5
text 53 -1.1152327443471231e+00 2.5276283972645397e-01 1/4
text 53 -1.1138472738947567e+00 2.5348331923684125e-01 24

多角度

[編輯 | 編輯原始碼]

週期 776

[編輯 | 編輯原始碼]
1-(1/2)-> 2 -(1/3)-> 6 -(1/2)-> 12 -(1/3)-> 36 -(1/2)-> 72 -(2/3)-> 216 -(1/2)-> 432 -(1/3)-> 1296 -(1/2)-> 2592 -(2/3)-> 7776   -> main misiurewicz point -> right branch


嘗試 mandelbrot-web[5]



週期 20

[編輯 | 編輯原始碼]

來自克勞德的Mandelbrot-web 的資訊

  • 外部角度(抖動外部射線
    • 二進位制 = .(00000000001111111111)
    • 十進位制有理數形式 = 1/1025
    • 週期 = 20
  • 揉捏 1111111111000000000★
  • 內部地址: 1→11→12→13→14→15→16→17→18→19→20
  • 登陸 .00000000001111111111 1/1025 .00000000010000000000 1024/1048575

有角度的內部地址


來自 Wolf Jung 的程式 Mandel 的資訊

  • 角度 1023/1048575 或 p00000000001111111111
  • 具有前週期 = 0 和週期 = 20。
  • 共軛角度為 1024/1048575 或 p00000000010000000000。
  • 揉捏序列為 AAAAAAAAAABBBBBBBBB* 且
  • 內部地址為 1-11-12-13-14-15-16-17-18-19-20。
  • 相應的引數射線落在週期為 20 的原始分量根部,中心為 c = 0.329617350093832 +0.042415693708911 i

程式碼

[edit | edit source]
/*

------------ git --------------------
https://gitlab.com/adammajewski/c-string-replaceing

cd existing_folder
git init
git remote add origin git@gitlab.com:adammajewski/c-string-replace.git
git add .
git commit
git push -u origin master

-------------- asprintf --------------------------------------
Using asprintf instead of sprintf or snprintf by james
http://www.stev.org/post/2012/02/10/Using-saprintf-instead-of-sprintf-or-snprintf.aspx

http://ubuntuforums.org/showthread.php?t=279801


gcc c.c -D_GNU_SOURCE -Wall // without #define _GNU_SOURCE

gcc c.c -Wall
----------- run ----------------------

./a.out



*/


#define _GNU_SOURCE // asprintf
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // strlen
 
int main() {
    // output = theta+(p/q, r/s) or theta-(p/q, r/s)
    char *sOut  = ""; // in plaint text format
    char *sOutf = ""; // formatted for wikipedia math formula 
    // input
    char *sIn = "00000000000000010";  // rs+ or rs-
    
    // strings which will replace 0 and 1 digit in the input 
    // length(sR0) = length(sR1)
    char *sR0 = "11101"; // pq-
    char *sR1 = "11110"; // pq+


   int iMax; // length of the input string
   int i; 


   iMax = (int) strlen(sIn);

   for (i=0; i<iMax; i++){

   // printf("i = %d, sIn[i] = %c = %d\n", i, sIn[i],  sIn[i] - '0');
    // create sOut by replaceing digit (0 or 1) from aIn by a block of digits :  sR0 or sR1
    if (((int) sIn[i] -'0') == 0 ) // http://stackoverflow.com/questions/868496/how-to-convert-char-to-integer-in-c
       {asprintf(&sOut, "%s%s", sOut, sR0);
       asprintf(&sOutf, "%s\\ {\\color{Blue}%s}", sOutf, sR0); }
       
       else // if sIn[i]==1 
       {asprintf(&sOut, "%s%s", sOut, sR1);
       asprintf(&sOutf, "%s\\ {\\color{Red}%s}", sOutf, sR1);}
   }
      


    printf("input string = sIn = 0.(%s)\n", sIn);
    printf("Input Length = %d\n\n", iMax);
    
    
    printf("replace string for digit 0 = sR0 = 0.(%s)\n", sR0);
    printf("Length of sR0 = %d\n\n", (int) strlen(sR0));
    
    printf("replace string for digit 1 = sR1 = 0.(%s)\n", sR1);
    printf("Length of sR1 = %d\n", (int) strlen(sR1));
    
    
    
    printf("output string in plain form sOut = 0.(%s)\n", sOut);
    printf("Output Length = %d\n\n",  (int) strlen(sOut));
    printf("output string in wikipedia math formula form = sOutf = \n 0.(%s)\n", sOutf);
    printf("sR0 displayed as a blue and sR1 as a red font\n");

    free(sOut); 
    free(sOutf); 
    return 0;
}

輸出

input string = sIn = 0.(00000000000000010)
Input Length = 17

replace string for digit 0 = sR0 = 0.(11101)
Length of sR0 = 5

replace string for digit 1 = sR1 = 0.(11110)
Length of sR1 = 5
output string in plain form sOut = 0.(1110111101111011110111101111011110111101111011110111101111011110111101111011111011101)
Output Length = 85

output string in wikipedia math formula form = sOutf = 
 0.(\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Blue}11101}\ {\color{Red}11110}\ {\color{Blue}11101})
sR0 displayed as a blue and sR1 as a red font

另請參閱

[edit | edit source]

參考文獻

[edit | edit source]
  1. Shaun Bullett : Lectures on one-dimensional complex dynamics' (7th-10th November 2005), lecture 4, page 43, section 4.5
  2. Ordered orbits of the shift, square roots, and the devil's staircase by Shaun Bulletta and Pierrette Sentenac
  3. knowledgedoor 計算器
  4. exploring binary : 二進位制轉換器
  5. mandelbrot 網頁
華夏公益教科書