分形/複平面迭代/曼德勃羅集外部復勢
外觀
< 分形

引數平面上的復勢
綠色過程以英國數學家喬治·格林命名
復勢是一個複數,所以它有 2 部分
- 一個實部 = 實勢 = 絕對值
- 一個虛部 = 外角
人們也可以取其
- 旋度
- 散度
因此在一張影像上,人們可以使用一個以上的變數來對影像進行著色。[1]
實現
- Mathematica[2]
名稱
名稱
在 Fractint 中
potential = log(modulus)/2^iterations
人們可以使用實勢來
- 平滑(連續)著色[7]
- 離散著色(勢能的等值線)
- 3D 檢視
程式碼
這是一個 Delphi 函式,它給出了勢能的級別
Function GiveLevelOfPotential(potential:extended):integer;
var r:extended;
begin
r:= log2(abs(potential));
result:=ceil(r);
end;
/******************************************************************/
// /fractint/common/calcfrac.c
/*
CALCFRAC.C contains the high level ("engine") code for calculating the
fractal images (well, SOMEBODY had to do it!).
Original author Tim Wegner, but just about ALL the authors have contributed
SOME code to this routine at one time or another, or contributed to one of
the many massive restructurings.
The following modules work very closely with CALCFRAC.C:
FRACTALS.C the fractal-specific code for escape-time fractals.
FRACSUBR.C assorted subroutines belonging mainly to calcfrac.
CALCMAND.ASM fast Mandelbrot/Julia integer implementation
Additional fractal-specific modules are also invoked from CALCFRAC:
LORENZ.C engine level and fractal specific code for attractors.
JB.C julibrot logic
PARSER.C formula fractals
and more
-------------------------------------------------------------------- */
/* Continuous potential calculation for Mandelbrot and Julia */
/* Reference: Science of Fractal Images p. 190. */
/* Special thanks to Mark Peterson for his "MtMand" program that */
/* beautifully approximates plate 25 (same reference) and spurred */
/* on the inclusion of similar capabilities in FRACTINT. */
/* */
/* The purpose of this function is to calculate a color value */
/* for a fractal that varies continuously with the screen pixels */
/* locations for better rendering in 3D. */
/* */
/* Here "magnitude" is the modulus of the orbit value at */
/* "iterations". The potparms[] are user-entered paramters */
/* controlling the level and slope of the continuous potential */
/* surface. Returns color. - Tim Wegner 6/25/89 */
/* */
/* -- Change history -- */
/* */
/* 09/12/89 - added floatflag support and fixed float underflow */
/* */
/******************************************************************/
static int _fastcall potential(double mag, long iterations)
{
float f_mag,f_tmp,pot;
double d_tmp;
int i_pot;
long l_pot;
if(iterations < maxit)
{
pot = (float)(l_pot = iterations+2);
if(l_pot <= 0 || mag <= 1.0)
pot = (float)0.0;
else /* pot = log(mag) / pow(2.0, (double)pot); */
{
if(l_pot < 120 && !floatflag) /* empirically determined limit of fShift */
{
f_mag = (float)mag;
fLog14(f_mag,f_tmp); /* this SHOULD be non-negative */
fShift(f_tmp,(char)-l_pot,pot);
}
else
{
d_tmp = log(mag)/(double)pow(2.0,(double)pot);
if(d_tmp > FLT_MIN) /* prevent float type underflow */
pot = (float)d_tmp;
else
pot = (float)0.0;
}
}
/* following transformation strictly for aesthetic reasons */
/* meaning of parameters:
potparam[0] -- zero potential level - highest color -
potparam[1] -- slope multiplier -- higher is steeper
potparam[2] -- rqlim value if changeable (bailout for modulus) */
if(pot > 0.0)
{
if(floatflag)
pot = (float)sqrt((double)pot);
else
{
fSqrt14(pot,f_tmp);
pot = f_tmp;
}
pot = (float)(potparam[0] - pot*potparam[1] - 1.0);
}
else
pot = (float)(potparam[0] - 1.0);
if(pot < 1.0)
pot = (float)1.0; /* avoid color 0 */
}
else if(inside >= 0)
pot = inside;
else /* inside < 0 implies inside=maxit, so use 1st pot param instead */
pot = (float)potparam[0];
i_pot = (int)((l_pot = (long)(pot * 256)) >> 8);
if(i_pot >= colors)
{
i_pot = colors - 1;
l_pot = 255;
}
if(pot16bit)
{
if (dotmode != 11) /* if putcolor won't be doing it for us */
writedisk(col+sxoffs,row+syoffs,i_pot);
writedisk(col+sxoffs,row+sydots+syoffs,(int)l_pot);
}
return(i_pot);
}
Image[Table[If[ColorQ@#,#,Black]&@Hue[(Arg[MandelbrotSetBoettcher[x+I y]]+Pi)/(2Pi)],{y,-2,2,.005},{x,-2,2,.005}]]
共軛角
- 尾流的角
對於曼德勃羅集,考慮週期大於等於 2 的嚴格週期射線,對中另一條可以利用Henk Bruin 和 Dierk Schleicher 的二次多項式的符號動力學 的演算法 13.3 在 O(period^2) 時間內找到。
程式碼
- https://code.mathr.co.uk/mandelbrot-symbolics/blob/82378e281c6ef149c7280d2b10076fffd83e0a8c:/c/lib/m_q_unlinked.c
- https://code.mathr.co.uk/mandelbrot-symbolics/blob/82378e281c6ef149c7280d2b10076fffd83e0a8c:/c/lib/m_q_conjugate.c
首先找到最後一次迭代的角度。它很容易計算,並顯示一些外部射線作為等值線的邊界。
- LSM/M 的二進位制分解
- 第 n 次分解:外部的顏色與最後一次迭代落入的象限成正比。(參見下文)
- 外部網格座標:(arg(final z),log(|final z|)/log(escaperadius))[8]
- 條紋平均著色
然後人們走得更遠。
- 由 Claude Heiland-Allen 自動計算核和週期的外部角[9]
方法

角度為(以圈為單位)的外部引數射線
- 321685687669320/2251799813685247(週期為 51,落在 c1 = -0.088891642419446 +0.650955631292636i 上)
- 321685687669322/2251799813685247(週期為 51,落在 c2 = -0.090588078906990 +0.655983860334813i 上)
- 1/7(週期為 3,落在 c3 = -0.125000000000000 +0.649519052838329i 上)
角度相差約 ,但相應引數射線的著陸點相差約 0.035。[16] 它可以使用 Maxima CAS 計算
(%i1) c1: -0.088891642419446 +0.650955631292636*%i; (%o1) 0.650955631292636*%i−0.088891642419446 (%i2) c2:-0.090588078906990 +0.655983860334813*%i; (%o2) 0.655983860334813*%i−0.09058807890699 (%i3) abs(c2-c1); (%o3) .005306692383854863 (%i4) c3: -0.125000000000000 +0.649519052838329*%i$ (%i5) abs(c3-c1); (%o5) .03613692356607755 (%i6) a3:1/7$ (%i7) float(abs(a3-a1)); (%o7) 4.440892098500628*10^−16
來自 W Jung 程式的資訊
The angle 1/7 or p001 has preperiod = 0 and period = 3. The conjugate angle is 2/7 or p010 . The kneading sequence is AA* and the internal address is 1-3 . The corresponding parameter rays are landing at the root of a satellite component of period 3. It is bifurcating from period 1.
The angle 321685687669320/2251799813685247 or p001001001001001001001001001001001001001001001001000 has preperiod = 0 and period = 51. The conjugate angle is 321685687669319/2251799813685247 or p001001001001001001001001001001001001001001001000111 . The kneading sequence is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB* and the internal address is 1-49-50-51 . The corresponding parameter rays are landing at the root of a primitive component of period 51.
The angle 321685687669322/2251799813685247 or p001001001001001001001001001001001001001001001001010 has preperiod = 0 and period = 51. The conjugate angle is 321685687669329/2251799813685247 or p001001001001001001001001001001001001001001001010001 . The kneading sequence is AABAABAABAABAABAABAABAABAABAABAABAABAABAABAABAABAA* and the internal address is 1-3-51 . The corresponding parameter rays are landing at the root of a satellite component of period 51. It is bifurcating from period 3.
角度為(以圈為單位)的外部引數射線
- 6871947673/34359738367(週期 35)
- 9162596898/34359738367(週期 35)
位於 -0.153756141 + 1.030383223i 的花椰菜中心嬰兒曼德布羅集
(不是 34359738367 = 2^35 - 1)

G Pastor 給出了一個外部射線的例子,對於這個例子,IEEE 754 的精度不夠:[17]
- (週期 3,落在週期 3 分量 c3 = -0.125000000000000 +0.649519052838329i 的根點上)
可以使用 Claude Heiland-Allen 編寫的程式 分析這些角度。
./bin/mandelbrot_describe_external_angle ".(001)"
binary: .(001)
decimal: 1/7
preperiod: 0
period: 3
./bin/mandelbrot_describe_external_angle
".(001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001010)"
binary:
.(001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001010)
decimal:
33877456965431938318210482471113262183356704085033125021829876006886584214655562/237142198758023568227473377297792835283496928595231875152809132048206089502588927
preperiod: 0
period: 267
./bin/mandelbrot_describe_external_angle
".(001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001010001)"
binary:
.(001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001010001)
decimal:
33877456965431938318210482471113262183356704085033125021829876006886584214655569/237142198758023568227473377297792835283496928595231875152809132048206089502588927
preperiod: 0
period: 267
./bin/mandelbrot_describe_external_angle
".(0010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010001)"
binary:
.(0010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010001)
decimal:
67754913930863876636420964942226524366713408170066250043659752013773168429311121/474284397516047136454946754595585670566993857190463750305618264096412179005177855
preperiod: 0
period: 268
./bin/mandelbrot_describe_external_angle
".(0010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010)"
binary:
.(0010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010)
decimal:
67754913930863876636420964942226524366713408170066250043659752013773168429311122/474284397516047136454946754595585670566993857190463750305618264096412179005177855
preperiod: 0
period: 268
上面射線的著陸點是具有角度內部地址的根(Claude Heiland-Allen 的描述)。
- 上面的那個將是 1 -> 1/3 -> 3 -> 1/(週期/3) -> 週期,因為它是最靠近 1/3 球根的下方尖點的球根,並且 1/3 球根的子球根具有周期 3 * 分母(內部角度),即 1 -> 1/3 -> 3 -> 1/89 -> 267
- 下面的那個將是 1 -> floor(週期/3)/週期 -> 週期,因為它是最靠近 1/3 尖點下方的球根,即 1 -> 89/268 -> 268
- 中間射線 .(001) 落在 1 -> 1/3 -> 3 的根點上,來自下方尖點(在標準未旋轉檢視中位於右側)
- ↑ John J. G. Savard 的曼德布羅函式
- ↑ Wolfram 參考資料:MandelbrotSetBoettcher
- ↑ Linas Vepstas 的 Douady Hubbard 勢
- ↑ i quilezles : 距離分形
- ↑ Douglas C. Ravenel 教授的第 10 課
- ↑ 用於繪製曼德布羅集和朱利亞集的距離估計方法 Lindsay Robert Wilson 博士
- ↑ Tony Finch 的平滑著色是曼德布羅集的關鍵
- ↑ fractalforums.org : 曼德布羅外部角度
- ↑ 由 Claude Heiland-Allen 自動計算外部角
- ↑ 繪製曼德勃羅集外部射線的演算法,作者:川平知樹
- ↑ 沃爾夫·容解釋
- ↑ 作者:Claude Heiland-Allenmandelbrot_set_newton_basins
- ↑ 解決繪製曼德勃羅集外部射線限制的一種方法,作者:M. Romera,1 G. Pastor, A. B. Orue,1 A. Martin, M.-F. Danca 和 F. Montoya
- ↑ 分形論壇 : 迭代期間繪製場線...
- ↑ 分形論壇 : 曼德勃羅集的平滑外部角
- ↑ 沃爾夫·容關於繪製引數射線精度的測試
- ↑ 解決繪製曼德勃羅集外部射線限制的一種方法,作者:M. Romera,1 G. Pastor, A. B. Orue,1 A. Martin, M.-F. Danca 和 F. Montoya