数值分析上机实习1
例1被古希腊人称为几何三大难
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
之一的“立方倍积”问题可叙述为:求作一个立方体,使其体积为已知立方体的二倍。不妨设已知立方体体积为 V0=1,要作的立方体体积为V=2,则所求立方体高度应该为
,由于h是无理数,既无法
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示为分数形式也不能表示为有限位实数形式。
用数值试验可以显示出“立方倍积”问题计算过程中的误差。用MATLAB的长型数据格式保留h的前n位(n=2,……,9),舍去第n位以后的数,并计算V1的近似值,将试验结果列表如下
位数
h近似值
V近似值
2
1.2
1.728
3
1.25
1.953125
4
1.259
1.995616979
5
1.2599
1.999899757799
6
1.25992
1.99999500019149
7
1.259921
1.99999976239049
8
1.259921
1.99999976239049
9
1.25992104
1.99999995287860
表中第二列数据所形成的数列以单调增加的方式逼近准确值,即准确值介于1.25992104到1.25992105之间。
MATLAB程序如下(文件名:ex1.m)
y=2^(1/3);b=1;d=1;
for k=1:8
b=b*10;d=d/10;
x=d*fix(b*y);
v(k)=x^3;
h(k)=x;
end
format long
[h',v']
例2利用递推式计算定积分
( n = 0,1,…,20 )的值。
解:当 x∈[0,1]时,成立不等式 1≤ ex ≤e,以及xn+1≤xn,故In具有如下性质
(1)
;(2)In+1≤ In;(3)In=1 – n In – 1
性质(1)和(2)说明数列{ In }是单调下降的有界(既有下界也有上界)数列。由性质(3)可得到顺向递推和逆向递推两种不同的算法。
利用的I0 的表达式直接积分,可得初值I0 的值I0 = 1 – e-1,由性质(3)递推有
算法1
( n = 1,…,20 )
计算并输出In (n =0,1,…,20)20个积分值的近似值如下表。
n
Sn
n
Sn
1
0.3679
11
0.0774
2
0.2642
12
0.0718
3
0.2073
13
0.0669
4
0.1709
14
0.0627
5
0.1455
15
0.0590
6
0.1268
16
0.0555
7
0.1124
17
0.0572
8
0.1009
18
-0.0295
9
0.0916
19
1.5596
10
0.0839
20
-30.1924
表中第18和第20个数据分别为负值 – 0.0295和–30.1924,这与性质(1)矛盾,显然与定积分值相差较大。
利用性质(1)得I30 的近似值I30≈1/30,再由性质(3)得逆向递推,有
算法2
( n = 30,29,…,2 )
计算并输出Sn (n =0,1,…,20)20积分值的近似值如下表所示
n
Tn
n
Tn
1
0.3679
11
0.0774
2
0.2642
12
0.0718
3
0.2073
13
0.0669
4
0.1709
14
0.0627
5
0.1455
15
0.0590
6
0.1268
16
0.0557
7
0.1124
17
0.0528
8
0.1009
18
0.0501
9
0.0916
19
0.0477
10
0.0839
20
0.0455
表中第18和第20个数据分别为0.0501和0.0455,可以用复合梯形公式验证其精度很好(见第七次上机实习)
MATLAB程序如下(文件名:ex2.m)
s0=1-exp(-1);
for n=1:20
s0=1-n*s0;
s(n)=s0;
end
s'
pause
t(30)=1/31;
for n=30:-1:2
t(n-1)=(1-t(n))/n;
end
tt=t(1:20)'
例3绘制Koch分形曲线
从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成山丘形图形如下
在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成新的图形如此迭代,形成koch分形曲线。
算法分析:由一条线段产生四条线段,故算法中由n条线段迭代一次后将产生4n条线段。算法针对每一条线段逐步进行,将计算新的三个点。第一个点位于线段三分之一处,第三个点位于线段三分之二处,第二个点以第一个点为轴心,将第一和第三个点形成的向量正向旋转600而得。正向旋转由正交矩阵
实现。
MATLAB程序如下
clear
p=[0 0;10 0];n=1;
A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)];
for k=1:5
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))
上机实习题
1、 数值实验
1.“画圆为方”问题也是古希腊人所提出几何三大难题中的另一个问题。即求作一个正方形,使其面积等于已知圆的面积。不妨设已知圆的半径为 R = 1,试用数值试验显示“画圆为方”问题计算过程中的误差。
2. 算法的数值稳定性实验
设,
由 xn = xn + 5 xn – 1 – 5 xn – 1 可得递推式
In = – 5In – 1 + 1/ n
(1)从 I0 尽可能精确的近似值出发,利用递推公式:
( n = 1,2,…20)
计算从 I1 到 I20 的近似值;
(2)从
较粗糙的估计值出发,用递推公式:
( n= 30,29, …, 3, 2 )
计算从
到
的近似值;
(3) 分析所得结果的可靠性以及出现这种现象的原因。
3. 分形曲线的实验
(1)参考例2的方法,由四边形四个初始点出发绘制如下分形曲线制作的图案
(2)在分形算法中取两种生成元
第二种生成元 第三种生成元
用这两种图形生成元绘制出另外的分形曲线
二、MATLAB编程练习
1. 求平方根算法是历史上著名的算法之一。对于任意正实数C,取初始近似值x0>0(例如取x0=2),利用迭代计算公式
, (n =1,2,……)
编写程序对输入数据C=2,3,5,7,分别计算数列{ xn }的前八项,观察计算过程中有效数字位数变化的规律。
2. 由反正切
函
关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函
数的Tylor级数展开式
,取x = 1,得收敛级数
。编写程序对输入的误差界eps=10-3,10-6,10-8分别计算( 的近似值,并输出求和项数n。
3. 由正弦函数的Tylor展开式取前n项,得
,编写程序实现如下功能:对n=1,2,3,绘制出区间[0,2.5 ]上的近似函数的图形以及sin x 本身的图形(共四条曲线)。
4. 多项式求值的快速算法是一种嵌套乘法,例如一个4次多项式可改写为
形式。这种方法是秦九韶于1247年提出,而霍纳(Horner)于1819年也提出同样方法。在MATLAB中有多项式求值命令 polyval,编写程序实现如下功能:输入正整数n,由计算机产生n+1个随机实数(介于0到20之间)
a0,a1,a2,,……,an
代表n次多项式(升幂)的系数,用秦九韶算法实现对应多项式在x=1,1.5,2,2.5,3处5个函数值的计算并与MATLAB命令polyval计算结果作比较。
5.在MATLAB对多项式计算的命令中,roots可以求得多项式的零点,而poly则可以由多项式零点求得该多项式的系数。著名的Wilkinson's 算例如下,对于20次多项式
P(x) = (x – 1) (x – 2) (x – 3)……(x – 19) (x – 20)
多项式的零点分别为xk = k,(k = 1,2,…,20 )。现将方程中系数有微小改变(扰动),,则新的多项式的根将有很大的变化。例如命令:roots(poly(1:20))所得到的根为
k
xk
k
xk
1
1.0000
11
11.0107
2
2.0000
12
11.9725
3
3.0000
13
13.0565
4
4.0000
14
13.9220
5
5.0000
15
15.0842
6
6.0000
16
15.9319
7
7.0000
17
17.0360
8
7.9999
18
17.9857
9
9.0005
19
19.0032
10
9.9972
20
19.9997
这说明高次方程的根对方程中系数的微小变化是非常敏感。试修改P(x)中的系数,例如变方程为Q(x)=P(x) – 0.01x19用MATLAB命令重新计算多项式Q(x)的根。
6.将一个八位二进制数 (10111101)2 转换成十进制数时,可以用公式:
(1)用多项式求值的秦九韶方法设计程序,将任意一个二进制正整数转换为十进制数;
(2)设计将任意一个八进制正整数转换成十进制数的程序;
(3)设计将任意一个二进制小数(例如:0.110110)转化为十进制小数的程序。
7.给定两个正整数m和n,它们的最小公倍数q和最大公约数p之间关系为:mn=pq。故如果求得p便可非常方便的求得q,反之也一样。欧几里德展转相除法求最大公约数是历史上著名的算法之一。另一个简单算法如下:
(1) 输入:m,n;p(m,q(n;
(2) 如果 p = q,则转(4),否则转(3);
(3) 如果 p
答案
八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案
的前15位数据,例如factorial(25)的结果为ans =1.551121004333099e+025,这只是一个近似数据。
试设计算法编写程序实现对任意的较大整数n≤200,都能准确计算出n的阶乘数。
11.水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子.由于旅途的颠簸,大家都很疲倦,很快就入睡了.第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了.第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只给猴子,私藏一堆,再去入睡.天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子.试问原先最少有多少只椰子?
试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题(15621)。
12.摩托车问题:在一次军事演习中,A、B两队约好同一时间从相距离S公里的各自的驻地出发相向运动,A队行进速度为 v1(公里/小时),B队行进速度为v2(公里/小时)。行军开始时,一通讯员骑摩托车从A队驻地出发为行进中的两队传递消息。摩托车的速度为v0(公里/小时)(v0大于v1和v2),往返于两队之间,每遇一队,立即折回驶向另一队。当两队距离小于0.5公里时,摩托车停止。编写一程序计算通讯员驾驶摩托车跑了多少趟n(从一队驶向另一队为一趟)。
输入数据有两行,第一行有一个实数S,表示两队驻地的距离,第二行有三个实数:v1,v2,v0,分别表示A队行进速度、B队行进速度,以及摩托车行驶速度。
输出数据有一行,共两个整数n,s1分别表示摩托车跑的趟数,以及两队相会时A队行进的路程。
例如
Sample Input
100
10 8 60
Sample Output
18 55.3151
13.角谷猜想:某学生发现一个奇妙的现象,任给一个正整数n,如果它是偶数则将它除以2,如果它是奇数则将它乘以3并加上1。如此重复操作,最后这个数总变为1。他请教于角谷教授,教授无能为力。于是产生了角谷猜想。也称为3n+1问题,用算法描述如下:
第一步:输入 n;
第二步:输出 n;
第三步:如果 n=1 则终止算法;否则转第四步;
第四步:如果 n 是奇数,则 n(3n+1,否则 n(n/2;
第五步;转第三步。
按上面算法,输入一个自然数n,可得到一个包括1在内的数列。如输入5得数列
5,16,8,4,2,1
该数列有6个数。此时,称5的周期为6。编写程序实现如下功能,输入两个正整数i和j,输出区间[i, j]中数的最大周期T。观察是否有特殊规律。
PAGE
8
_1125565372.doc
_1133769492.unknown
_1167986451.unknown
_1168071086.unknown
_1168362832.unknown
_1168067899.unknown
_1167943439.unknown
_1167943389.unknown
_1125605638.unknown
_1133715879.doc
_1125605502.unknown
_1125565544.doc
_966390052.unknown
_1125483852.doc
_1125565233.unknown
_1091646069.doc
_1088079300.unknown
_970861029.unknown
_974338675.unknown
_971993528.unknown
_970861028.unknown
_966389753.unknown
_966389982.unknown