%********************************************************************/
%* 科学计算:分形几何_科赫雪花 */
%* 挑灯看剑-shuchangs@126.com 2010-5 */
%* 云歌国际(Cloud Singers International) www.cocoral.com */
%********************************************************************/
function Koch
k=2; %Koch曲线的迭代次数
p=[0 0;10 0]; %存放结点坐标,每行一个点,初始值为两节点的坐标
n=1; %存放线段的数量,初始值为1
A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)]; %计算新的节点,向上生长
%A=[cos(pi/3) sin(pi/3);-sin(pi/3) cos(pi/3)]; %计算新的节点,向下生长
for s=1:k %计算所有的节点坐标
j=0;
for i=1:n
q1=p(i,:);
q2=p(i+1,:);
d=(q2-q1)/3;
j=j+1;r(j,:)=q1;
j=j+1;r(j,:)=q1+d;
j=j+1;r(j,:)=q1+d+d*A';
j=j+1;r(j,:)=q1+2*d;
end
n=4*n;
clear p
p=[r;q2];
end
plot(p(:,1),p(:,2));
disp('结点坐标');disp(p);
axis equal
end
%定义选择1或-1函数
function rtnV=coinTest() %抛币试验函数,返回值为1(正)或-1(反)
x=rand;
if x<0.5
rtnV=-1;
elseif x>0.5
rtnV=1;
else
rtnV=coinTest();
end
end
运行结果测试如下: