- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一1.1水手、猴子和椰子问题:五个水手带了一只猴子來到南太平洋的一个荒岛上,发现那里有一大堆椰子。 由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子, 他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰 多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴 子,试问原先共有几只椰子?
试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。
解:问题分析:假设第n个人分椰子前,有An个椰子,即第ml醒来面对的椰子数为An-1,第n个水手醒来后,把 椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了则易得:
—*5 + l = An-l (1)
4
设最后一堆为a个,则第五个人分完后余下A⑹=5紬+1;由(1)式可得出A⑴,A(2)???A⑸;
由于椰子数目为整数,有 沪1开始,建立循环,可以由matlab 最小的a=1023 ,五次数量变化如下:
1
1 1 5 2 2 5 3 3 5 4 4 5 5 5 5 6
break;end a=a+1;end
break;
end a=a+1;end
1023
? A(1)
ans
15621?plot(A/k,)
Matlab窗口输入如下:
? a=1;
A=zeros(1,6);
while a0,
A(6)=5*a+1;
if A(6)?=fix(A(6)), a=a+1; conti nue;
end
i=6;
while i=2, A(i-1)=A(i)*5/4+1; if A(i-1)-=fix(A(i-1)), break;
end
i=i-1;
end
if (A⑴~=0)(A(1)==fix(A(1))),
1.2当料=0,l,2,…,100时,选择稳定的算法计算积分
解:用蒙特卡罗方法求解该问题,在(0, 1)上随机选取一定数董的点,以落在积分区域内的频率近似所求积 分,matlab程序如下:
intj.ui
if A(2)=f(A(1))
if A(2)=f(A(1))r=r+1;end end a=r/N;
r=0;
for i=1:N,
A=rand(1,2);
1.3绘制静态和动态的Koch分形曲线
问题描述:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的另两条边代替,形成具有5 个结点的新的图形;在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的另两条边代 替,再次形成新的图形,这时,图形中共有17个结点。这种迭代继续进行下去可以形成Koch分形曲线。在迭 代过程中,图形中的结点将越来越多,而曲线最终显示细节的多少取决于所进行的迭代次数和显示系统的分辨率。 Koch分形曲线的绘制与算法设计和计算机实现相关。
解:A?绘制静态Koch
解:A?绘制静态Koch分形曲线,代码如下:
A=[cos(pi/6) -sin(pi/6);sin(pi/6) cos(pi/6)];
p=[0 10;0 0;];%第一行是横坐标第二行是纵坐标 n=2;
for k=1:6,
m=1;
for i=1:n-1,
d=p(:,i+1)-p(:,i);
p1 (:,m+1 )=p(:,i)+d/3;
p1 (:,m+3)=p(:,i)+d*2/3;
p1 (:,m+2)=p(:,i)+A*d/sqrt(3);p1 (:,m:4:m+4)=p(:,i:i+1);
matalb得到图形如下:
m=m+5;
end
n=length(pl);
p=p1;
clear p1; end
X=p(1,:);y=p(2,:);
plot(xyk); axis([0 100 10]);
I P=[0 10;0 0;];
I P=[0 10;0 0;];
B.动态的Koch分形曲线,在静态曲线的基础上得到动态分形曲线的代码和截图如下:
A=[cos(pi/6) -sin(pi/6);sin(pi/6) cos(pi/6)];n=2;
for k=1:6, m=1;
end n=length(p1);p=p1;clear p1;x=p(1,:);y=P(2,:); plot(x,y,k);axis([0 100 10]); pause(2);endfor i=1:n-1, d=p(:,i+1)-p(:,i); p1 (:,m+1 )=p(:,i)+d/3; p1 (:,m+3)=p(:,i)+d*2/3; p1 (:,
end n=length(p1);
p=p1;
clear p1;
x=p(1,:);
y=P(2,:); plot(x,y,k);
axis([0 100 10])
文档评论(0)