跳转到内容

分形/复平面迭代/1/2族

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

周期倍增级联的周期:[1]


角度内部地址:


其中

  • Myrberg-Feigenbaum 点 c = −1.401155,外部角度 = (0.412454... , 0,58755...)


它是Sharkovsky 排序的一部分

外部角度(组合算法)

[编辑 | 编辑源代码]

落在 1/2 族双曲分量的根点上的参数射线的外部角度

[编辑 | 编辑源代码]

二进制

[编辑 | 编辑源代码]

周期也对应于构成二进制周期分数的位数。

angles ( binary periodic fractions) of hyperbolic components from the period doubling cascade 1*2^n
period = 1 	 0.(0)	                                                                 0.(1)
period = 2 	 0.(01)	                                                                 0.(10)
period = 4 	 0.(0110)	                                                         0.(1001)
period = 8 	 0.(01101001)	                                                         0.(10010110)
period = 16 	 0.(0110100110010110)	                                                 0.(1001011001101001)
period = 32 	 0.(01101001100101101001011001101001)	                                 0.(10010110011010010110100110010110)
period = 64 	 0.(0110100110010110100101100110100110010110011010010110100110010110)	 0.(1001011001101001011010011001011001101001100101101001011001101001)
period = 128 	 0.(01101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001)	 
                 0.(10010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110)
period = 256 	 
0.(0110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100110100110010110100101100110100110010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110)	 
0.(1001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001)

注意,

字符串连接

[编辑 | 编辑源代码]

