分形/复平面迭代/曼德勃罗集外部复势
外观
< 分形
参数平面上的复势
绿色过程以英国数学家乔治·格林命名
复势是一个复数,所以它有 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