求几个mathematica制作的简单分形的公式

2个回答

  • Koch曲线程序koch.m

    function koch(a1,b1,a2,b2,n)

    %koch(0,0,9,0,3)

    %a1,b1,a2,b2为初始线段两端点坐标,n为迭代次数

    a1=0;b1=0;a2=9;b2=0;n=3;

    %第i-1次迭代时由各条线段产生的新四条线段的五点横、纵坐标存储在数组A、B中

    [A,B]=sub_koch1(a1,b1,a2,b2);

    for i=1:n

    for j=1:length(A)/5;

    w=sub_koch2(A(1+5*(j-1):5*j),B(1+5*(j-1):5*j));

    for k=1:4

    [AA(5*4*(j-1)+5*(k-1)+1:5*4*(j-1)+5*(k-1)+5),BB(5*4*(j-1)+5*(k-1)+1:5*4*(j-1)+5*(k-1)+5)]=sub_koch1(w(k,1),w(k,2),w(k,3),w(k,4));

    end

    end

    A=AA;

    B=BB;

    end

    plot(A,B)

    hold on

    axis equal

    %由以(ax,ay),(bx,by)为端点的线段生成新的中间三点坐标并把这五点横、纵坐标依次分别存%储在数组A,B中

    function [A,B]=sub_koch1(ax,ay,bx,by)

    cx=ax+(bx-ax)/3;

    cy=ay+(by-ay)/3;

    ex=bx-(bx-ax)/3;

    ey=by-(by-ay)/3;

    L=sqrt((ex-cx).^2+(ey-cy).^2);

    alpha=atan((ey-cy)./(ex-cx));

    if (ex-cx)