数值分析课程设计实验报告基本格式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

水手、猴子和椰子问题
实验题目:有五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。

由于旅途的颠簸,大家都很疲倦,很快就入睡了。

第一个水手醒来后,把椰子平分成五堆,并将多余的一个椰子给了猴子,他私藏了一堆后便又去睡了。

第二、第三、第四、第五个水手也陆续起来,和第个水手一样,把椰子平分成五堆后,将恰好多的一个也给猴子,并私藏了一堆,再去入睡。

天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一个再给猴子。

试问原先共有几个椰子?
试分析椰子数目变化的规律,利用逆向递推的方法求解这一问题。

(必要时可简写为实验一、1.2,教材P13)
一、 实验目的
掌握利用逆向递推求解问题的方法,熟悉matlab 的循环操作。

二、 实验原理简述
求解这一问题可以用递推算法。

首先分析椰子数目的变化规律,设最初的椰子数为p 0,即第一个水手所处理之前的椰子数,用p 1、p 2、p 3、p4、p 5 分别表示五个水手对椰子动了手脚以后剩余的椰子数目,则根据问题有
)
4,3,2,1,0(,)1(541=-=+k p p k k
再用x 表示最后每个水手平分得到的椰子数,于是有
)1(515-=
p x
所以 p5 = 5x +1
利用逆向递推的方法,有
)
0,1,2,3,4(,1451=+=+k p p k k
有了逆向递推关系式,求解这一问题似乎很简单,但由于椰子数为一正整数,用任意的x 作为初值递推出的p0数据不一定是合适的。

这里用 for 循环语句结合 break 语句来寻找合适的 x 和 p0 ,对任意的 x 递推计算出 p0 ,当计算结果为正整数时,结果正确,否则选取另外的 x 再次重新递推计算,直到计算出的结果 p0 为正整数为止。

三、 实验结果
运行这段程序后,屏幕出现要求从键盘输入 x 数据的信息input n ,输入1200后,MATLAB 计算出合适的 x 和 p0 的值为:
1023 15621
四、 实验分析
由于:
44545)45()45()45()45(451451)1)1)1)1)15(4
5(45(45(45(4514556
5654325610-+=++++++=++++++=+=x x x p p
所以
4)1(4556
0-+=x p
要使得最初的椰子数p0为整数,必须取 (x +1) 为 4 5( =1024)的倍数,一种简单的处理可取 x = 1023。

五、 实验程序(含必要注释)
程序如下
%%
%% FIX Round towards zero.
%% FIX(X) rounds the elements of X to the nearest integers
%% towards zero.
n=input('input n:'); %%输入必要的n 值
for x=1:n %%外循环
p=5*x+1;
for k=1:5 %%内循环
p=5*p/4+1;
end
if p== fix(p) %%判断p 是否为整数
break
end
end
disp([x,p]) %%显示结果。

相关文档
最新文档