MSS-谐波[2](Metropolis、Stein 和 Stein[3]

以二进制分数的形式

  • 输入:
  • 输出:

可以使用 c 代码计算

/*
Operating with external arguments in the Mandelbrot set antenna
by G Pastor, M Romera, G Alvarez and F Montoya, December 16, 2004

-------------- 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 h.c -Wall
cppcheck h.c

----------- run ----------------------

./a.out
./a.out > h.txt

----------------
*/

#define _GNU_SOURCE // asprintf
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // strlen
 
int main() {
    	// output = angles of p*2^n component
    	char *sOut1  = ""; // in plaint text format
    	char *sOut2  = ""; // in plaint text format
    
    	// input = angles of period p=1 component
    	char *sIn1 = "0"; 
    	char *sIn2 = "1"; 
	
	int n = 0;    
	int nMax = 10;
	int p =1;  
	
  	printf(" angles ( binary periodic fractions) of hyperbolic components from the period doubling cascade %d*2^n\n ", p);
	printf(" period = %d \t 0.(%s)\t 0.(%s)\n", p, sIn1, sIn2);
    	
	
  
   	for (n=1; n<nMax; n++){

   		p *= 2; // period doubling cascade
   		// MSS-harmonic h(sIn1. sIn2) = (sOut1, sOut2) = (sIn1+sIn2, sIn2 + sIn1  ) here + means concat the strings 
   		asprintf(&sOut1, "%s%s", sIn1, sIn2);
   		asprintf(&sOut2, "%s%s", sIn2, sIn1);
   		
       		//
		printf(" period = %d \t 0.(%s)\t 0.(%s)\n", p, sOut1, sOut2);
		// 
		sIn1 = sOut1;
		sIn2 = sOut2;
		
		}
    	

    	//
    	free(sOut1);
    	free(sOut2); 
   
    	return 0;
}

双曲分量(数值算法)

[编辑 | 编辑源代码]
n 周期 = 2n 根点 (cn)
0 1 0.25
1 2 −0.75
2 4 −1.25
3 8 −1.3680989
4 16 −1.3940462
5 32 −1.3996312
6 64 −1.4008287
7 128 −1.4010853
8 256 −1.4011402
9 512 −1.401151982029
10 1024 −1.401154502237
−1.4011551890

数据由 lkmitch 提供


周期 262144

x = -1.4011551890902510331817705605834440363471931682724714412452613678632418220750013209654238789188079407613058592287511922521315976742525764917468403339396930937 30785180509439998407177461884732043 f(x) = 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000001994 近似费根鲍姆常数 = 4.6692016090744525662279815203708867539460996466796182702147591041742162322183312521153913774503310728833354374225852275733454310057265948843688036767882792034 77482728794667534497622208785380761

周期 524288

-1.4011551890916651883071968100816546650318029614591678115404876967937578305271204258535401015561476261168939337667710591343229259782689769629427546629533666727 86737113473009338909783794873017929 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000008829391 4.6692016090968787947051350378647836776226665257418367260642987723027044088401013356743953120638886994058416817724607788627924785757422345903201225592627931049 69373245311653832559840230430927275

周期 1048576

-1.4011551890919680570294789310328705961503197610898601690317026045601400345356095836255726490446857492092529857212919383793658357679431376624985583329486967143 41390220891894934332628723842939248 -0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000022112864 4.6692016091016816811869601608458017299280888932440761709767910764158204329663666795299227205144754947240340906747557847995318754327409221893703408072446351537 83290121618647654581771235818384323

来自 mandelbrot-numerics 的 c 代码

[编辑 | 编辑源代码]

来自 mandelbrot-numerics 库的 m-feigenbaum 程序



m-feigenbaum
period = 4 	     		 nucleus = -1.310702641336833008e+00 	size = 1.179602276312223114e-01
period = 8 		    	 nucleus = -1.381547484432061657e+00 	size = 2.590331788620404280e-02
period = 16 			 nucleus = -1.396945359704560685e+00 	size = 5.574904503817590395e-03
period = 32 			 nucleus = -1.400253081214783091e+00 	size = 1.195288587163239984e-03
period = 64 			 nucleus = -1.400961962944842210e+00 	size = 2.560528805309172169e-04
period = 128 			 nucleus = -1.401113804939776664e+00 	size = 5.484142131458955168e-05
period = 256 			 nucleus = -1.401146325826946537e+00 	size = 1.174547734653405196e-05
period = 512 			 nucleus = -1.401153290849925570e+00 	size = 2.515527294624666474e-06
period = 1024 			 nucleus = -1.401154782546613964e+00 	size = 5.387491809938387059e-07
period = 2048 			 nucleus = -1.401155102022462628e+00 	size = 1.153835913118543914e-07
period = 4096 			 nucleus = -1.401155170444413400e+00 	size = 2.471163334462234791e-08
period = 8192 			 nucleus = -1.401155185098302614e+00 	size = 5.292465190668938379e-09
period = 16384 			 nucleus = -1.401155188236713700e+00 	size = 1.133481216591179550e-09
period = 32768 			 nucleus = -1.401155188908850047e+00 	size = 2.427895317585669274e-10
period = 65536 			 nucleus = -1.401155189052770256e+00 	size = 5.204848444681121846e-11
period = 131072 		 nucleus = -1.401155189083645558e+00 	size = 1.116488091172383448e-11
period = 262144 		 nucleus = -1.401155189090176112e+00 	size = 2.401481531760724511e-12
period = 524288 		 nucleus = -1.401155189091663589e+00 	size = 6.463020532652650290e-13
period = 1048576 		 nucleus = -1.401155189092033737e+00 	size = 3.635753686080000682e-14
period = 2097152 		 nucleus = -1.401155189093066022e+00 	size = 9.366255511607845319e-19
period = 4194304 		 nucleus = -1.401155189093066022e+00 	size = 2.943937947459073103e-26
period = 8388608 		 nucleus = -1.401155189093066022e+00 	size = 5.438985544182134629e-40
period = 16777216 		 nucleus = -1.401155189093066022e+00 	size = 5.967915741322236566e-68
period = 33554432 		 nucleus = -1.401155189093066022e+00 	size = 8.736600707368986815e-124
period = 67108864 		 nucleus = -1.401155189093066022e+00 	size = 1.222084981000085251e-235
period = 134217728 		 nucleus = -1.401155189093066022e+00 	size = 0.000000000000000000e+00
period = 268435456 		 nucleus = -1.401155189093066022e+00 	size = 0.000000000000000000e+00


似乎双精度不够

来自 Mandel 的 c++ 代码

[编辑 | 编辑源代码]

中心 比根点(分叉点)更容易计算。

Period =          1 	center =  0.000000000000000000
Period =          2 	center = -1.000000000000000000
Period =          4 	center = -1.310702641336832884
Period =          8 	center = -1.381547484432061470
Period =         16 	center = -1.396945359704560642
Period =         32 	center = -1.400253081214782798
Period =         64 	center = -1.400961962944841041
Period =        128 	center = -1.401113804939776124
Period =        256 	center = -1.401146325826946179
Period =        512 	center = -1.401153290849923882
Period =       1024 	center = -1.401154782546617839 
Period =       2048 	center = -1.401155102022463976
Period =       4096 	center = -1.401155170444411267
Period =       8192 	center = -1.401155185098297292
Period =      16384 	center = -1.401155188236710937
Period =      32768 	center = -1.401155188908863045
Period =      65536 	center = -1.401155189052817413
Period =     131072 	center = -1.401155189083648072
Period =     262144 	center = -1.401155189090251057
Period =     524288 	center = -1.401155189091665208
Period =    1048576 	center = -1.401155189091968106
Period =    2097152 	center = -1.401155189092033014
Period =    4194304 	center = -1.401155189092046745
Period =    8388608 	center = -1.401155189092049779
Period =   16777216 	center = -1.401155189092050532
Period =   33554432 	center = -1.401155189092051127
Period =   67108864 	center = -1.401155189092050572
Period =  134217728 	center = -1.401155189092050593
Period =  268435456 	center = -1.401155189092050599

它使用 cpp 程序计算,使用了 来自 Mandel 的代码

 
/*

This is not official program by W Jung,
but it usess his code ( I hope in a good way)
   These functions are part of Mandel  by Wolf Jung (C) 
   which is free software; you can
   redistribute and / or modify them under the terms of the GNU General
   Public License as published by the Free Software Foundation; either
   version 3, or (at your option) any later version. In short: there is
   no warranty of any kind; you must redistribute the source code as well.
   
   http://www.mndynamics.com/indexp.html
   
   to compile :
   g++ f.cpp -Wall -lm
   ./a.out
   
  
*/

#include <iostream> // std::cout
#include <cmath>     // sqrt
#include <limits>
#include <cfloat>
  
typedef  unsigned int  uint;
typedef  long double  mdouble; // mdynamo.h

// from the file qmnshell.cpp  by Wolf Jung (C) 2007-2018
mdouble cFb = -1.40115518909205060052L; 
mdouble dFb = 4.66920160910299067185L;

mdouble bailout = 16.0L; // mdynamoi.h

// c = A+B*i
mdouble A= 0.0L;  
mdouble B = 0.0L;

/* 
   function from mndlbrot.cpp  by Wolf Jung (C) 2007-2017 ...
   part of Mandel 5.14, which is free software; you can
   redistribute and / or modify them under the terms of the GNU General
   Public License as published by the Free Software Foundation; either
   version 3, or (at your option) any later version. In short: there is
   no warranty of any kind; you must redistribute the source code as well.
   
   http://www.mndynamics.com/indexp.html
   ----------------------------------------------
   
   it is used to find :
   * periodic or preperiodic points on dynamic plane 
   * on parameter plane 
   ** centers
   ** Misiurewicz points
   
   using Newton method
  
   
*/
int find(int sg, uint preper, uint per, mdouble &x, mdouble &y) 
{  mdouble a = A, b = B, fx, fy, px, py, w;
  uint i, j;
   
  for (i = 0; i < 30; i++)
    { if (sg > 0) // parameter plane
	{ a = x; b = y; } 
         
      if (!preper) // preperiod==0
	{  if (sg > 0) // parameter plane
	    { fx = 0; 
	      fy = 0; 
	      px = 0; 
	      py = 0; }
	       
	  else // dynamic plane
	    { fx = -x; 
	      fy = -y; 
	      px = -1; 
	      py = 0; }
	}
	
      else // preperiod > 0
	{ fx = x; 
	  fy = y; 
	  px = 1.0; 
	  py = 0;
	  
	  for (j = 1; j < preper; j++)
	    {  if (px*px + py*py > 1e100) return 1;
	      w = 2*(fx*px - fy*py); 
	      py = 2*(fx*py + fy*px);
	      px = w; 
	      if (sg > 0) px++; // parameter plane
	      w = fx*fx - fy*fy + a; 
	      fy = 2*fx*fy + b; 
	      fx = w;
	    }
	}
	
      mdouble Fx = fx, Fy = fy, Px = px, Py = py;
      
      for (j = 0; j < per; j++)
	{  if (px*px + py*py > 1e100) return 2;
	  w = 2*(fx*px - fy*py); 
	  py = 2*(fx*py + fy*px);
	  px = w; 
	  if (sg > 0) px++; // parameter plane
	  w = fx*fx - fy*fy + a; 
	  fy = 2*fx*fy + b; 
	  fx = w;
	}
      fx += Fx; 
      fy += Fy; 
      px += Px; 
      py += Py;
      w = px*px + py*py; 
      if (w < 1e-100) return -1;
      x -= (fx*px + fy*py)/w; 
      y += (fx*py - fy*px)/w;
    }
  return 0;
}

int main()
{

  
	int plane = 1; // positive is parameter plane, negative is dynamic plane = signtype
  	uint preper = 0; // " the usual convention is to use the preperiod of the critical value. This has the advantage, that the angles of the critical value have the same preperiod under doubling as the point, and the same angles are found in the parameter plane." ( Wolf Jung )
  	uint per ; // period
  	mdouble x ;
  	mdouble y = 0.0L;
  	int n;
  
  	// Starting with a center of period  n
  	per = 1;
	x = 0.0L;
	
	// find an approximation for the center of period  2n 
	for (n=1; n<30; n++){
     
     		 printf("Period = %10u \tcenter = %.18Lf\n", per, x);
        
        	// next center
      		per *= 2; // period doubling 
        	// approximate  of next value using Feigenbaum rescaling ( in the 1/2-limb )
        	x = cFb + (x - cFb)/dFb; 
        	// more precise value of x useing Newton method  
        	find(plane, preper, per, x, y); 
      
   }

  return 0;
}

逃逸路线 1/2

[编辑 | 编辑源代码]


This process in which an orbit of period- successively lose stability to an orbit of period-, ending at a limiting value at which all periodic solutions are unstable is known as the period doubling route to chaos. (Mark Nelson)[4]

另请参阅

[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]
  1. wikipedia: 周期倍增分叉
  2. 曼德尔布罗特集合天线中使用外部参数的操作 by G. Pastor, M. Romera, G. Alvarez, and F. Montoya
  3. 关于单位区间上变换的有限极限集 by N. METROPOLIS, M. L. STEIN, AND P. R. STEIN
  4. M Nelson 教学材料 : part4.pdf
  5. 外部射线和曼德尔布罗特集合的实数切片 by Saeed Zakeri ( 来自 arxiv 的 pdf 论文)
  6. 曼德尔布罗特集合的双可达点 by SAEED ZAKERI
  7. wikipedia: 费根鲍姆常数
华夏公益教科书