跳转到内容

分形/复平面迭代/次级尾迹

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

如何找到任何曼德勃罗集分量(可通过有限次边界穿越从主心形 (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 [email protected]: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 网页
华夏公益教科书