第一课数学应用之分形
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end new(4*n+1)=old(n+1); %最后一点
plot(new) ; axis equal; end
2019/12/4
黄建华制作
2
4.6.1由生成元生成的分形图形
2019/12/4
黄建华制作
3
4.6.1由生成元生成的分形图形
分形树
生成方法:选取一条直线段F0,将该线段三等分,在等分 点上各画一条长度为原线段长度三分之一的线段,并与原线段 成直固至定无夹穷角,,则得最到后图得形到的F1。极再限将图F象1的,每称一为段分都形按树上。述方法修改,
y(i)=0.42*(y(i-1)-x(i-1))+0.2;
else
x(i)=0.1*x(i-1);
y(i)=0.2+0.1*y(i-1);
end
2019/12/4
黄建华制作
17
4.6.2由迭代函数系生成的分形图形
end
plot(x(1:n),y(1:n),'.m','markersize',1) ;axis off
10
4.6.2由迭代函数系生成的分形图形
vv=v(i);
% 取概率
if vv<0.01 % 概率p=0.01
y(i)=0.16*y(i-1);
elseif vv<0.86 % 概率p=0.85
x(i)=0.85*x(i-1)+0.04*y(i-1);
y(i)=1.6-0.04*x(i-1)+0.85*y(i-1);
由迭代函数系(IFS)产生分形的一般算法是:给定平面上的 一组仿射变换wi:
wi
x y
ai ci
bi di
x y
ei fi
,
i
1,2,...,n
以及相应的一组概率:p1,p2,...,pn(p1+p2+...+pn=1,pi>0) 。 对
程序略。
2019/12/4
黄建华制作
0
4.6.1由生成元生成的分形图形
koch曲线
生成方法:选取一条直线段F0,将该线段三等分,并将中 间一段用以该线段为边的等边三角形的另外两条边代替,得到 图形F1。再将F1的每一段都按上述方法修改,直至无穷,则最 后得到的极限曲线,称为koch曲线。
0.5
0.4
y(i)=0.433+0.5*y(i-1);
else
x(i)=0.5*x(i-1)+0.5;
y(i)=0.5*y(i-1);
end
end
plot(x(1:n),y(1:n),'.b','markersize',1) ;axis off
2019/12/4
黄建华制作
14
4.6.2由迭代函数系生成的分形图形
%计算新线段向量
2019/12/4
黄建华制作
5
4.6.1由生成元生成的分形图形
lp=rov1*pp; %第一条树枝偏转向量 lp=p1+lp'; %第一条树枝端点C坐标 rp=rov2*pp; %第二条树枝偏转向量 rp=p2+rp'; %第二条树枝端点D坐标 uu=[u(2*m+1,:);p1;p1;lp;p1;p2;p2;rp;p2;u(2*m+2,:)];
2019/12/4
黄建华制作
18
4.6.2由迭代函数系生成的分形图形
levy曲线
w
a
b
c
d
e
f
p
1
0.5
-0.5 0.5
0.5
0
0
0.5
2
0.5
0.5 -0.5
0.5
0.5
0.5
0.5
程序:clear;clf;n=100000;%设置迭代次数
v=rand(n,1); %随机数用于每一步做概率系数
end
2019/12/4
黄建华制作
11
4.6.2由迭代函数系生成的分形图形
end
plot(x(1:n),y(1:n),'.r','markersize',1) ;axis off
2019/12/4
黄建华制作
12
4.6.2由迭代函数系生成的分形图形
sierpinski垫
w
a
b
1
0.5
0
2
0.5
0
1
2019/12/4
黄建华制作
1
4.6.1由生成元生成的分形图形
程序:clear;clf;new=[0,1];%定义初始线段的两端 kmax=20; %迭代次数
for k=1:kmax old=new; %保存原有各点的坐标 n=length(old)-1; %计算需要改变图形的线段数目 for m=0:n-1 %计算各新线段两端点的坐标(5点) diff=(old(m+2)-old(m+1))/3; %取新线段长度向量
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
2019/12/4
黄建华制作
19
4.6.2由迭代函数系生成的分形图形
vv=v(i); if vv<0.5
% 取概率 % 概率p=0.5
2019/12/4
黄建华制作
15
4.6.2由迭代函数系生成的分形图形
分形树
w
a
b
c
d
e
f
p
1
0
0
0
0.5
0
0
0.05
2
0.42 -0.42 0.42 0.42
0
3
0.42 0.42 -0.42 0.42
0
0.2
0.4
0.2
0.4
4
0.1
0
0
0.1
0
0.2 0.15
程序:clear;clf;n=100000;%设置迭代次数
x(i)=0.5*(x(i-1)-y(i-1));
y(i)=0.5*(x(i-1)+ y(i-1));
else
x(i)=0.5*(x(i-1)+y(i-1))+0.5;
y(i)=-0.5*(x(i-1)- y(i-1))+0.5;
end
end
plot(x(1:n),y(1:n),'.m','markersize',1) ;axis off
2019/12/4
黄建华制作
13
4.6.2由迭代函数系生成的分形图形
vv=v(i);
% 取概率
if vv<0.333 % 概率p=0.333
x(i)=0.5*x(i-1);
y(i)=0.5*y(i-1);
elseif vv<0.666 % 概率p=0.333
x(i)=0.5*x(i-1)+0.25;
% 取概率
if vv<0.05 % 概率p=0.05
y(i)=0.5*y(i-1);
elseif vv<0.45 % 概率p=0.4
x(i)=0.42*x(i-1)-0.42*y(i-1);
y(i)=0.2+0.42*(x(i-1)+y(i-1));
elseif vv<0.85
x(i)=0.42*(x(i-1)+y(i-1));
值。
2019/12/4
黄建华制作
8
4.6.2由迭代函数系生成的分形图形
步骤:
(1)设定迭代的可视区域为: V={(x,y)|xmin≤x≤xmax,ymin≤y≤ymax}再按分辨率的大小V分成 a*b的网格,网格点为(xi,yi),其中: xi=xmin+(xmax-xmin)*i/a,i=0,1,2,...,a yi=ymin+(ymax-ymin)*i/b,i=0,1,2,...,b 设迭代N次; (2)设定初始点(x0,y0),不妨取(0,0); (3)在数列{1,2,...,n}中,以概率pi选取变换wi; (4)将变换作用到点(xk,yk) 上,得到新点(xk+1,yk+1) ; (5)画出点(xk,yk) ,直到循环结束。
elseif vv<0.93 % 概率p=0.07
x(i)=0.2*x(i-1)-0.26*y(i-1);
y(i)=1.6+0.23*x(i-1)+0.22*y(i-1);
else
x(i)=-0.15*x(i-1)+0.28*y(i-1);
y(i)=0.26*x(i-1)+0.24*y(i-1)+0.44;
v=rand(n,1); %随机数用于每一步做概率系数
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
2019/12/4
黄建华制作
16
4.6.2由迭代函数系生成的分形图形
vv=v(i);
4.6.1由生成元生成的分形图形
由生成元产生的分形是一种规则分形,是数学家按照一定 规则构造出来的,相当于物理学种的模型。构造特点:最终图 形是按照一定规则R对初始F0不断修改得到的。 cantor三分集
生成方法:选取一条直线段F0,将该线段三等分,去掉中 间一段,剩下两段。将剩下的两段分别再三等分,各去掉中间 的一段,剩下四段。继续这样的操作,直至无穷,则可得到一 个离散的点集,称为cantor三分集。
0.3
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
uuu=[]; %建立一空数组,保存点坐标
n=length(u)/2; %计算需要改变图形的线段数目
for m=0:n-1 %计算各新端点的坐标
p1=(u(2*m+1,:)*2+u(2*m+2,:))/3 ; %a点
p2=(u(2*m+1,:) +u(2*m+2,:)*2)/3; %b点
pp=[(u(2*m+2,1)-u(2*m+1,1)); (u(2*m+2,2)-u(2*m+1,2))]/3;
3
0.5
0
c
d
e
f
p
0
0.5
0
0 0.333
0
0.5 0.25 0.433 0.333
0
0.5
0.5
0 0.333
程序:clear;clf;n=100000;%设置迭代次数
v=rand(n,1); %随机数用于每一步做概率系数
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
new(4*m+1)=old(m+1); %新线段第一点坐标 new(4*m+2)=old(m+1)+diff; %新线段第二点坐标 new(4*m+3)= new(4*m+2)+diff*((1+sqrt(3)*i)/2); %第三点 new(4*m+4)=old(m+1)+2*diff; %第四点
1 0.9
e
d
1 0.9
0.8
0.8
0.7
b
0.7
0.6
c
0.6
0.5
0.5
0.4
0.4
0.3
a
0.3
0.2
0.2
0.1 0 -0.5 -0.4 -0.3 -0.2 -0.1
o
0
0.1
0.2
0.3
0.4
0.5
0.1
0
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
2019/12/4
2019/12/4
黄建华制作
20
4.6.2由迭代函数系生成的分形图形
%按顺序排列新线段两端点的坐标 uuu=[uuu;uu]; end u=[uuu]; plot(u(:,1),u(:,2)) ; axis([-0.5,0.5,0,1] ); end
2019/12/4
黄建华制作
6
4.6.1由生成元生成的分形图形
2019/12/4
黄建华制作
7
4.6.2由迭代函数系生成的分形图形
程序:clear;clf;n=100000;%设置迭代次数
v=rand(n,1); %随机数用于每一步做概率系数
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
2019/12/4
黄建华制作
于任意选取的初始值z0=(x0,y0),以概率pi选取变换wi做迭代:
zk+1=(xk+1,yk+1)=wi(xk,yk),k=0,1,2,...
则点列{zk}收敛的极限图形称为一个IFS吸引子,即分形。
利用IFS迭代可以生成美丽的分形,而且IFS迭代的程序具
有通用性,要想得到不同的分形只需改变变换种的系数和概率
2019/12/4Βιβλιοθήκη Baidu
黄建华制作
9
4.6.2由迭代函数系生成的分形图形
barnsley羊齿叶
w
a
b
c
d
e
f
p
1
0
0
0
0.16
0
0
0.01
2
0.85 0.04 -0.04 0.85
0
1.6 0.85
3
0.2 -0.26 0.23 0.22
0
1.6 0.07
4
-0.15 0.28 0.26 0.44
0
0.44 0.07
黄建华制作
4
4.6.1由生成元生成的分形图形
程序:clear;clf;th=pi/6;%设置角度
u=[0,0;0,1]; %初始线段坐标
rov1=[cos(th),-sin(th);sin(th),cos(th)] ;
rov2=rov1'; %坐标变换矩阵
kmax=15; %循环次数
for k=1:kmax
plot(new) ; axis equal; end
2019/12/4
黄建华制作
2
4.6.1由生成元生成的分形图形
2019/12/4
黄建华制作
3
4.6.1由生成元生成的分形图形
分形树
生成方法:选取一条直线段F0,将该线段三等分,在等分 点上各画一条长度为原线段长度三分之一的线段,并与原线段 成直固至定无夹穷角,,则得最到后图得形到的F1。极再限将图F象1的,每称一为段分都形按树上。述方法修改,
y(i)=0.42*(y(i-1)-x(i-1))+0.2;
else
x(i)=0.1*x(i-1);
y(i)=0.2+0.1*y(i-1);
end
2019/12/4
黄建华制作
17
4.6.2由迭代函数系生成的分形图形
end
plot(x(1:n),y(1:n),'.m','markersize',1) ;axis off
10
4.6.2由迭代函数系生成的分形图形
vv=v(i);
% 取概率
if vv<0.01 % 概率p=0.01
y(i)=0.16*y(i-1);
elseif vv<0.86 % 概率p=0.85
x(i)=0.85*x(i-1)+0.04*y(i-1);
y(i)=1.6-0.04*x(i-1)+0.85*y(i-1);
由迭代函数系(IFS)产生分形的一般算法是:给定平面上的 一组仿射变换wi:
wi
x y
ai ci
bi di
x y
ei fi
,
i
1,2,...,n
以及相应的一组概率:p1,p2,...,pn(p1+p2+...+pn=1,pi>0) 。 对
程序略。
2019/12/4
黄建华制作
0
4.6.1由生成元生成的分形图形
koch曲线
生成方法:选取一条直线段F0,将该线段三等分,并将中 间一段用以该线段为边的等边三角形的另外两条边代替,得到 图形F1。再将F1的每一段都按上述方法修改,直至无穷,则最 后得到的极限曲线,称为koch曲线。
0.5
0.4
y(i)=0.433+0.5*y(i-1);
else
x(i)=0.5*x(i-1)+0.5;
y(i)=0.5*y(i-1);
end
end
plot(x(1:n),y(1:n),'.b','markersize',1) ;axis off
2019/12/4
黄建华制作
14
4.6.2由迭代函数系生成的分形图形
%计算新线段向量
2019/12/4
黄建华制作
5
4.6.1由生成元生成的分形图形
lp=rov1*pp; %第一条树枝偏转向量 lp=p1+lp'; %第一条树枝端点C坐标 rp=rov2*pp; %第二条树枝偏转向量 rp=p2+rp'; %第二条树枝端点D坐标 uu=[u(2*m+1,:);p1;p1;lp;p1;p2;p2;rp;p2;u(2*m+2,:)];
2019/12/4
黄建华制作
18
4.6.2由迭代函数系生成的分形图形
levy曲线
w
a
b
c
d
e
f
p
1
0.5
-0.5 0.5
0.5
0
0
0.5
2
0.5
0.5 -0.5
0.5
0.5
0.5
0.5
程序:clear;clf;n=100000;%设置迭代次数
v=rand(n,1); %随机数用于每一步做概率系数
end
2019/12/4
黄建华制作
11
4.6.2由迭代函数系生成的分形图形
end
plot(x(1:n),y(1:n),'.r','markersize',1) ;axis off
2019/12/4
黄建华制作
12
4.6.2由迭代函数系生成的分形图形
sierpinski垫
w
a
b
1
0.5
0
2
0.5
0
1
2019/12/4
黄建华制作
1
4.6.1由生成元生成的分形图形
程序:clear;clf;new=[0,1];%定义初始线段的两端 kmax=20; %迭代次数
for k=1:kmax old=new; %保存原有各点的坐标 n=length(old)-1; %计算需要改变图形的线段数目 for m=0:n-1 %计算各新线段两端点的坐标(5点) diff=(old(m+2)-old(m+1))/3; %取新线段长度向量
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
2019/12/4
黄建华制作
19
4.6.2由迭代函数系生成的分形图形
vv=v(i); if vv<0.5
% 取概率 % 概率p=0.5
2019/12/4
黄建华制作
15
4.6.2由迭代函数系生成的分形图形
分形树
w
a
b
c
d
e
f
p
1
0
0
0
0.5
0
0
0.05
2
0.42 -0.42 0.42 0.42
0
3
0.42 0.42 -0.42 0.42
0
0.2
0.4
0.2
0.4
4
0.1
0
0
0.1
0
0.2 0.15
程序:clear;clf;n=100000;%设置迭代次数
x(i)=0.5*(x(i-1)-y(i-1));
y(i)=0.5*(x(i-1)+ y(i-1));
else
x(i)=0.5*(x(i-1)+y(i-1))+0.5;
y(i)=-0.5*(x(i-1)- y(i-1))+0.5;
end
end
plot(x(1:n),y(1:n),'.m','markersize',1) ;axis off
2019/12/4
黄建华制作
13
4.6.2由迭代函数系生成的分形图形
vv=v(i);
% 取概率
if vv<0.333 % 概率p=0.333
x(i)=0.5*x(i-1);
y(i)=0.5*y(i-1);
elseif vv<0.666 % 概率p=0.333
x(i)=0.5*x(i-1)+0.25;
% 取概率
if vv<0.05 % 概率p=0.05
y(i)=0.5*y(i-1);
elseif vv<0.45 % 概率p=0.4
x(i)=0.42*x(i-1)-0.42*y(i-1);
y(i)=0.2+0.42*(x(i-1)+y(i-1));
elseif vv<0.85
x(i)=0.42*(x(i-1)+y(i-1));
值。
2019/12/4
黄建华制作
8
4.6.2由迭代函数系生成的分形图形
步骤:
(1)设定迭代的可视区域为: V={(x,y)|xmin≤x≤xmax,ymin≤y≤ymax}再按分辨率的大小V分成 a*b的网格,网格点为(xi,yi),其中: xi=xmin+(xmax-xmin)*i/a,i=0,1,2,...,a yi=ymin+(ymax-ymin)*i/b,i=0,1,2,...,b 设迭代N次; (2)设定初始点(x0,y0),不妨取(0,0); (3)在数列{1,2,...,n}中,以概率pi选取变换wi; (4)将变换作用到点(xk,yk) 上,得到新点(xk+1,yk+1) ; (5)画出点(xk,yk) ,直到循环结束。
elseif vv<0.93 % 概率p=0.07
x(i)=0.2*x(i-1)-0.26*y(i-1);
y(i)=1.6+0.23*x(i-1)+0.22*y(i-1);
else
x(i)=-0.15*x(i-1)+0.28*y(i-1);
y(i)=0.26*x(i-1)+0.24*y(i-1)+0.44;
v=rand(n,1); %随机数用于每一步做概率系数
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
2019/12/4
黄建华制作
16
4.6.2由迭代函数系生成的分形图形
vv=v(i);
4.6.1由生成元生成的分形图形
由生成元产生的分形是一种规则分形,是数学家按照一定 规则构造出来的,相当于物理学种的模型。构造特点:最终图 形是按照一定规则R对初始F0不断修改得到的。 cantor三分集
生成方法:选取一条直线段F0,将该线段三等分,去掉中 间一段,剩下两段。将剩下的两段分别再三等分,各去掉中间 的一段,剩下四段。继续这样的操作,直至无穷,则可得到一 个离散的点集,称为cantor三分集。
0.3
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
uuu=[]; %建立一空数组,保存点坐标
n=length(u)/2; %计算需要改变图形的线段数目
for m=0:n-1 %计算各新端点的坐标
p1=(u(2*m+1,:)*2+u(2*m+2,:))/3 ; %a点
p2=(u(2*m+1,:) +u(2*m+2,:)*2)/3; %b点
pp=[(u(2*m+2,1)-u(2*m+1,1)); (u(2*m+2,2)-u(2*m+1,2))]/3;
3
0.5
0
c
d
e
f
p
0
0.5
0
0 0.333
0
0.5 0.25 0.433 0.333
0
0.5
0.5
0 0.333
程序:clear;clf;n=100000;%设置迭代次数
v=rand(n,1); %随机数用于每一步做概率系数
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
new(4*m+1)=old(m+1); %新线段第一点坐标 new(4*m+2)=old(m+1)+diff; %新线段第二点坐标 new(4*m+3)= new(4*m+2)+diff*((1+sqrt(3)*i)/2); %第三点 new(4*m+4)=old(m+1)+2*diff; %第四点
1 0.9
e
d
1 0.9
0.8
0.8
0.7
b
0.7
0.6
c
0.6
0.5
0.5
0.4
0.4
0.3
a
0.3
0.2
0.2
0.1 0 -0.5 -0.4 -0.3 -0.2 -0.1
o
0
0.1
0.2
0.3
0.4
0.5
0.1
0
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
2019/12/4
2019/12/4
黄建华制作
20
4.6.2由迭代函数系生成的分形图形
%按顺序排列新线段两端点的坐标 uuu=[uuu;uu]; end u=[uuu]; plot(u(:,1),u(:,2)) ; axis([-0.5,0.5,0,1] ); end
2019/12/4
黄建华制作
6
4.6.1由生成元生成的分形图形
2019/12/4
黄建华制作
7
4.6.2由迭代函数系生成的分形图形
程序:clear;clf;n=100000;%设置迭代次数
v=rand(n,1); %随机数用于每一步做概率系数
x0=0;y0=0 ; x=[x0;zeros(n-1,1)]; y=[y0;zeros(n-1,1)]; %可视区域点数 for i=2:n % 按规则计算下一点坐标
2019/12/4
黄建华制作
于任意选取的初始值z0=(x0,y0),以概率pi选取变换wi做迭代:
zk+1=(xk+1,yk+1)=wi(xk,yk),k=0,1,2,...
则点列{zk}收敛的极限图形称为一个IFS吸引子,即分形。
利用IFS迭代可以生成美丽的分形,而且IFS迭代的程序具
有通用性,要想得到不同的分形只需改变变换种的系数和概率
2019/12/4Βιβλιοθήκη Baidu
黄建华制作
9
4.6.2由迭代函数系生成的分形图形
barnsley羊齿叶
w
a
b
c
d
e
f
p
1
0
0
0
0.16
0
0
0.01
2
0.85 0.04 -0.04 0.85
0
1.6 0.85
3
0.2 -0.26 0.23 0.22
0
1.6 0.07
4
-0.15 0.28 0.26 0.44
0
0.44 0.07
黄建华制作
4
4.6.1由生成元生成的分形图形
程序:clear;clf;th=pi/6;%设置角度
u=[0,0;0,1]; %初始线段坐标
rov1=[cos(th),-sin(th);sin(th),cos(th)] ;
rov2=rov1'; %坐标变换矩阵
kmax=15; %循环次数
for k=1:kmax