当前位置:文档之家› 复平面的迭代

复平面的迭代


参考书:《分形算法与程序设计》
23
• 1) 选择指数α、迭代次数L、收敛值M; 2) 选择一象素点(x,y); 3) 根据所希望的分形形式选择C和Z(即生 成C平面分形,还是Z平面分形); 4) 设置迭代计数i,初值为0; α 5) 用公式Z=Z +C计算Z的新值; • 6) 递增迭代次数i,即i=i+1; 7) 重复步骤5、6,一直到终结条件(i<L 或|Z|<M)得到满足;
参考书:《分形算法与程序设计》 6
Julia集的逃逸时间算法
参考书:《分形算法与程序设计》
7
Julia集的逃逸时间算法
算法:Julia 标题:Julia集的逃逸时间算法 参数:K(逃逸时间) m(逃逸半径) Mx,My(绘图范围) xs,xl,ys,yl(窗口范围) p,q(复平面上C的坐标) 变量:x0,y0(坐标变量) r(膜变量) 函数:SetP (x,y,color) (画点函数) BEGIN //初始化 K=100 m=500 Mx=800 My=600 xs=-1.5 xl=1.5 ys=-1.5 yl=1.5 p=0.23 q=0.043
基于牛顿迭代的Julia集的逃逸时间算法
nx=2*x/3+(x*x-y*y)/fm ny=2*y/3-2*x*y/fm x=nx y=ny ENDFOR Loop ENDFOR ENDFOR END
参考书:《分形算法与程序设计》
22
影响复迭代分形图的若干 因素分析
• Logistic方程的变形Z=Z2+C对应着两类著名的 分形集-Mandelbrot集(C平面分形)和Julia集(Z平 面分到复迭代变换Z=Z +C ,其对应的分形 图也分为两种情况:C平面分形和Z平面分形。 这是两类不同的分形图,而它们又是有联系的。 生成这两类分形图的一个通用过程如下:
11
Mandelbrot集的逃逸时间算法
x0=0 y0=0 Loop1: xk=x0*x0-y0*y0+p0 yk=2*x0*y0+q0 k=k+1 r=xk*xk+yk*yk x0=xk y0=yk IF r>m THEN H=k GOTO Loop2 ENDIF IF r<=m AND k<K THEN GOTO Loop1 ENDIF Loop2: SetP(np,nq,H) ENDFOR ENDFOR END
• 复平面函数的迭代算法及作图
参考书:《分形算法与程序设计》
1
复变函数的迭代
考虑 Zk+1=Zk2+c
给定复数初值Z0,c ,得到无穷复数序列{Zk}
Julia集:固定c J ={Z0序列{Zk}有界} Mandelbrot集:固定Z0
MZ={c 序列{Zk}有界}
若Zk= xk+ iyk , c = p+iq xk+1=xk2-yk2+p yk+1=2xkyk +q
参考书:《分形算法与程序设计》 14
Newton分形
参考书:《分形算法与程序设计》
15
牛顿迭代法作图
• 对于复平面上面的任一点c=a+b*i,i为虚数单 位,我们都可以得到一个复平面上的二次函数 f(z)=z2+c,z为复变量。 • 用这个f(z)进行迭代,迭代初值为0,迭代次数 为无穷次,如果最终的迭代所得到的值是一个 有限值,那么点c就属于是Mandelbrot集,这些点 c称为收敛点;若不能得到有限值,则点c不属 于Mandelbrot集,称为发散点。
参考书:《分形算法与程序设计》
18
• • • • • • •
作图步凑: 1) 选择参数a or c、迭代次数L、收敛值M; 2) 选择象素点(x,y); 3) 设置迭代计数i,初值为0; a 4) 用公式Z=Z +C计算Z的新值; 5) 递增迭代次数i,即i=i+1; 6) 重复步骤5、6,一直到终结条件(i<L 或|Z|<M)得到满足; • 7) 在屏幕上显示此象素点(x,y);
20
基于牛顿迭代的Julia集的逃逸时间算法
BEGIN fnm(x,y)=x*x+y*y 标题: Julia集的牛顿迭代 FOR i=-150 TO 150 逃逸时间算法 FOR j=-150 TO 150 参数:N(迭代次数) x=i/75 r(距离小量) y=i/75 Mx,My(绘图范围) FOR k=1 TO n xs,xl,ys,yl(窗口范围) IF i=0 AND j=0 THEN p,q(复平面上C的坐标) GOTO Loop 变量:x0,y0(坐标变量) ENDIF r(膜变量) IF fnm(x-1,y)<r THEN 函数:SetP (x,y,color) (画点函数) SetP (i,j) GOTO Loop ENDIF fm=3*fnm(x,y)*fnm(x,y) 21 参考书:《分形算法与程序设计》 算法:Julia_Newton
2 参考书:《分形算法与程序设计》
逃逸时间算法的基本思想
F(z)=z2+c
当c=0时,由于z是复数,即z=x+yi,则有 z2=z×z=(x+yi) ×(x+yi)=x2+y2i2+2xyi=(x2-y2)+(2xy)i
设复数z=x+yi的绝对值,即
|z|= SQR(x2+y2) |F(z0)|=|x02-y02+2x0y0i|
若|z0|>1, z是平面上的单位圆。
• (1) 当初值︱z︱<1 时,F(z)→0; • (2) 当初值︱z︱>1 时, F(z)→∞; • 结论:实轴上有两个不动点,即0和∞, 称为“平庸吸引子”。 • (3) 当初值︱z︱= 1 时,F(z)在圆周 ∣Z∣=1上变化,呈现出不稳定的性态。
参考书:《分形算法与程序设计》
=SQR((x02-y02)2+(2x0y0)2)
=SQR(x04+y04-2x02y02+4x02y02) =SQR((x02+y02)2)
=|z0|2
若0<|z0|<1, |F(z0)|<|z0|,对于每一次迭代z趋向0,即z向0收敛。 若|z0|>1, 经过迭代z会趋向无穷, z向无穷逃逸。
参考书:《分形算法与程序设计》 3
参考书:《分形算法与程序设计》 19
基于牛顿迭代的Julia集的逃逸时间算法
牛顿迭代法求根公式: zn+1=zn-f(zn)/f’(zn) 其中,f’(zn)是f(zn)的导数。 考虑f(z)=z3-1=0的情况,那么相应的牛顿 变换是 f(z)=(2z3+1)/3z2
则z的三个根分别是 w1=1,w2=ei2π/3,w3=ei4π/3,三个根的吸引 域A(w1),A(w2),A(w3)的交界便是牛顿 函数的Julia集。经过迭代,在A(wi)上的 点都会被吸引到点wi上。设一个较大的 迭代次数N,以及一个距离小量r,当迭 代次数达到N,其与根点的距离小于r的 被认为是收敛到某根上了,否则被认为 是逃逸了。 参考书:《分形算法与程序设计》
参考书:《分形算法与程序设计》 16

