用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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 21:40:22
用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

用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
用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,复数C应该是任意变化的,为什么有范围呢?如果不是变化范围的意思,那么cx,最后赋初值时cx=1,cy=0代表着什么?

用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
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]Hue];
Return[t]
]
Mandelbrot=M2[x,y,{PlotPoints->120,PlotLabel->"Mandelbrot集"}]
你看看行不行