打字猴:1.70100645e+09
1701006450 【分析】
1701006451
1701006452 计算机提供给我们创新与创意的技术平台,为此也使得我们自身变得更加强大。采用计算机模拟分形学,有很多不同的图案,具体的分形图如分形树和科赫曲线等。
1701006453
1701006454 我和数学有约:趣味数学及算法解析 [:1701004208]
1701006455 5.1.1 分形树
1701006456
1701006457 分形树类似于无限繁殖,从一个节点出来,开始一分为二,然后重复此操作,一颗类似大树模样的图形就展现在我们面前。
1701006458
1701006459 采用计算机进行分形树模拟,MATLAB程序如下:
1701006460
1701006461     clc,clear,close all               %清屏和清除变量    warning off                       %消除警告    h=10;d=0.6;th=pi/4;n=9;           %参数初始化    A=zeros(2,2^(n+1)-2);A(:,2)=[0;h];    C=[cos(th) -sin(th);sin(th) cos(th)];D=inv(C);    for i=2:n           B(:,2^(i-1)-1:2^i-2)=A(:,2^(i-1)-1:2^i-2);                 %矩阵运算,每一个点分出两个枝           A(:,2^i-1:2^i+2^(i-1)-2)=d*C*B(:,2^(i-1)-1:2^i-2)+[0;h]*ones(1,       2^i-2^(i-1));           A(:,2^i+2^(i-1)-1:2^(i+1)-2)=d*D*B(:,2^(i-1)-1:2^i-2)+[0;h]*        ones(1,2^i-2^(i-1));    end    for i=1:2^n-1           L=line(A(1,[2*i-1 2*i]),A(2,[2*i-1 2*i]));set(L,‘LineWidth’,       2);          %绘制树干图    end
1701006462
1701006463 运行程序输出图形如图5-2所示。
1701006464
1701006465
1701006466
1701006467
1701006468 图5-2 分形树
1701006469
1701006470 从整体上看,分形物体是处处不规则的。如海岸线和山川,从远距离观察,其形状是极不规则的。然而在不同尺度上,规则性又是相同的。因为从近距离观察海岸线和山川形状,其局部形状又与整体形态相似,它们从整体到局部都是自相似的。
1701006471
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 素描大树
[ 上一页 ]  [ :1.70100645e+09 ]  [ 下一页 ]