不用0作为初始迭代点,而用复平面上 面的其它任意一点作为初始迭代点,再 根据这些点的最终迭代结果给每个初始 迭代点着色,我们就可以得到Julia集。
参考书:《分形算法与程序设计》
17
• 具体地说,Mandelbrot记录的是整个区域 上的c值情况,而Julia集是取一固定的c 值后,观察复平面上每一点(x,y)在迭代 中的表现,并把结果记录下来。
参考书:《分形算法与程序设计》
10
Mandelbrot集的逃逸时间算法
BEGIN pl=0.9 标题: Mandelbrot集的逃逸时间算法 ps=2.3 参数:K(逃逸时间) ql=1.2 m(逃逸半径) qs=-1.2 Mx,My(绘图范围) K=100 xs,xl,ys,yl(窗口范围) m=500 p,q(复平面上C的坐标) Mx=800 变量:x0,y0(坐标变量) My=600 r(膜变量) p=(pl-ps)/Mx 函数:SetP (x,y,color) (画点函数) q=(ql-qs)/My FOR np=0 TO Mx FOR nq=0 TO My p0=ps+np*p q0=qs+nq*q 参考书:《分形算法与程序设计》 k=0 算法:Mandelbrot
参考书:《分形算法与程序设计》
24
• 8) 在屏幕上显示此象素点(x,y); 9) 重复步骤2~8,对所希望的所有象素 点进行处理。 • 分析上述对应于复迭代变换Z=Zα+C的分 形图生成过程,我们发现,参数C、指数 α、迭代次数L、收敛值M的取值对最后 生成的图形都是有影响的。
参考书:《分形算法与程序设计》
参考书:《分形算法与程序设计》 27
• (2)C≠0 如图1所示,不同的参数C,对应着 形态各异的分形图象。而对于确定的参 数C,其对应分形图的局部放大图与整体 图像极其相似,因而具有严格的自似性。
• 不同参数C对应的Z平面分形图及其放大 图,如下:
参考书:《分形算法与程序设计》
参考书:《分形算法与程序设计》
5
• (1).定义一个半径充分大的圆 确定以W为中心,R为半径的圆,R为正 整数且足够大,使圆包含 W,再定义一 个发散区域: V={(x,y)∈R2;(x2+y2)1/2>R 当轨道进入V区域,轨道发散。 • ( 2). 确定最大迭代次数 • ( 3). 用不同的颜色绘制逃逸和不逃逸 的点,也可以在逃逸的点中用确定该点 是逃逸点的迭代数来确定绘制的颜色, 这样可以观察到点逃逸的快慢。
参考书:《分形算法与程序设计》
12
Mandelbrot集
参考书:《分形算法与程序设计》
13
牛顿分形
相关主题