习 题 一 解 答
1.取3.14,3.15,
227,355113
作为π的近似值,求各自的绝对误差,相对误差和有效数字的位数。
分析:求绝对误差的方法是按定义直接计算。求相对误差的一般方法是先求出绝对误差再按定义式计算。注意,不应先求相对误差再求绝对误差。有效数字位数可以根据定义来求,即先由绝对误差确定近似数的绝对误差不超过那一位的半个单位,再确定有效数的末位是哪一位,进一步确定有效数字和有效数位。有了定理2后,可以根据定理2更规范地解答。根据定理2,首先要将数值转化为科学记数形式,然后解答。
解:(1)绝对误差:
e(x)=π-3.14=3.14159265…-3.14=0.00159…≈0.0016。 相对误差:
3()0.0016
()0.51103.14
r e x e x x -==≈?
有效数字:
因为π=3.14159265…=0.314159265…×10,3.14=0.314×10,m=1。 而π-3.14=3.14159265…-3.14=0.00159…
所以│π-3.14│=0.00159…≤0.005=0.5×10-2=21311
101022
--?=?
所以,3.14作为π的近似值有3个有效数字。
(2)绝对误差:
e(x)=π-3.15=3.14159265…-3.14=-0.008407…≈-0.0085。 相对误差:
2()0.0085
()0.27103.15
r e x e x x --==≈-?
有效数字:
因为π=3.14159265…=0.314159265…×10,3.15=0.315×10,m=1。 而π-3.15=3.14159265…-3.15=-0.008407…
所以│π-3.15│=0.008407……≤0.05=0.5×10-1=11211
101022
--?=?
所以,3.15作为π的近似值有2个有效数字。
(3)绝对误差:
22
() 3.14159265 3.1428571430.0012644930.00137
e x π=-=-=-≈-L L
相对误差:
3()0.0013
()0.4110227
r e x e x x
--=
=≈-?
有效数字: 因为π=3.14159265…=0.314159265…×10, 22
3.1428571430.3142857143107
==?,m=1。 而22 3.14159265 3.1428571430.0012644937π-=-=-L L
所以 2213
22 3.14159265 3.1428571430.0012644930.005
7
11
0.510101022
π----=-=≤=?=?=?L L
所以,22
7
作为π的近似值有3个有效数字。
(4)绝对误差:
355
() 3.14159265 3.141592920.00000027050.000000271
113
e x π=-=-=-≈-L L 相对误差:
7()0.000000271
()0.86310355113
r e x e x x
--==≈-?
有效数字:
因为π=3.14159265…=0.314159265…×10, 355
3.141592920.31415929210113
==?,m=1。 而355 3.14159265 3.141592920.0000002705113π-=-=-L L
所以
6617
355 3.14159265 3.141592920.00000027050.0000005
113
11
0.510101022π----=-=≤=?=?=?L L
所以,355
113作为π的近似值有7个有效数字。
指出:
①实际上,本题所求得只能是绝对误差限和相对误差限,而不是绝对误差和相对误差。
2、用四舍五入原则写出下列各数的具有五位有效数字的近似数。 346.7854,7.000009,0.0001324580,0.600300 解:346.7854≈346.79, 7.000009≈7.0000,
0.0001324580≈0.00013246, 0.600300≈0.60030。 指出: 注意0。
只要求写出不要求变形。
3、下列各数都是对准确数进行四舍五入后得到的近似数,试分别指出他们的绝对误差限和相对误差限和有效数字的位数。
12340.0315,0.3015,31.50,5000x x x x ====。
分析:首先,本题的准确数未知,因此绝对误差限根据四舍五入规则确定。其次,应当先求绝对误差限,再求相对误差限,最后确定有效数字个数。有效数字由定义可以直接得出。
解:由四舍五入的概念,上述各数的绝对误差限分别是
1234()0.00005,()0.00005,()0.005,()0.5x x x x εεεε==== 由绝对误差和相对误差的关系,相对误差限分别是
111222
333
444
()0.00005
()0.16%,
0.0315
()0.00005
()0.02%,
0.3015()0.005
()0.002%,31.5()0.5
()0.01%.5000
x x x x x x x x x x x x εδεδεδεδ==≈==≈==≈=
=
≈
有效数字分别有3位、4位、4位、4位。 指出:
本题显然是直接指出有效数位、直接写出绝对误差,用定义求出相对误差。
4.
0.1%。 解:设取n 个有效数字可使相对误差小于0.1%,则 111
100.1%2n a -?<,
而34≤≤,显然13a =,此时,
1111110100.1%223n n a --?=?, 即131
10106
n --?<, 也即461010n ?> 所以,n=4。
3.162≈。
5、在计算机数系F(10,4,-77,77)中,对
31120.14281100.31415910x x =?=-?与,试求它们的机器浮点数()(1,2)i fl x i =及
其相对误差。
解:
333311111111
2222()0.142810,(())()0.14281100.1428100.0000110,()0.314210,(())()0.31415910(0.314210)0.0004110fl x e fl x x fl x fl x e fl x x fl x =?=-=?-?=?=-?=-=-?--?=?其相对误差分别是
31
1231
0.00001100.000041100.007%,0.013%0.1428100.314210e e ??=≈=≈-?-?。
6、在机器数系F(10,8,L,U)中,取三个数
4220.2337125810,0.3367842910,0.3367781110x y z -=?=?=-?,试按
(),()x y z x y z ++++两种算法计算x y z ++的值,并将结果与精确结果比较。
解:
4222222
2
2
(())(0.23371258100.3367842910)0.3367781110(0.00000023100.3367842910)0.33677811100.33678452100.33677811100.0000064110fl x y z -++=?+?-?=?+?-?=?-?=?
422422
2
2(())0.2337125810(0.33678429100.3367781110)0.23371258100.00000618100.00000023100.00000618100.0000064110fl x y z --++=?+?-?=?+?=?+?=?
精确计算得:
4222222
2
2
0.23371258100.33678429100.3367781110(0.00000023371258100.3367842910)0.33677811100.33678452371258100.33677811100.000064137125810x y z -++=?+?-?=?+?-?=?-?=?
第一种算法按从小到大计算,但出现了两个数量级相差较大的数相加,容易出现大数吃小数.而第二种算法则出现了两个相近的数相减,容易导致有效数位的减少。计算结果证明,两者精度水平是相同的。
***
在机器数系F(10,8,L,U)中,取三个数
4220.2337125810,0.3367842910,0.3367781110x y z --=?=?=-?,试按
(),()x y z x y z ++++两种算法计算x y z ++的值,并将结果与精确结果比较。
解:
42222222222
(())(0.23371258100.3367842910)0.3367781110(0.00233713100.3367842910)0.33677811100.33912142100.33677811100.00003391100.33677811100.336744210fl x y z -----++=?+?-?=?+?-?=?-?=?-?=-?
42242242222
(())0.2337125810(0.33678429100.3367781110)0.2337125810(0.00003368100.3367781110)0.23371258100.33674742100.00000023100.33674742100.3367471910fl x y z ----++=?+?-?=?+?-?=?-?=?-?=-?
第一种算法是按从小到大的顺序计算的,防止了大数吃小数,计算更精确。
精确计算得:
4222
0.23371258100.33678429100.33677811100.0000233712580.003367842933.6778110.00339121415833.67781133.6744197858420.3367441978584210x y z --++=?+?-?=+-=-=-=-?
显然,也是第一种算法求出的结果和精确结果更接近。
7、某计算机的机器数系为F(10,2,L,U),用浮点运算分别从左到右计算及从右到左计算
10.40.30.20.040.030.020.01+++++++ 试比较所得结果。 解:从左到右计算得
10.40.30.20.040.030.020.01
0.1100.04100.03100.02100.00100.00100.00100.00100.19101.9
+++++++=?+?+?+?+?+?+?+?=?=
从右到左计算得
111110.40.30.20.040.030.020.010.010.020.030.040.20.30.41
0.1100.2100.3100.4100.20.30.410.10.20.30.41
0.1101
0.1100.1100.2102
----+++++++=+++++++=?+?+?+?++++=++++=?+=?+?=?=
从右到左计算避免了大数吃小数,比从左到右计算精确。
8、对于有效数1233.105,0.001,0.100x x x =-==,估计下列算式的相对误差限
2
1123212333
,,x y x x x y x x x y x =++==
分析:求和差的相对误差限采取先求出和差的绝对误差限再求相对误差限的方法。求积商的相对误差限采取先求每一个数的相对误差限再求和的方法。
解:因为1233.105,0.001,0.100x x x =-==都是有效数, 所以123()0.0005,()0.0005,()0.0005x x x εεε===
1230.00050.00050.0005
()0.16%,()50%,()0.5%3.1050.0010.100
x x x δδδ=
===== 则123123()()()()0.00050.00050.00050.0015x x x x x x εεεε++=++=++=
4123123123
()
0.00150.0015
() 4.99100.05%
3.1050.0010.100 3.004
x x x x x x x x x εδ-++++==
=≈?=++-++
123123()()()()0.16%50%0.5%50.66%x x x x x x δδδδ=++=++=
2
233
(
)()()50%0.5%50.5%x x x x δδδ=+=+= 指出:
如果简单地用有效数字与误差的关系计算,则不够精确。
注意是相对误差限的讨论。符号要正确,商的误差限是误差限的和而不是差。
9、试改变下列表达式,使其计算结果比较精确(其中1x =表示x 充分接近0,1x ?表示x 充分大)。
(1)1212ln ln ,x x x x -≈; (2)
11,111x x x x
---+=;
(3)1x ?; (4)
1cos ,01x
x x x -≠=且; (5)1
cot ,01x x x x
-≠=且。
分析:根据算法设计的原则进行变形即可。当没有简单有效的方法时就采用泰勒展开的方法。
解:(1)1
122
ln ln ln x x x x -=; (2)
2
2
2
111(1)11(1)(1)1(12)3(1)(1)(1)(1)
x x x x x x x x x x x x
x x x x -+---=
-+-++--+-=
=
-+-+;
(3)
=
=
=
或
112
()()
2
x x
x
-=
+--
==
=
=
(4)
242
242
1
321
1
1(1(1))
1cos2!4!(2)!
(1)
2!4!(2)!
(1)
2!4!(2)!
n
n
n
n
n
n
x x x
x n
x x
x x x
n
x
x x x
n
+
-
+
--+-+-+ -
=
--+-+
=
=--+-+
L L
L L
L L
(5)
2
321
2
321
n
2
11111
cot()
345(2)!
2
11
345(2)!
B
n
n
n
n
n
n
B
x x x x
x x x n
B
x x x
n
-
-
-=------
=++++
L L
L L
(是贝努利数)
指出:
①采用等价无穷小代换的方法一般不可行。近似计算中的误差并不是无穷小量,利用无穷小量等价代换,两个量的差别可能恰恰是影响精度的因素。采用等价无穷小代换,可能只会得到精度水平比较低的结论。
例如
2
2
2sin 2()1cos 222
x x
x
x x
x x -=≈= 11cos sin cos cot sin sin cos (1,sin )
sin 1cos sin 11(1,cos 1)sin 0
x x x x
x x x x x x x x x x x x x x x
x x x x --=-=-≈≈-=
-≈≈=== 试与上例比较。
有时候这种方法可以使用,例如 因为cos()cos cos sin sin x x x δδδ+=-, 当1δ=时,cos 1,sin 0δδ≈≈
cos()cos cos sin sin cos sin x x x x x δδδδ+=-≈-g
在这个计算中,由于x 是常数,x 的函数值实际上放大了每一项的计算结果,使得相近的数相减的问题不很突出。
而利用一阶的泰勒展开()()()()f x f x f x x δδξξδ'+≈+<<+,当1δ=时,就有()()()f x f x f x δδ'+≈+,因此
cos()cos sin x x x δδ+≈-
和上面的结果一样。但显然,用泰勒展开的方法具有一般性并能得到精度更高的结果,而且不会有方法上出错的可能。
②采用洛必达法则也是不可以的。实际上,无论是等价无穷小还是洛必达法则都是极限方法,而因为近似计算中的误差虽然可以近似地看作是微分,但本质上却是一个确定的可能极小的小数而不是无穷小(趋于零的变量),因此近似计算是不能采用极限方法的。
③转化的结果要化简,比如化繁分式为简分式,但不能取极限。取极限就违背的了数值计算的本意。
所以,
11110110111010x x x ---≈-=-=-+-+ 是错误的。
④极小的数做除数,实际上是
型的不定型,要转化为非不定型。 10、用4位三角函数表,怎样算才能保证1cos 2-o 有较高的精度? 解:根据21cos 22sin 1-=o o ,先查表求出sin1o 再计算出要求的结果精度较高。
指出:
用度数就可以。不必化为弧度。
11、利用27.982≈求方程25610x x -+=的两个根,使它们至少具有4位有效数字。
解:
由方程的求根公式,本方程的根为
1,256562822
x ±±===±
27.982≈,则
1282827.98255.982x =≈+=
如果直接根据求根公式计算第二个根,则因为两个相近的数相减会造成有效数字的减少,误差增大。因此
根据韦达定理121x x =,在求出155.982x ≈后这样计算2x :
1211155.982
x x =
≈?=0.01786=0.178610 这样就保证了求出的根有四位有效数字。 12、试给出一种计算积分
1
1
(0,1,2,3,...)n x n I e
x e dx n -==?, 近似值的稳定算法。
解:当n =0时,1
1
011
00
(1)1x I e
x e dx e e e ---==-=-?。 (1
1
1x x e dx e e ==-?)。
对I n 运用分部积分法(b
b
b
a a
a
udv uv vdu =-??)得
1
1
1
1
1
1
11
10
()(0)n x n x n x
n x n I e
x e dx e x e
n x e dx e e n x e dx -----==-=--???
11
110
11n x
n ne
x e dx nI ---=-=-? 由此得到带初值的递推关系式
1
0111(1,2,3,...)n
n I e
I nI n --?=-??
=-=?? 由递推公式I n =1-nI n -1 解得11
(1)n n I I n
-=-,这是逆向的递推公式,对I n 的值作估计,有
1
1
1
11
1
1
n x
n
n I e
x e dx e e x dx n --=≤=+?? 另有
1
1
111
11
n x n n I e x e dx e x dx e n ---=≥=+?? (取e 的指数为最小值0,将e x 取作 e 0 =1作为常数即可简化公式)。
则 11111
n e I n n -≤≤++。 那么,我们可以取其上下限的平均值作为其近似值。即取
111
(1)21
n I e n -=
++ 可以看出,n 越大,这个近似值越精确地接近于准确值。 (n 越大,I n 的上限和下限就越接近,近似值区间的长度就越短,近似值和精确值就越接近)
此时,e n -1=I n -1*-I n -1=-1n (I n *-I n )=1n e n ,│e 0│= 1
!
n │e n │,计算是稳
定的。
实际上,如果我们要求I 9,可以先求出I 20,这样求出的I 9的误差是比I 20
的误差小得多的,而I 20的误差本身也并不大。实际上,这样求出的I 9比直接计算出来的精确得多。
补充题(一)
1、给出数系F(10,4,-5,5)中的最大数、最小数和最小整数。 解:最大数:0.9999×105;
最小数:-0.9999×105; 最小正数:0.0001×10-5。 2、已知 2.71828182845904523536028747e =L ,求它在F(10,5,-5,5)和F(10,8,-5,5)中的浮点数。
解:在F(10,5,-5,5)中,1()0.2718310fl e =? 在F(10,8,-5,5)中,1()0.2718281810fl e =?
3、已知数e 的以下几个近似数,它们分别有几位有效数字?相对误差是多少?
0102.7182, 2.7183, 2.7182818x x x ===。
分析:题目没有说明近似数是通过哪种途径取得的,也就没有明确每个近似数和准确数之间的误差关系。
所以,本题的解答应当从求近似数的误差开始。 解:因为
31404151718211
0.000081811010,
2211
0.000021010,22
11
0.000000031010.
22
e x e x e x -------==?-≈=?-≈=?,
所以,0102.7182, 2.7183, 2.7182818x x x ===分别有4、5、8个有效数字。 其相对误差分别是
14
0300417
21101
2()10,
2.718241
10,
41
104
r e x e x x e x e x ----?-=<--
4
、数3
与下述各式在实数的意义上是相等的, (1
)3(17-,(2
)31[(17]--,(3
)6(3-,(4
)61[(3]-+, (5
)19601-6
)1(19601-+。
试说明在浮点数系(10,4,8,8)F -中,用哪个公式计算出的结果误差最小。 分析:本题实际上是一个算法分析与设计问题,也就是说要应用算法设计的基本原则进行分析讨论。
解:在本例中,显然3
和17
和19601
和也是相近的数。因此:
①为避免相近的数相减,不应采用(1)、(3)、(5)三种计算方法。 ②在余下的三种计算方法中,(2)需要进行4次乘除法,(4)需要进行7次乘除法,(6)需要进行1次除法。从减少运算次数来说,应采用(6)。
所以,采用(6)计算,计算结果误差最小。
5、32
()[ln(1)]/x f x xe x x =+-,当1x =时,如何计算才能获得准确的结果? 解:当1x =(即很小时),f(x)的分子是两个相近的小数相减,而分母也是一个小数,因此应避免简单地按原计算顺序直接计算,而应进行变形。
由泰勒展开得
2342
23()()()222()22!3!4!ln(1)23x
n x x x x
xe x x x x x x x x
x x n
=+++++-=------g g g L
L L
因此
3453
2
111111
()[()()()]/8348416245
51139724481920
f x x x x x x x
=-+-+-+?≈---L
此处最后略去部分的第一项为 33
11639()1203263840
x x -=-? 当1x =时,这一部分是相当小的值,可以略去。 指出:
如果要提高计算精度,就可以考虑保留更多的项。
补充题(二)
(一)
1、计算e 的近似值,使其误差不超过10-6。
2、利用
122
1()1(01,1)1(1)n n
n x f x x x x x x x θθ++==+++++
<<<--L
计算f(0.1)的近似值,其误差不超过10-2,求n 。
3、3.142和3.141分别作为π的近似数,各有几位有效数字?
4、已知近似数x 的相对误差限为0.3%,问x 至少有几个有效数字?
5、已知x 的下列3个近似数的绝对误差限都是0.005,问它们的有效数字各有几位?
a=138.00,b=-0.0132,c=-0.86×10-4
6、设近似值x=1.234,且绝对误差界为0.0005,则它至少有几位有效数字?
7、某校有学生6281人,通常说有6000人。下面哪个式子表示6000这个近似数合适?
444
4
0.6100.60100.60010
0.600010????
分析与解答
1、解:令f(x)=e x ,而f (k)(x)=e x ,f (k)(0)=e 0=1。由麦克劳林公式,可知
21
1(01)2!!(1)!
n x
x
n x x e e x x n n θθ+=+++++<<+L
当x=1时,1111(01)2!!(1)!
e e n n θ
θ=+++++
<<+L
故3(1)(1)!(1)!
n e R n n θ=<++。
当n =9时,R n (1)<10-6,符合要求。此时,
e≈2.718 285
解决这类问题其实很简单。只要知道了泰勒展开式,余下的就只是简单的计算了。
泰勒(Taylor)中值定理:若函数f(x)在[a,b]上存在直至n 阶的连续导函数,在(a,b)上存在n+1阶导函数,则对任意给定的x ,x 0∈[a ,,b],至少存在一点ξ∈(a ,,b ),使得
()(1)21
00000000()()()()()()()()()()2!!(1)!
n n n
n f x f x f f x f x f x x x x x x x x x n n ξ++'''=+-+-++-+-+L 其中,
(1)10()
()()(1)!
n n n f R x x x n ξ++=
-+ 叫做拉格朗日型余项。 当x 0=0时,得到麦克劳林公式。
()(1)21
(0)(0)()()(0)(0)(01)
2!!(1)!
n n n n f f f x f x f f x x x x
n n θθ++'''=+++++<<+g g L g g
2、解:
11122
222
(2)323
0.10.11()1010,9(1)(10.1)0.9910,910n n n n n n n n n x x θ++++-+++-+-+<==?<--<>
所以,n=2。 3、
π=3.14159265…=0.314159265…×10,3.142=0.3142×10,m=1。
因为π-3.142=3.14159265…-3.142=-0.00040…
所以,│π-3.142│=0.00040…≤0.0005=0.5×10-3=