所在的位置: c++ >> 培训学校 >> 用Matlab探索分形世界

用Matlab探索分形世界

1.画Mandrbrot集

写的时候在主程序中没有写具体的函数,而是直接在Itratb函数中对于z的迭代进行赋值

Maincod:

xspac=linspac(-2,2,);

yspac=linspac(-2,2,);

[x,y]=mshgrid(xspac,yspac);

logics=arrayfun(

(c)Itratb(c,50),x+y*sqrt(-1));

figur;

pcolor(logics);

colormap(hot);//用了hot进行涂色

shadingflat;

functionrsult=Itratb(z0,tims)

z=0;

rsult=0;

fori=1:tims

z=z^2+z0;

ifabs(z)10

rsult=abs(z);

rturn

nd

nd

End

将itratb函数修改成

functionrsult=Itratb(z0,tims)

z=0;

rsult=0;

fori=1:tims

z=sin(z).^3+z0;

%z=z.^2+z0;

ifabs(z)10

rsult=i;

%rsult=abs(z);

rturn

nd

nd

nd

关于itratb的说明:将程序改进了一下,记录的是跳出的步数,这样再用pcolor画的时候,就有更多的颜色是相同的数字,从而图像更好看。

可得到演变后的Mandrbrot集(用了coppr的配色)(这个真的有点难看)

2.画Julit变形(金龙狂舞造型)

不知道哪个更好看一点。

左图配色条如下:

程序:

fun=

(z)sin(z).^3-0.72*sqrt(-1)+0.;

xspac=linspac(-2,2,);

yspac=linspac(-2,2,);

[x,y]=mshgrid(xspac,yspac);

logics=arrayfun(

(z)itratJulit2(fun,z,50),x+y*sqrt(-1));

figur;

pcolor(logics);

colormap(gray);

shadingflat;

functionrsult=itratJulit2(ff,z0,tims)

z=z0;

rsult=0;

fori=1:tims

z=ff(z);

ifabs(z)2abs(ral(z))2//根据函数的可能取值定参考范围

rsult=i;

rturn;

nd

nd

nd

3.画小花

主程序:

c=0+0.6*sqrt(-1);

fun=

(z)z.^5+c;//5次方的图像倾向于小花

xspac=linspac(-2,2,);

yspac=linspac(-2,2,);

[x,y]=mshgrid(xspac,yspac);

logics=arrayfun(

(z)itratJulit2(fun,z,),x+y*sqrt(-1));

figur;

pcolor(logics);

colormap(bon);

shadingflat;

functionrsult=itratJulit2(ff,z0,tims)

z=z0;

rsult=0;

fori=1:tims

z=ff(z);

ifabs(z)abs(ral(z))

rsult=i;

rturn;

nd

nd

nd

画出来之后需要调色,为了使得图像好看,需要调色,虽然在colormap上用了bon,但是我还是自己手动调了色,加入了一个紫色在偏左边的地方。

4.画一群奇怪的生物

我个人比较钟爱幂函数,所以在前面尝试了小花后,多尝试了几个。

三次方(与前面相同,也手动配了色,用了靓粉和红棕,效果还行)

Maincod:

fun=

(z)z.^3+0.3*sqrt(-1)+0.7;

xspac=linspac(-2,2,);

yspac=linspac(-2,2,);

[x,y]=mshgrid(xspac,yspac);

logics=arrayfun(

(z)itratJulit2(fun,z,50),x+y*sqrt(-1));

figur;

pcolor(logics);

colormap(gray);

shadingflat;

functionrsult=itratJulit2(ff,z0,tims)

z=z0;

rsult=0;

fori=1:tims

z=ff(z);

ifabs(z)abs(ral(z))//r取值比较大,这样可以有更多的i值

rsult=i;

rturn;

nd

nd

nd

然后只改了前面的幂,画出了下面两张。

(第1个图)四次方:

fun=

(z)z.^4+0.3*sqrt(-1)+0.7;

其他的完全一致,用colormap(gray)保留gray的配色。

(第2个图)六次方:

fun=

(z)z.^6+0.3*sqrt(-1)+0.7;

其他的完全一致,自定义将配色(下图)改成太阳色的方案,可得到小太阳。

通过画图我们相当容易发现,幂决定了图形有多少个凸点。在大的(三角、四边、五边、六边)里面的具体情况,则时由初始参数的位置决定的。

5.画风格奇怪的装饰图

fun=

(z)z-(sin(z).^4+2)/(4*sin(z).^3.*cos(z))

xspac=linspac(-2,2,);

yspac=linspac(-2,2,);

[x,y]=mshgrid(xspac,yspac);

logics=arrayfun(

(z)itratJulit2(fun,z,50),x+y*sqrt(-1));

figur;

pcolor(logics);

colormap(jt);

shadingflat;

functionrsult=itratJulit2(ff,z0,tims)

z=z0;

rsult=0;

fori=1:tims

z=ff(z);

ifabs(z)10abs(ral(z))10

rsult=i;

rturn;

nd

nd

End

配色方案:

还有奇怪的夏威夷风格:

fun=

(z)(2*sin(z).^3+2)/(3*cos(z).^2;

xspac=linspac(-2,2,);

yspac=linspac(-2,2,);

[x,y]=mshgrid(xspac,yspac);

logics=arrayfun(

(z)itratJulit2(fun,z,50),x+y*sqrt(-1));

figur;

pcolor(logics);

colormap(colorcub);

shadingflat;

functionrsult=itratJulit2(ff,z0,tims)

z=z0;

rsult=0;

fori=1:tims

z=ff(z);

ifabs(z)10abs(ral(z))10

rsult=i;

rturn;

nd

nd

nd

在colorcub的基础上小调一下色条:

说明:本作品的作者是北师大政府管理学院级学生张唯佳,作品出自北师大系统科学学院张江老师为政府管理学院本科生开设的《matlab基础与应用》课程的课后作业。









































北京治白癜风那间医院好
治白癜风海口哪家医院好



转载请注明:http://www.nydjfy.com/pxxx/3762.html