习 题 ⼀ 解 答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.14r 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=21311101022--?=?
所以,3.14作为π的近似值有3个有效数字。 (2)绝对误差:
e(x)=π-3.15=3.14159265…-3.14=-0.008407…≈-0.0085。 相对误差:2()0.0085
()0.27103.15r e x e x x --==≈-?有效数字:
因为π=3.14159265…=0.314159265…×10,3.15=0.315×10,m=1。 ⽽π-3.15=3.14159265…-3.14=-0.008407…所以│π-3.15│=0.008407……≤0.05=0.5×10-1=11211101022--?=?
所以,3.15作为π的近似值有2个有效数字。(3)绝对误差:22
() 3.14159265 3.1428571430.00124930.00137e x π=-=-=-≈-相对误差:3()0.0013()0.4110227r e x e x x--==≈-?
有效数字: 因为π=3.14159265…=0.314159265…×10, 223.1428571430.3142857143107==?,m=1。 ⽽22
3.14159265 3.1428571430.00124937π-=-=- 所以 221322 3.14159265 3.1428571430.00124930.005711
0.510101022π----=-=≤=?=?=?所以,227
作为π的近似值有3个有效数字。(4)绝对误差:355
() 3.14159265 3.141592920.00000027050.000000271113e x π=-=-=-≈- 相对误差:7()0.000000271()0.86310355113r e x e x x--==≈-?有效数字:
因为π=3.14159265…=0.314159265…×10, 3553.141592920.31415929210113==?,m=1。 ⽽355
3.14159265 3.141592920.0000002705113π-=-=- 所以6617
355 3.14159265 3.141592920.00000027050.000000511311
0.510101022π----=-=≤=?=?=?所以,355113
作为π的近似值有7个有效数字。指出:
①实际上,本题所求得只能是绝对误差限和相对误差限,⽽不是绝对误差和相对误差。②为简单计,本题相对误差没有化为百分数。
③在求出绝对误差后,按定义求有效数字是基本功,必须掌握。绝对不允许有了定理后就不会根据定义讨论。因此,本类问题的解答应当是两种⽅法都熟练掌握的。实际上,根据基本概念分析讨论问题始终是最重要的⽅法,由于不同的作者会提出不同的定理系统,因此,掌握根据最本元的定义讨论问题的⽅法是⾮常重要的。④ 祖冲之(公元429年─公元500年)是我国杰出的数学家,科学家。南北朝时期⼈,汉族⼈,字⽂远。⽣于宋⽂帝元嘉六年,卒于齐昏侯永元⼆年。祖籍范阳郡遒县(今河北涞⽔县)。在世界上最早计算出π的真值在3.1415926(朒数)和3.1415927(盈数)之间,相当于精确到⼩数第7位,这⼀纪录直到15世纪才由阿拉伯数学家阿尔.卡西打破。祖冲之还给
出π的两个分数形式:227(约率)和355113
(密率),其中密率精确到⼩数
第7位,在西⽅直到16世纪才由荷兰数学家奥托重新发现,⽐祖冲之晚了⼀千多年,数学史学界主张称“密率”为“祖率”。⑤近似数的有效数字只能是有限位。
⑥近似数的误差分析中采⽤近似数x ⽽不是其准确数,准确数是未知的。
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 εεεε====由绝对误差和相对误差的关系,相对误差限分别是
111222333444()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位、3位、4位。 4.
0.1%。 解:设取n 个有效数字可使相对误差⼩于0.1%,则 111100.1%2n a -?<,
⽽34≤,显然13a =,此时,11111
10100.1%223n n a --?=?即131
10106n --?<, 也即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 =?=-=?-?=?=-?=-=-?--?=?其相对误差分别是311231
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 ++的值,并将结果与精确结果⽐较。解:422222222
(())(0.23371258100.3367842910)0.3367781110(0.00000023100.3367842910)0.33677811100.33678452100.33677811100.00000110fl x y z -++=?+?-?=?+?-?=?-?=?42242222
(())0.2337125810(0.33678429100.3367781110)0.23371258100.00000618100.00000023100.00000618100.00000110fl x y z --++=?+?-?=?+?=?+?=?精确计算得:422222222
0.23371258100.33678429100.3367781110(0.00000023371258100.3367842910)0.33677811100.33678452371258100.33677811100.0000137125810x 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.336744210flx y z -----++=?+?-?=?+?-?=?-?=?-?=-?42242242222
(())0.2337125810(0.33678429100.3367781110)0.2337125810(0.00003368100.3367781110)0.23371258100.33674742100.00000023100.33674742100.3367471910flx 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.410.11010.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.100x 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.004x x x x x x x x x εδ-++++==
=≈?=++-++
123123()()()()0.16%50%0.5%50.66%x x x x x x δδδδ=++=++= 2233()()()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 ,01xx x x -≠ 且; (5)1cot ,01x x x x-≠ 且。
分析:根据算法设计的原则进⾏变形即可。当没有简单有效的⽅法时就采⽤泰勒展开的⽅法。解:(1)1122
ln ln ln x x x x -=; (2)222
111(1)11(1)(1)1(12)3(1)(1)(1)(1)x x x x x x x x x x x xx x x x -+---=-+-++--+-==-+-+;(3)
===或
112()()2x x=+--====(4)242242132111(1(1))1cos2!4!(2)!(1)2!4!(2)!(1)2!4!(2)!nnnnnnx x xx nx x
x x xnxx x xn+-+--+-+-+ -=--+-+==--+-+(5)23212321n211111cot()345(2)!211345(2)!BnnnnnnBx x x xx x x nBx x xn---=------=++++
(是贝努利数)指出:
①采⽤等价⽆穷⼩代换的⽅法⼀般不可⾏。近似计算中,实际上影响计算的恰恰是⽆穷⼩量,虽然等价,但其差别可能恰恰是影响精度的因素。采⽤等价⽆穷⼩代换,可能只会得到精度⽔平⽐较低的结论。
例如22
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 0x x x x x x x x x x x x x x x x x x xx 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 δδδδ+=-≈-在这个计算中,由于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- 有较⾼的精度? 解:根据21cos 22sin 1-= ,先查表求出sin1 再计算出要求的结果精度较⾼。指出:
⽤度数就可以。不必化为弧度。11
、利⽤27.982≈求⽅程25610x x -+=的两个根,使它们⾄少具有4位有效数字。解:
由⽅程的求根公式,本⽅程的根为1,228x ===±
27.982,则
1282827.98255.982x =≈+=
如果直接根据求根公式计算第⼆个根,则因为两个相近的数相减会造成有效数字的减少,误差增⼤。因此根据韦达定理121x x =,在求出155.982x ≈后这样计算2x :1211155.982x x =
≈?=0.01786=0.178610 这样就保证了求出的根有四位有效数字。 12、试给出⼀种计算积分11
(0,1,2,3,...)n x n I e
x e dx n -==?, 近似值的稳定算法。解:当n =0时,1101100
(1)1x I e x e dx e e e ---==-=-?。(11
1x x e dx e e ==-?)。对I n 运⽤分部积分法(bbba aa
udv uv vdu =-??)得1111111110
()(0)n x n x n xn x n I ex e dx e x e
n x e dx e e n x e dx -----==-=--1111011n x n ne
x e dx nI ---=-=-? 由此得到带初值的递推关系式10111(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 的值作估计,有1111111n xnn I e
x e dx e e x dx n --=≤=+?? 另有1
1111011n xn n I ex e dx e
x dx e n ---=≥=+?? (取e 的指数为最⼩值0,将e x 取作 e 0 =1作为常数即可简化公式)。则 11111
n e I n n -≤≤++。 那么,我们可以取其上下限的平均值作为其近似值。即取111(1)21n 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.1000×10-5。
2、已知 2.71828182845904523536028747e = ,求它在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 ===。
分析:题⽬没有说明近似数是通过哪种途径取得的,也就没有明确每个近似数和准确数之间的误差关系。所以,本题的解答应当从求近似数的误差开始。 解:因为314041517182110.000081811010,22110.000021010,2211
0.000000031010.22
e x e x e x -------=140300417211012()10,2.71824110,
41104
r e x e x x e x e x ----?-=<4
、数与下述各式在实数的意义上是相等的, (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)23xn x x x xxe x x x x x x x xx x n
=+++++-=------因此34532111111
()[()()()]/834841624551139724481920f x x x x x x x=-+-+-+?≈---
此处最后略去部分的第⼀项为 3311639()1203263840
x x -=-? 当1x 时,这⼀部分是相当⼩的值,可以略去。 指出:如果要提⾼计算精度,就可以考虑保留更多的项。习 题 ⼆ 解 答
1、⽤⼆分法求⽅程x 3-2x 2-4x-7=0在区间[3,4]内的根,精确到10-3,即误差不超过31102-?。
分析:精确到10-3与误差不超过10-3不同。
解:因为f(3)=-10<0,f(4)=9>0,所以,⽅程在区间[3,4]上有根。 由34311*1022222
n n n n n n b a b a x x -----≤===
所以n =11,即只需要⼆分11次即可。
x *≈x 11=。指出:
(1)注意精确度的不同表述。精确到10-3和误差不超过10-3是不同的。 (2)计算过程中取4位⼩数,结果取3位。2、证明1sin 0x x --=在[0,1]内有⼀个根,使⽤⼆分法求误差不⼤于41102-?的
根,需要迭代多少次?
分析:证明⽅程在指定区间内有⼀个根,就是证明相应的函数在指定区间有⾄少⼀个零点。解:令()1sin f x x x =--,
因为(0)10sin 010,(1)11sin1sin10f f =--=>=--=-<, 则(0)(1)0f f <,由零点定理,函数f(x)在[0,1]区间有⼀个根。 由41011*1022222
n n n n n n b a b a x x -----≤===
⼜因为210=1024,213=8192<10000,214=16384>10000 所以n =15,即需要⼆分15次。指出:
要证明的是有⼀个解⽽不是唯⼀解,因此不必讨论单调性。7.⽤⽜顿法求⽅程3310x x --=在初始值02x =邻近的⼀个正根,要求3110k k x x -+-<。解: 因为3310x x --=
所以有3()31f x x x =--,相应的迭代公式为3312231213333
k k k k k k k x x x x x x x +--+=-=-- 取x 0=2为迭代的初始近似值。迭代的结果列表如下:
因为33210.0001102x x --=
3)⽤秦九韶算法计算f(x n )。 (*3 1.8794x x ≈=。
10.⽤快速弦截求⽅程3310x x --=在初始值02x =邻近的实根(取1 1.9x =,要求精确到310-)。解:解: 因为3310x x --=
所以有3()31f x x x =--,相应的迭代公式为111()
()()()k k k k k k k f x x x x x f x f x +--=---取x 0=2为迭代的初始近似值。迭代的结果列表如下:
因为34310.0000102x x --=
*4 1.8794x x ≈=。习 题 三 解 答
1、⽤⾼斯消元法解下列⽅程组。(1)123123122314254
27x x x x x x x x -+=??++=??+=?①②③解:?4②+(-)①2,12
③+(-)①消去第⼆、三个⽅程的1x ,得:1232323231425313222x x x x x x x ?-+=
-=-=?④⑤⑥ 再由52)4
⑥+(-⑤消去此⽅程组的第三个⽅程的2x ,得到三⾓⽅程组:1232332314272184x x x x x x ?-+=-=-=
回代,得:
36x =-,21x =-,19x =所以⽅程组的解为(9,1,6)T x =--注意:
①算法要求,不能化简。化简则不是严格意义上的消元法,在算法设计上就多出了步骤。实际上,由于数值计算时⽤⼩数进⾏的,化简既是不必要的也是不能实现的。⽆论是顺序消元法还是选主元素消元法都是这样。 ②消元法要求采⽤⼀般形式,或者说是分量形式,不能⽤矩阵,以展⽰消元过程。要通过练习熟悉消元的过程⽽不是矩阵变换的技术。 矩阵形式错⼀点就是全错,也不利于检查。 ⼀般形式或分量形式: 123123122314254
27x x x x x x x x -+=??++=??+=?①②③ 矩阵形式
123213142541207x x x -?????? ??? ?= ??? ? ??? ??????? 向量形式 123213142541207x x x -???????? ? ? ? ?++= ? ? ? ? ? ? ? ?????????③必须是⽅程组到⽅程组的变形。三元⽅程组的消元过程要有三个⽅程组,不能变形出单⼀的⽅程。
④消元顺序12x x →→ ,不能颠倒。按为⽀援在⽅程组中的排列顺序消元也是存储算法的要求。实际上,不按顺序消元是不规范的选主元素。 ⑤不能化简⽅程,否则系数矩阵会变化,也不利于算法设计。 2、将矩阵1020011120110011A ?? ?
= - 作LU 分解。 解:设
1112131421222324313231324142434410001020100001111000201110000011u u u u l u u u A LU l l u u l l l u ? ? ? ?=== ?- ?
根据矩阵乘法,先求U 的第⼀⾏,由11j j a u =,得111213141,0,2,0u u u u ====。
再求L 的第⼀列,由矩阵乘法,因为1111i i a l u =,所以1111
i i a l u =,⽽111u =,所以11i i l a =,所以2131410,2,0l l l ===。 再求U 的第⼆⾏,得 21122211l u u ?+?=,则22211211001u l u =-?=-?=,
21132333101l u u u ?+?+?=,则 23211311021u l u =-?=-?=, 21142434441001l u u u u ?+?+?+?=,则 24211411001u l u =-?=-?=, 再求L 的第⼆列,得3112322210000l u l u ?+?+?+?=,则 32311200200l l u =-?=-?=
41124222430000l u l u l ?+?+?+?=,则 42411200000l l u =-?=-?= 再求U 的第三⾏,得311332233311l u l u u ?+?+?=-,则
33311332231122015u l u l u =--?-?=--?+?=- 311432243444101l u l u u u ?+?+?+?=,则 34311432241120011u l u l u =-?-?=-?-?= 再求L 的第三列,得411342234333101l u l u l u ?+?+?+?=,则4311(10201)55l =-?-?+?=-再求U 的第四⾏,得
4114422443344411l u l u l u u ?+?+?+?=,则4441144224433416110001(1)55
u l u l u l u =-?+?+?=-?-?--?=所以,矩阵A 的LU 分解为:
1000102001000111,201000511600100055L U ???? ? ? ? ?== ? ?- ? ? -
⽤MATLAB 计算:
a=[1,0,2,0;0,1,1,1;2,0,-1,1;0,0,1,1] a =1 0
2 0 0 1 1 1 2 0 -1 1 0 0 1 1>> [L,U,P]=lu(a) L =
1.0000 0 0 0 0 1.0000 0 0 0.5000 0 1.0000 0 0 0 0.4000 1.0000
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务