用Mathematica7绘制分形图Mandelbrot集合的程序问题,急!!

这是可行的程序Fx1[x_, y_, cx_, cy_, n_] := Block[{z, ct = 0}, z = x + y*I; While[(Abs[z] < 2.0) && (ct < 50), ++ct; z = z^n + (cx + cy*I)*(x + y*I)]; Return[ct]; ]Ht1[cx_, cy_, n_, pu_List, po_List, pl_List] := Block[{kok}, kok = DensityPlot[ Fx1[xx, yy, cx, cy, n], {xx, pu[[2]], pu[[3]]}, {yy, po[[2]], po[[3]]}, pl, Mesh -> False, ColorFunction -> Hue]; Return[kok] ]M1 = Ht1[1, 0, 2, {x, -1.5, 0.5}, {y, -1.2, 1.2}, {PlotPoints -> 120, PlotLabel -> "X"}]有高人能逐行解释一下程序么?另外这个程序的思路1.选定参数Z=cx+cy*I,取方程为Zn+1 =Zn^k+C*Z进行迭代。2.Z的模小于2,迭代次数不超过50。3.对于Z在平面上表示时,设xx为x的初始迭代坐标,yy为y的初始迭代坐标坐标表示。4.所取的变量范围为(cx,cy),分别为x与y的范围,迭代次数为n。我对上面的有些疑问,首先M集合的迭代方程应该是Zn+1 =Zn^k+C,思路和程序中为什么用Z=Z^n+c*Z迭代还能对呢?是什么意思?然后思路4,所取的变量范围为(cx,cy)是什么意思?复数C应该是任意变化的,为什么有范围呢?如果不是变化范围的意思,那么cx,cy是什么意思?最后赋初值时cx=1,cy=0代表着什么?
2026年09月25日 22:22
有3个网友回答
网友(1):

cx,cy的意思就是参数Z的实部和虚部的值。这个程序中令cx=1,cy=0,则迭代方程还是Zn+1 =Zn^k+C,n趋向正无穷时就有z=z^n+c了
这程序设c的模小于2,迭代次数小于50次
用了个Block函数将z作为局部分量和全局变量区分清楚
通过画密度函数画出c的图像
实际上,这个程序可简化成
M1[x_,y_]:=
Block[{z,k=0},
z=x+y*I;
While[(Abs[z]<2.0)&&(k<50),++k;
z=z^2+(x+y*I)];
Return[k];
]
M2[px_,py_,p_]:=
Block[{t},
t=DensityPlot[M1[xx,yy],{xx,-1.5,0.5},{yy,-1.2,1.2},p,
Mesh->False,ColorFunction->Hue];
Return[t]
]
Mandelbrot=M2[x,y,{PlotPoints->120,PlotLabel->"Mandelbrot集"}]
你看看行不行

网友(2):

先简化一下公式,对于 Z[n+1] = Z[n] * k (注:方括号里面表示下标)
这是数学上的描述,表示序列中的下一个数字基于前一个数字计算得出。
但是在程序中,就得写 Z = Z * k。

变量范围,表示这个公式的输入的变量的范围。你可以换几个值试试。你看下这个:http://www.easyx.cn/samples/View.aspx?id=31
类似的,这里面给出了几组初值,不同的初值可以得到不同的迭代序列,画出不同的图案。

最后,cx=1, cy=0 代表迭代的初值,就是复数中的实部和虚部。

网友(3):

额 不懂