Matlab实验报告:分形迭代
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学实验报告:分形迭代
练习1
1.实验目的:绘制分形图案并分析其特点。
2.实验内容:绘制Koch曲线、Sierpinski三角形和树木花草图形,观察这些图形的局部和原来分形图形的关系。
3.实验思路:利用函数反复调用自己来模拟分形构造时的迭代过程,当迭代指标n为0时运行作图操作,否则继续迭代。
4.实验步骤:
(1)Koch曲线
function koch(p,q,n) % p、q分别为koch曲线的始末复坐标,n为迭代次数
if (n==0)
plot([real(p);real(q)],[imag(p);imag(q)]);
hold on;
axis equal
else
a=(2*p+q)/3; % 求出从p 到q 的1/3 处端点a
b=(p+2*q)/3; % 求出从p 到q 的2/3 处端点b
c=a+(b-a)*exp(pi*i/3);%
koch(p, a, n-1); % 对pa 线段做下一回合
koch(a, c, n-1); % 对ac 线段做下一回合
koch(c, b, n-1); % 对cb 线段做下一回合
koch(b, q, n-1); % 对bq 线段做下一回合
end
(2)Sierpinski三角形
function sierpinski(a,b,c,n) % a、b、c为三角形顶点,n为迭代次数
if (n==0)
fill([real(a) real(b) real(c)],[imag(a) imag(b) imag(c)],'b');% 填充三角形abc
hold on;
axis equal
else
a1=(b+c)/2;
b1=(a+c)/2;
c1=(a+b)/2;
sierpinski(a,b1,c1,n-1);
sierpinski(a1,b,c1,n-1);
sierpinski(a1,b1,c,n-1);
end
(3)树木花草
function grasstree(p,q,n) % p、q分别为树木花草始末复坐标,n为迭代次数
plot([real(p);real(q)],[imag(p);imag(q)]);
hold on;
axis equal
if(n>0)
a=(2*p+q)/3;
b=(p+2*q)/3;
c=a+(b-a)*exp(pi*i/6);%
d=b+(q-b)*exp(-pi*i/6);%
grasstree(a,c,n-1);
grasstree(b,d,n-1);
end
end
5.主要输出:
指令:koch(0,1,5); soerpinski(0,1,exp(pi*i/3),5); grasstree(0,i,5);
Koch曲线
Sierpinski三角形
树木花草
6.实验结论:以上图案的局部形状与原本图形用某种自相似性,这正是分形的特点。
7.问题分析:一般迭代次数大于7,程序运行时间就很长,因此迭代次数建议设定为5。
练习2
1.实验目的:研究Koah雪花的特征。
2.实验内容:对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。
3.方法思路:采用Koch曲线的迭代元来绘制。
4.实验步骤:
function xuehua(n)
koch(0,0.5+(1/2)*sqrt(3)*i,n);
koch(0.5+(1/2)*sqrt(3)*i,1,n);
koch(1,0,n);
end
xuehua(1);xuehua(3)
5.主要输出:
不同n对应不同的图像如下:
n=1 n=3
6.实验结论:每一次迭加,所产生的新三角形的边长变为上一次的1/3,数量为上一次的4
倍。而设原三角形边长为r ,Koch 雪花的面积∑=-⨯⨯⨯+=n i i
i r r S 1
21
22]3143[4343, 由此可以推出雪花曲线的边长是无限的,而面积是有限的。另外,从图像可以看出,随迭代
次数n 趋于无穷,图形每一点都没有切线。 7.问题分析:由于没有找到matlab 中相应的计算图形面积与周长的函数,所以这两项计算是由人工完成的。
练习3
1.实验目的:研究分形维数反映出来的分形的特性。
2.实验内容:利用分形维数公式d=log(n)/log(c)计算雪花曲线,Sierpinski 三角形,Minkowski 香肠的维数并与其图像显现出的性质进行比较。
3.方法思路:只需画出Minkowski 香肠的图像,其他分形利用之前图像与维数进行比较即可。
4.实验步骤:
Minkowski 香肠:
function Minkowski(p,q,n) if (n==0)
plot([real(p);real(q)],[imag(p);imag(q)]); hold on; axis equal else
m=(q-p)/4;m1=real(m);m2=imag(m);
a=p+m; b=a+(-m2+m1*i);c=b+m;d0=c+(m2-m1*i); d=c+2*(m2-m1*i);e=d+m;f=e+(-m2+m1*i); Minkowski(p, a, n-1); Minkowski(a, b, n-1); Minkowski(b, c, n-1); Minkowski(c, d0, n-1); Minkowski(d0, d, n-1); Minkowski(d, e, n-1); Minkowski(e, f, n-1);
Minkowski(f, q, n-1);
5.实验输出:由分形维数公式log(n)/log(c)可计算的个图形的维数。
雪花曲线:log4/log3=1.26
Minkowski 香肠:log n/logc=1.5 Sierpinski 三角形:log3/log2=1.58
Minkowski 香肠: