- 13
- 0
- 约1.4万字
- 约 20页
- 2019-03-17 发布于江苏
- 举报
数
值 课
分 程
析 设
计
专业班级:信息与计算科学09-1班
姓 名:陈育伟
学 号
实验一
1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?
试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题(15621)。
【问题分析】
首先分析问题的解答方法,应该采用逆推的方式解决问题。每个水手起来的椰子数量等于前一个水手醒来时椰子数量少一的五分之四。最后每个水手得到的椰子数量会等于最后一堆椰子少一的五分之一。根据这个逆推,由于椰子的数量是整数,所以利用循环语句知道整数的解答为止。
【程序实现】
n=input(’input n:’);
for x=1:n
p=5*x+1;
for k=1:5
p=5*p/4+1;
end
if p= =fix(p),break,end
end
disp([x,p])
运行这段程序后,屏幕出现要求从键盘输入 x 数据的信息input n,输入1200后,MATLAB计算出合适的 x 和 p0 的值为
1023 15621
【结果分析】
要使得最初的椰子数p0为整数,必须取 (x +1) 为 4 5( =1024)的倍数,一种简单的处理可取 x = 1023。
1.2设,
(1)从尽可能精确的近似值出发,利用递推公式:
计算机从到的近似值;
(2)从较粗糙的估计值出发,用递推公式:
计算从到的近似值;
(3)分析所得结果的可靠性以及出现这种现象的原因
【算法分析】
syms x n;
int(1/(x+5),0,1)
ans
log(2)+log(3)-log(5)
eval(ans)
ans =
0.1823
Now we use to compute In where n rang from 1 to 20.
s=0.1823
for n=1:20
s=-5*s+1/n;
disp(s)
end
s =
0.1823
0.0885
0.0575
0.0458
0.0208
0.0958
-0.3125
1.7054
-8.4018
42.1200
-210.5002
1.0526e+003
-5.2629e+003
2.6314e+004
-1.3157e+005
6.5786e+005
-3.2893e+006
1.6447e+007
-8.2233e+007
4.1116e+008
-2.0558e+009
(2)首先计算I(30)的近似值
syms x n;
int(x^30/(x+5),0,1)
//所得结果为
ans =
931322574615478515625*log(2)+931322574615478515625*log(3)-931322574615478515625*log(5)-79095966183067699902965545527073/465817912560
eval (ans)
0
//即I(30)≈0
s=0;
for n=30:-1:2
s=-s/5+1/5*n;
disp(s)
end
s =
0
6
4.6000
4.6800
4.4640
4.3072
4.1386
3.9723
3.8055
3.6389
3.4722
3.3056
3.1389
2.9722
2.8056
2.6389
2.4722
2.3056
2.1389
1.9722
1.8056
1.6389
1.4722
1.3056
1.1389
0.9722
0.8056
0.6389
0.4722
0.3056
【结果分析】
第一小题当中首先算出较为精确的I0,之后经过代入的方法计算出 I(20),
原创力文档

文档评论(0)