作业帮 > 综合 > 作业

matlab解答对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花.编制程序绘制出它的

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/01 22:58:52
matlab解答
对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花.编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数.
把下面的程序保存为plotkoch.m,然后在command windows中输入plotkoch(8)即可,其中8是迭代次数,你可以换成别的整数.
function plotkoch(n)
[x,y]=koch(n);
fill(x,y,'w');
text(0,0,{'\centerline{The area surrounded by Koch Snow Curve is $\displaystyle\frac{2\sqrt {3}{n}^{2}}{5}$.}',...
'\centerline{($n$ is the side length of the original triangle.)}',...
'\centerline{The dimension of the curve is $\log{_34}$.}'},...
'interpreter','latex','horizontalalignment','center')
axis equal off;
function [x,y]=koch(n)
if n==1
t=linspace(0,2*pi,4);
x=cos(t);
y=sin(t);
else
p=1/3;h=p*sqrt(3)/2;
[x,y]=koch(n-1);
xx=x(1);yy=y(1);
dx=diff(x);dy=diff(y);
ax=(1-p)*x(1:end-1)+p*x(2:end);
ay=(1-p)*y(1:end-1)+p*y(2:end);
bx=p*x(1:end-1)+(1-p)*x(2:end);
by=p*y(1:end-1)+(1-p)*y(2:end);
ox=(x(1:end-1)+x(2:end))/2+h*dy;
oy=(y(1:end-1)+y(2:end))/2-h*dx;
x=[reshape([x(1:end-1);ax;ox;bx],1,[]),x(end)];
y=[reshape([y(1:end-1);ay;oy;by],1,[]),y(end)];
end