打字猴:1.701006472e+09
1701006472 我和数学有约:趣味数学及算法解析 [:1701004209]
1701006473 5.1.2 素描树
1701006474
1701006475 为了较好模拟自然界的树模型,MATLAB软件提供了强大的绘图功能,用户只需要合理地掌握和运行绘图功能,即能运行输出用户想要的图像。编写程序输出素材大树的图像如下:
1701006476
1701006477     clc,clear,close all       %清屏和清除变量    warning off               %消除警告    M=[-0.64,0,0,0.5,0.86,0.25;…        -0.04,-0.47,0.07,-0.02,0.49,0.51;…        0.2,0.33,-0.49,0.43,0.44,0.25;…        0.46,-0.25,0.41,0.36,0.25,0.57;…        -0.06,0.45,-0.07,-0.11,0.59,0.1];   %生成系数矩阵M    p=[0.06,0.22,0.23,0.24,0.25];            %生成几率向量    IFS_draw(M,p);                              %调用函数绘图    axis image;                                  %设置坐标轴属性    set(gcf,‘Color’,‘w’);                      %设置背景色为白色
1701006478
1701006479 相应的素描绘图程序如下:
1701006480
1701006481     function IFS_draw(M,p)    %迭代函数法生成分形图形的通用函数    %M是矩阵系数    %p是对应的几率    %比如M的取值是:    %I    a(i)      b(i)      c(i)       d(i)     e(i)      f(i)    %1    0.3330        0        0    0.3330        0        0    %2    0.1670  -0.2890   0.2890    0.1670   0.3330        0    %3    0.1670   0.2890  -0.2890    0.1670   0.5000   0.2890    %4    0.3330        0        0    0.3330   0.6670        0    %p的取值是:    %      0.2500    0.2500    0.2500    0.2500    N=30000;                          %迭代次数    for k=1:length(p);                %生成映射矩阵a1,a2,…        eval([‘a’,num2str(k),’=reshape(M(‘,num2str(k),’,:),2,3);’]);    end    xy=zeros(2,N);                   %设置迭代矩阵初值    pp=meshgrid(p);                   %生成网格矩阵    pp=tril(pp);                      %取上三角矩阵    pp=sum(pp,2);                    %对行向量求和,从而得到几率的累加结果    for k=1:N-1;        a=rand-pp;                    %计算随机数和几率向量的差值        d=find(a<=0);                %找出满足几率条件的位置        xy(:,k+1)=eval([‘a’,num2str(d(1)),’(:,1:2)’])*xy(:,k)+…              eval([‘a’,num2str(d(1)),’(:,3)’]);%计算迭代点和映射矩阵的乘积    end    P=complex(xy(1,:),xy(2,:));    %生成复数点    plot(P,‘k.’,‘markersize’,2);   %画图    axis equal;                       %设置坐标轴属性
1701006482
1701006483 运行程序输出图形如图5-3所示。
1701006484
1701006485
1701006486
1701006487
1701006488 图5-3 素描树模拟
1701006489
1701006490 同样修改参数即可得到不同风格的素描树,程序如下:
1701006491
1701006492     clc,clear,close all                           %清屏和清除变量    warning off                                   %消除警告    M=[0.06,0,0,0.6,0,0;…            0.04,0,0,-0.5,0,1;…            0.46,-0.34,0.32,0.38,0,0.6;…            0.48,0.17,-0.15,0.42,0,1;…            0.43,-0.26,0.27,0.48,0,1;…            0.42,0.35,-0.36,0.31,0,0.8];      %生成系数矩阵M    p=[0.1,0.1,0.1,0.23,0.23,0.24];           %生成几率向量    IFS_draw(M,p);                                %调用函数绘图    axis image;                                    %设置坐标轴属性    set(gcf,‘Color’,‘w’);                        %设置背景色为白色
1701006493
1701006494 运行程序输出图形如图5-4所示。
1701006495
1701006496
1701006497
1701006498
1701006499 图5-4 素描大树
1701006500
1701006501 我和数学有约:趣味数学及算法解析 [:1701004210]
1701006502 5.1.3 Koch(科赫)曲线
1701006503
1701006504 Koch曲线是一个数学曲线,同时也是早期被描述的一种分形曲线。它由瑞典数学家Helge von Koch在1904年发表的一篇题为“从初等几何构造的一条没有切线的连续曲线”的论文中提出。
1701006505
1701006506 有一种Koch曲线是像雪花一样,被称为Koch雪花(或Koch星),它是由三条Koch曲线围成的等边三角形。
1701006507
1701006508 设想从一个线段开始,根据下列规则构造一个Koch曲线:
1701006509
1701006510 (1)三等分一条线段;
1701006511
1701006512 (2)用一个等边三角形替代第一步划分三等分的中间部分;
1701006513
1701006514 (3)在每一条直线上,重复第二步。
1701006515
1701006516
1701006517
1701006518 Koch曲线是以上步骤地无限重复的极限结果。Koch曲线的长度为无穷大,因为以上的变换都是一条线段变四条线段,每一条线段的长度是上一级的1/3,因此操作n步的总长度是:若,则总长度趋于无穷。
1701006519
1701006520
1701006521
[ 上一页 ]  [ :1.701006472e+09 ]  [ 下一页 ]