按定义,上述各数具有5位有效数字的近似数分别是 注意
187.93, 0.037856, 8.0000, 2.7183
x8.000033的5位有效数字的近似数是8.0000而不是8,因
2
重力常数
为8只有1位有效数字。
g,如果以m/s2为单位,
g0.980101m/s2;若以km/s2为单位,
22g0.98010km/s,它们都具有3位有效数字,因为按第一
例种写法
112g9.80101013,
22按第二种写法
115g0.00980101023,
22他们虽然写法不同,但都具有3位有效数字。至于绝对误差限,由于单位不同结果也不同,*11122*10m/s,2105km/s2,而相对误差都是22r*0.005/9.800.000005/0.00980。
例3 要使设取知a20的近似值的相对误差限小于0.1%,要取几位有效数字?
110n1。由于204.42a1,
n位有效数字,由定理1.1,r*14,故只要取n4,就有
r*0.1251031030.1%
即只要对表得20的近似值取4位有效数字,其相对误差就小于0.1%。此时由开方204.472。
例4 设
yxn,求y的相对误差与
x的相对误差之间的关系。
x的相对误差是x的
解 由式(1-9)得
er(y)d(lnxn)nd(lnx)ner(x)
所以
xn的相对误差是x的相对误差的n倍,特别地,相对误差的一半。
例5 设
x0,x的相对误差为,求lnx的绝对误差。
e(x),即e(x)x,所以
er(x)xe(x)e(lnx)d(lnx)er(x)
x解 由于l100m,宽d的值为
*d*80m,已知|ll|0.2m,|dd*|0.1m,试求面积sld例6 已测得某场地长为
的值为
的绝对误差与相对误差。
解 因sl*ssld,d,l,由(1-5)知
ld*其中(s)*ls**d80m,()l110m,而
d*ss**s||l||d*,
ld*l*0.2m,d*0.1m,
于是绝对误差限
*s800.21100.127m相对误差限
*2
27rs***0.31%
|s|ld8800
例7 计算ns*(s*)Ie1由分部积分可得计算n的递推公式
I10xnexdx(n0,1,)并估计误差。
若计算出0,代入(1-11),可逐次求出1算
IIn1nIn1 (n1,2,) (1-11)
11x1Ieedx1e.00I,I2,的值。要算出0就要先计
Ie1,若用泰勒多项式展开部分和
(1)2e1(1)2!1(1)k, k!并取
k7,用
14位小数计算,则得
11R7e0.3679104。计算过程中小数点后第5位的数
8!4字按四舍五入原则舍入,由此产生的舍入误差这里先不讨论。当初始值取为
e10.3679,截断误差
I00.6321I0时,用(1-11)递推的计算公式为
I0(A)0.6321; (n1,2,)。 In1nIn1计算结果见表1-1的n列。用0近似0产生的误差
始误差,它对后面计算结果是有影响的。
表1-1
IIIE0I0I0就是初
I*n 0 1 2 3 4 In (用(A)算) 0.6321 0.3679 0.2642 0.2074 0.1704 I* n 5 6 7 8 9 In (用(A)算) 0.1480 0.1120 0.2160 -0.7280 7.552 (用(B)算) 0.6321 0.3679 0.2643 0.2073 0.1708 (用(B)算) 0.1455 0.1268 0.1121 0.1035 0.0684 从表中可以看到8出现负值,这与一切n得
II0相矛盾。实际上,有积分估值
(1-12)
1e11xe(mine)xndxIn00x1n1e(maxe)xndx0x101x11n1n较大时,用In近似In显然是不正确的。这里的计算公式与每步计
算都是正确的,那么是什么原因使计算结果错误呢?主要就是初值I0有误差
因此,当
E0I0I0,由此引起以后各步计算的误差EnInIn满足关系
EnnEn1 (n1,2,)
容易推得
En(1)nn!E0,
由此看出:误差
E0导致第n步的误差扩大n!倍,当n较大时,误差将淹
没真值,因此用n近似In显然是不正确的,这种递推公式不宜采用。例如,
In8,若E0I1104,则 2E88!E02
这就说明8完全不能近似8了。它表明公式(A)是数值不稳定的。
现在换一种计算方法。由(1-12)取
In9,有
111e我们粗略取I(,然后将公式(1-11)倒过来算,)0.0684I9921010e11
I91010**即由9算出8II,I,*7,I*0公式为
*I90.0684(B) n(9,8,*1*I(1In)n1n,1);
4**列。我们发现I0与I0的误差不超过10。记In1******EnInIn,则E0En,E0比En缩小了n!倍,因此,
n!**尽管E9较大,但由于误差逐步缩小,故可用In近似In。反之,当用方案(A)计算时,尽管初值I0相当准确,由于误差传播是逐步扩大的,因而计算结果不计算结果见表1-1的
可靠。此例说明,数值不稳定的算法是不能使用的。
例8 线性方程组
0.00001x1x21, 2x1x22.的准确解为
200000199998x10.50000125,x20.999995
399999199999现在四位浮点十进制数(仿机器实际计算)下用消去法求解,上述方程写成
411100.1000x100.1000x100.1000, 11111100.2000x100.1000x100.2000.1214若用(100.1000)除第一方程减第二方程,则出现用小的数除
2大的数,得到
411100.1000x100.1000x100.1000, 1166100.2000x100.2000.2由此解出
x10, x21010.10001,
显然严重失真。
若反过来用第二个方程消去第一个方程中含1的项,则避免了大数被小数除,得到
66100.1000x100.1000,2 111100.2000x100.1000x100.2000.12x由此求的相当好的近似解
x10.5000,x21010.1000。 2例9 求x16x10的根。
63, 解 x18* x28630.8100.794100.00610x2x*2只有一位有效数字。若改用
1x28630.627101
86315.941具有3位有效数字。
例10 计算A107(1cos2)(用四位数学用表)。
0.9994,直接计算
773A10(1cos2)10(10.9994)610。
x只有一位有效数字,若利用1cosx2sin2,则 2由于cos2A10(1cos2)2(sin1)106.1310具有三位有效数字(这里sin10.0175)。
和
7273
此例说明,可通过改变计算公式避免或减少有效数字的损失。类似的如果1xx2很接近时,则
x1
lgx1lgx2lgx2用右边算式有效数字就不损失。当
x很大时,
x1x都用右边算式代替左边。一般情况,当fxfx*时,就用泰勒展开
fx****2
fxfxfxxxxx2取右端的有限项近似左端。如果无法改变算式,则采取增加有效位数进行运算;在计算机上则采用双倍字长进行运算,但是增加计算时间和多占内存单位。
例11 在五位十进制计算机上,计算
x1x1
A52492i,其中0.1i0.9
i1把运算的数写成规格化形式
1000A0.5249210i
5由于计算机内计算时要对阶,若取
1000i1i0.9,对阶时
i0.000009105,在五位的计算机中表示为机器零,因此
A5.2492100.000009100.000009105555
5.249210(符号
表示机器中相等)。结果显然是不可靠的。这是由于运算中大数“吃掉”
小数
i0.9造成的。
299例12 求二次方程x(101)x100的根。
9解 利用因式分解容易求出此方程的两个根为x110,x21,但若
101(101)410x29929
用求根公式,则得
若用8位小数的计算机运算,由于对阶,有
1091109(101)410109这样求得x110,x20,结果显然是错误的。为避免这种情形出现,
也可采用改变计算公式的方法。如将式
9299
1091(1091)24109x22改变成
x2则有
2109
1091(1091)24109210x291
910109此结果是精确的。
第二章 插值法
sin0.320.314567,sin0.34
0.333487,sin0.360.352274用线性插值及拋物线插值计算sin0.3367的值,并估计截断误差。
例
1
已
给
解 由题意取
x00.32,y00.314567,x10.34,
y10.333487,x20.36,y20.352274
用线性插值计算,取x0.32及x0.34,由公式(2-4)得
01sin0.3367L1(0.3367)0.3367x00.3367x1 y0y1x0x1x1x00.330365其截断误差由(2-9)得
其中
M2R1(x)(xx0)(xx1)
2M2maxf(x)。因f(x)sinxx0xx1x0xx1,可取
M2maxsinxsinx10.3335,有
R1(0.3367)sin0.3367L1(0.3367)10.33350.01670.0033
250.9210用抛物插值计算sin0.3367。由公式(2-4)得
(xx1)(xx2) L2(x)y0(x0x1)(x0x2)(xx0)(xx2)(xx0)(xx1) y1y2(x1x0)(x1x2)(x2x0)(x2x1)有
sin(0.3367)L2(0.3367)0.330374
这个结果与6位有效数字的正弦函数表完全一样,这说明用二次插值精度已相当高了.其截断误差限由(2-9)得
M3R2(x)(xx0)(xx1)(xx2),
6f(x)cosx00.828,于是 其中Mmax3x0xx2R2(0.3367)sin0.3367L2(0.3367)0.17810例2.1 设f(x)x,并已知
6
x f(x) 解 构造均差表如下
2.0 1.414214 2.1 1.449138 2.2 1.483240 试用二次Newton插值多项式
N2(x)计算f(2.15)的近似值,并讨论其误差。
一阶均差
0.34924 0.34102 二阶均差
xk2.0 2.1 2.2 f(xk)1.414214 1.449138 1.483240 0.04110 利用Newton插值公式(2-12)有
N2(x)1.4142140.34924(x2.0)0.04110(x2.0)(x2.1)取x2.15,得N(2.15)1.466292。
2由于f在区间[2.0,2.2]上充分光滑,因此可以利用误差估计公式(2-11),注意
3(3)(3)到f(x),maxf(x)0.06629。
2(8xx)2.0x2.2从而得到
0.001maxf(x)N2(x)0.066292.0x2.2 430.552417103f(2.15)的真值为1.466288,因此得出
5R(2.15)0.410。由此看出,在较小区间上用式(1.10),可得到一个
(3)较好估计。
f(x)的函数表2-2,求4次牛顿插值多项式,并由此近似计算
f(0.596)。
例2 给出
首先根据给定函数表造出均差表。
表 2-2 0.40 0.55 0.65 0.80 0.90 1.05 三阶 0.19733 0.21300 0.22863 四阶 0.03134 0.03126 五阶 -0.00012 xkf(xk)0.41075 0.57815 0.69675 0.88811 1.02652 1.25382 一阶 1.11600 1.18600 1.27573 1.38410 1.51533 二阶 0.28000 0.35893 0.43348 0.52483 N4(x)作近似即可。
N4(x)0.410751.116(x0.4)从均差表看到4阶均差近似常数,故取4次插值多项式
0.28(x0.4)(x0.55)0.19733(x0.4)(x0.55)(x0.65) 0.03134(x0.4)(x0.55)(x0.65)(x0.8)于是
f(0.596)N4(0.596)0.63192,
截断误差
R4(x)f[x0,这说明截断误差很下,可忽略不计。
,x5]5(0.596)9
3.6310此例的截断误差估计中,5
f[x,x0,,x4]用
f[x0,,x5]0.00012近似。另一种方法是取x0.596,
,x4]的近似值,从由f(0.596)0.63192,可求得f[x,x,0而可得R(x)的近似。
4例2.4 已知ysinx的函数表如下,分别用牛顿向前、向后插值公式求
阶均差
sin0.57891的近似值。
x 0.4 sinx 0.38942 解 取
0.5 0.47943 0.6 0.56464 0.7 0.64422 h0.1。按表2.4计算得
yi 0.38942 0.47943 0.56464 0.64422 1 0.09001 0.08521 0.07958 x00.4,x10.5,x20.6.x30.7,有
一阶差分 二阶差分 -0.00480 -0.00563 三阶差分 -0.00083 1 t 1t(t1) 2t(t1)(t2) 3! t t(t1) 2t(t1)(t2) 3!Newton向前插值公式为
N3(x0th)0.389420.09001t
xx00.578910.4将t1.7891代入上式得
h0.1110.00480t(t1)0.00083t(t1)(t2) 26sin0.57891N3(0.57891)0.389420.090011.7891110.004801.78910.7891260.000831.78910.78910.2109
0.54711由式(2-26),误差为
(0.1)R(0.57891)1.78910.78914!(0.2109)(1.2109)sin2106Newton向后插值公式为
4
N3(x3th)0.644220.07958t
0.005630.00083t(t1)t(t1)(t2)23!xx3将t1.2109代入上式得
h1sin0.578910.644220.079581.21092!0.00563(1.2109)(0.2109)查表可得
sin0.578910.5471118。
10.00083(1.2109)3!(0.2109)0.78910.54711
如果取
x00.4,x10.5,x20.6,用二阶Newton向后插值公式,
则得
1N3(x2th)0.564640.08521t0.00480t(t1)2
xx20.2109代入上式,得 将thsin0.578910.564640.08521(0.2109)10.00480(0.2109)0.7891
20.54707其误差为
(0.1)3R(0.57891)0.21090.78911.78913!cos0.510
例
2.5
给
出
4f(x)cosx在xkkh,
k0,1,,6,h0.1处的函数值,试用4次等距节点插值公式计算f(0.048)及f(0.566)的近似值并估计误差。
解 构造差分表2.5。用牛顿向前插值公式(2-25)计算f(0.048)的近似值,取
x00.48,用表2.5上半部差分,x0.048,h0.1,th得
表 2.5
f(xk) f(f) 2f(2f) 3f(3f) 4f(4f) 5f(5f) 1.00000 0.99500 0.98007 0.95534 0.92106 0.87758 0.82534 -0.00500 -0.01493 -0.02473 -0.03428 -0.04348 -0.05224 -0.00993 -0.00980 -0.00955 -0.00920 -0.00876 0.00013 0.00025 0.00035 0.00044 0.00012 0.00010 0.00009 -0.00002 -0.00001 N4(0.048)1.000000.48(0.00500)(0.48)(0.481)1(0.00993)23!(0.48)(0.481)(0.482)(0.00013)1(0.48)(0.481)(0.482)4!(0.483)(0.00012)0.99885cos0.048误差估计由(2-26)可得
M5R4(0.048)t(t1)(t2)(t3)(t4)h5 5!1.5845107,其中Msin0.60.565.
5f(0.566)。用牛顿向后插值公式(4.12) 计算
xx6x0.566,x60.6,t0.34,用差分表2.5中下
h半部差分,得
N4(0.566)0.825340.340.052240.660.008760.000090.000441.662.6626240.84405于是
cos0.5660.84405,误差估计由(2-28)得
M5R4(0.566)t(t1)(t2)(t3)(t4)h5 5!1.7064107,M50.565.
2.6
求
满
足
例
其中
P(xj)f(xj)(j0,1,2)及
P(x1)f(x1)的插值多项式及余项表达式。
解 按插值条件,所求P(x)是一个次数不高于3的多项式,它的曲线过点(x0,f(x0)),(x1,f(x1)),(x2,f(x2)),故可设
P(x)N2(x)C(xx0)(xx1)(xx2)
其中
N2(x)f[x0]f[x0,x1](xx0)f[x0,x1,x2](xx0)(xx1)
C为待定常数。
由条件P(x)f(x)可确定常数C,通过计算可得
11f(x1)f[x0,x1](xx0)(x1x0)f[x0,x1,x2]C(x1x0)(x1x2)P(x)与f(x)的误差函数为
R(x)f(x)P(x)
R(xi)f(xi)P(xi)0 (i0,1,2)以及
R(x1)f(x1)p(x1)0,故可设
2R(x)k(x)(xx0)(xx1)(xx2)
其中k(x)为待定函数。为求k(x),引进辅助函数
2(t)f(t)P(t)k(x)(tx0)(tx1)(tx2) 显然(x)0 (j0,1,2)。且(x)0,(x)0,故
i1(4)(t)在(a.b)内有五个零点(二重根算两个)。反复应用罗尔定理,得(t)在(a.b)内至少有一个零点,故
(4)()f(4)()4!k(x)0
由
于
由此可得余项表达式为
()2R(x)(xx0)(xx1)(xx2)
4!式中位于x,x,x和x所界定的范围内。
012另一个典型例子是两点三次Hermite插值,插值节点为x及xkk1,插值多项式为H3(x),满足条件
fH3(xk)yk,H3(xk1)yk1, (4.6)
(xk)mk,H3(xk1)mk1H3采用构造基函数方法。假设我们能够构造出基函数
(4)j(x),j(x),jk,k1,满足条件
j(xi)ij,j(xi)0那么多项式
,i,jk,k1 (4.7) j(xi)ijj(xi)0,H3(x)k(x)ykk1(x)yk1k(x)mkk1(x)mk1
便是满足条件(4.6)的插值多项式。
余下的问题就是如何构造出插值基函数
j,j,jk,k1。由于
k(x)在xk1处函数值与导数值均为0,故它应含因子(xxk1)以设
2,因此可
xxk1k(x)[a(xxk)b]xkxk1由条件(4.7)知(x)1,(x)0,故
kkkkb1 2a0xkxk1由此有
2
xxkxxk1k(x)12xk1xkxkxk1同理
2
xxk1xxkk1(x)12xk1xkxk1xk2xxk1k(x)xxkxkxk12
xxkk1(x)xxk1xk1xk因此节点三次Hermite插值多项式为
2
xxkxxk1H3(x)12ykxk1xkxkxk1xxk1xxk12yk1xkxk1xk1xkxxk1(xxk)mkxkxk1xxk(xxk1)mk1xk1xk其插值余项为
2222
R(x)f(x)H3(x)例2.7 已知函数表
f
(4)()22(xx0)(xx1)4!j xj yj
求满足边界条件数。
0 27.7 4.1
1 28 4.3
2 29 4.1
3 30 3.0
y(27.7)3.0,y(30)4.0的三次样条插值函
解 我们采用三弯矩方程求解。由边界条件,所适用的方程组为
21M0d02Md1111 (2-58)
222M2d212M3d3y3y26y1y06),d3(y3其中d(y0)。
0h0h0h2h2计算果见下表
hj(j0,1,2),j,j (j1,2),dj(j0,1,2)的结
j 0 1 hj 0.30 1 j j dj 46.666 2 3 1 3 131 2 10 4.0002 1312.70000 217.4 将以上数据代入方程组(2-58),解得
M023.531,M10.395,M20.830,M39.115
将此解代入以弯矩为参数的样条分段表达式,得
13.07278(x28)314.843229(x28)30.21944(x27.7)14.31358(x27.7)x[27.7,28]30.06583(29x)4.23417(29x)3S(x)0.13833(x28)3.96167(x28)x[28,29]0.13833(30x)33.96167(30x)31.51917(x29)4.51917(x29)x[29,30] 例2.8 求满足下面函数表所给出的插值条件的自然样条函数,并算出
f(3),f(4.5)的近似值:
j xj yj 0 1 1 1 2 3 2 4 4 3 5 2 解 我们采用三弯矩方程求解。由边界条件,所适用的方程组为
其中
d02f00,d32f30。造差商表如下:
200d02Md1111 (2-59)
222M2d2020d3jx f(x) f[x,x] f[x,x,x] jjj1jj1jj10 1 2 1 2 4 1 3 4 2 12 12 3 5 2
2
56
h0x1x01,h1x2x12,h2x3x21h0h11122
1,2h0h1123h1h22131d16f[x0,x1,x2]6()3,
25d26f[x1,x2,x3]6()5
6代入方程组(2-59),解得
39M1,M2
44所以
117318(x1)8(x1), x[1,2)3172S(x)3(x2)(x2)(x2)3,x[2,4)
884935234(x4)(x4)(x4),x[4,5]488经计算得
17f(3)S(3)4.25,f(4.5)S(4.5)3.1406
4例2.9 已知函数表如下:
xi f(xi) 求
0.1 0.70010 0.2 0.40160 0.3 0.10810 0.4 -0.17440 0.5 -0.43750 f(x)在0.3与0.4之间的根x。
解 按距
f(x)0由近及远的顺序排列节点yk,并作如下均差表 yk 0.10810 k 0 1 2 3 4 xk 0.3 0.4 0.2 0.5 0.1 -0.35398 -0.34722 -0.35753 -0.35162 0.023032 0.039163 0.019794 -0.029564 -0.022148 0.012527 -0.17440 0.40160 -0.43750 0.70010 N2(y)x0f[y0,y1](yy0)f[y0,y1,y2](yy0)(yy1)于是
N2(y)0.30.35398(0.10810)0.023032(0.10810)0.17440
0.33831函数在0.3与0.4之间的零点为x0.33831。
注:1.当采用低阶插值函数时,按距f(x)0由近及远的顺序排列节点yk,可使插值误差极小化。
2.若选择所有的节点进行插值,由插值多项式的唯一性,与节点的排列顺序无关。
第三章 函数逼近与曲线拟合
例1
R与C的内积.设x,yR,x(x1,,xn)y(y1,,yn)T,则内积可定义为
ni1nnnT,
(x,y)xiyi (1.4)
由此导出向量2-范数为
x若给定实数
2(x,x)2xi i1ni0 (i1,,n),称{i}为权系数,则在Rn上可
定义加权内积为
(x,y)ixiyi
i1n (1.5)
相应的范数为
x22xii i1n不难验证(1.5)给出的
(x,y)
满足内积定义3.2的条件.当
i1 (i1,,n)时,(1.5)就是(1.4).
n如果x,yC,带权内积定义为
(x,y)ixiyi
其中
nC[a,b]上定义带权的内积,为此,我们先给出权函数的定义.
例2 C[a,b]上的内积.设f(x),g(x)C[a,b],(x)是[a,b]上给定的权函数,则可定义内积
也可以在
i仍为正实数序列,yi为yi的共轭.
i1(f(x),g(x))(x)f(x)g(x)dx
ab容易验证它满足内积定义的四条性质,由此内积导出的范数为
bf(x)2(f(x),f(x))(x)f2(x)dx a分别称为带权(x)的内积和范数,特别常用的是(x)1的情形,即
1212(f(x),g(x))f(x)g(x)dx
abb2f(x)2f(x)dxa12
2 曲线拟合的最小二乘法
例1 给定一组数据如下:
i xi yi 求
1 2 1.1 2 4 2.8 3 6 4.9 4 8 7.2 x,y的函数关系。
解 先作草图。如图2所示,这些点的分布接近一条直线,因此可设想
y为x的一次函数。设
ya1xa0 (2.1)
从图2不难看出,无论0选取0
a,a1取何值,直线都不可能同时过全部数据点。怎样
a,a1,才能使直线(2.1)“最好”地反映数据点的基本趋势?首先要建立
好的标准。
8 6 4 2 4 6 图2
a,a1已经确定,yi*a1xia0 (i1,2,3,4)为由近似函数求得的近似值,它与观测值yi之差
*iyiyiyia1xia0 (i1,2,3,4)
假设0称为残差。显然,残差的大小可作为衡量近似函数好坏的标准。常用的准则有以下三种:
(1)使残差的绝对值之和最小,即(2)使残差的最大绝对值最小,即
miniii; ;
minmaxi(3)使残差的平方和最小,即
mini2。
i准则(1)的提出很自然,也合理,但实际适用不方便。按准则(2)来求近似函数的方法称为函数的最佳一致逼近。按准则(3)确定参数,求得近似函数的方法称为最佳平方逼近,也称曲线拟合(或数据拟合)的最小二乘法。它的计算比较简便,是实践中常用的一种函数逼近方法。
例2 求数据表 i xi yi 1 -1 -0.2209 6 0.25 2.5645
2 -0.75 0.3295 7 0.5 3.1334
3 -0.5 0.8826 8 0.75 3.7601
24 -0.25 1.4329 9 1 4.2836
5 0 2.0003
的最小二乘二次拟合多项式。 解 二次拟合多项式为2组(2.3),可得
P(x)a0a1xa2x,将数据代入正则方程
9a003.75a218.172403.75a108.4842 3.75a02.7656a7.617302其解为0a2.0034,a12.2625,a20.0378,所以此数据组
的最小二乘二次拟合多项式为
P2(x)2.00342.2625x0.0378x例3 设一发射源的发射强度公式形如如下表
2
II0e0.5 1.34 t,现测得
I与t的数据
0.8 0.56 ti Ii 0.2 3.16 0.3 2.38 0.4 1.75 0.6 1.00 0.7 0.74 解 先求数据表
ti lnIi 0.2 1.1506 0.3 0.8671 0.4 0.5596 0.5 0.2927 0.6 0.0000 0.7 -0.3011 0.8 -0.5798 的最小拟合直线。将此表数据代入正则方程组(2.3),可得
7a03.5a11.9891 3.5a02.03a10.1858其解为a01.73,a12.89。所以
I0e5.64,a12.89
2.89t发射强度公式近似为I5.64e。
例4 在某化学反应里,根据实验所得生成物的浓度与时间关系如下表,要求浓度
a0f(t)与时间t的拟合曲线yy(t)。
1 2 3 4 时间t(分) 34.0 5.4 8.0 3.8 浓度y10 10
10.2
11 10.32
12 10.42
13 10.5
5 9.22 14 10.55
6 9.5 15 10.58
7 9.7 8 9.8 16 10.60
9 10.0
解 将数据描在坐标纸上,如图3。我们看到开始时浓度增加较快,后来增长逐渐减弱,当
于某个常数,故有一水平渐近线。另外,当合曲线
t时y趣
10 8 6 4 2 y103 t0时,反应还未开始,浓
yy(t)是双曲型
ty
a1a0t度应为零。根据这些特点,可设想拟
2 4 6 8 10 12 14 16 t
它与给定数据的规律大致符合。上述模型是非线性参数问题,可以通过变量的变换
图3
11z,x
yt变为线性参数的数学模型
(xi,zi),i1,2,za0a1x拟合数据
,16。其中xi,zi分别由原始数据ti,yi根据变换
公式计算出来。我们建立相应的法方程组
316a3.38073a1.83721001 33.38073a01.58435a10.5288610解此方程组得
a080.6621,a1161.6822
从而得拟合曲线
tyy1(t)
80.6621t161.6822求数据组的最小二乘拟合函数的步骤: (1)由给定数据确定近似函数的表达式,一般可通过描点观察或经验估计得到; (2)按最小二乘原则确定表达式的参数,即由正则方程组,求解得参数。值得注意的是:一些简单的非线性最小二乘问题通常先作变换将问题转化为线性最小二乘问题求解。
评论:(1)先作变量代换对新变量求最小二乘拟合函数,然后再还原所得近似函数与直接对原变量按最小二乘原则求得拟合函数是不同的。但由于实际计算时,人们主要关心的是问题的简化,就把两者较小的差别忽略了。
(2)以上我们是通过描点观察或经验估计来确定拟合函数的形式,更一般的拟合函数的选择问题,请参考冯康所编著的《数值分析》。 (3)当
n3时,最小二乘法的正则方程组一般是病态的,n愈大病态情形
f(x)与g(x)的内积为
mi1更严重。为了避免求解病态方程组,我们必须引入点集上的正交函数族。
对离散和连续两种情形,通过引进内积与范数的概念,将它们统一起来。在离散情形,我们定义函数
(j,k)ij(xi)k(xi)
在连续情形,则定义函数
f(x)与g(x)的内积为
ba(f,g)(x)f(x)g(x)dx
容易验证以上两种均定义了内积空间。
例5 利用正交函数族求例2所给数据表的最小二乘二次拟合多项式。 解 按式(2.9)和(2.10)计算,得
(x0,0)80(x)1, 1xi(0,0)i0(x1,1)831(x)x, 2xi(1,1)i08(1,1)1xi2(0,0)i0810,i088xi02i0,
3.7510.41667,9i02(x)x20.41667.由式(2.7),得
8(y,)*0a0yi(0,0)i08(y,)*1a1yixi(1,1)i0818.172312.019149i08.4842x2.26253.75i02i88(y,2)a(2,2)*22y(xii0.41667)i0822(x0.41667)ii00.0378
得最小二乘二次拟合多项式为
**0011*(x)a(x)a(x)a22(x)2.019142.2625x0.0378(x20.41667) 2.00342.2625x0.0378x2性质1(正交性)
0, nm11Pn(x)Pm(x)dx2,nm
2n12例8 设f(x)1x,求[0,1]上的一次最佳平方逼近多项式. 解这是(x)1的情形.取0(x)1,1(x)x, span{1,x},于是
111(0,0)1dx1,(0,1)xdx,002112(1,1)xdx,03
d0(f,0)得方程组
101x2dx1.147,d1(f,1)x1x2dx0.60901112a01.1471213a0.609 1解出a00.934,a10.426。故
S1*(x)0.9340.426x
平方误差
22f(x),f(x)S1*(x),f(x)(1x2)dx0.426d10.934d00.002601
最大误差
maxf(x)S(x)0x1*max1x20.9340.426x
0x10.066令
h(x)1x0.9340.426x,则
h(x)x221x10.4262,由h(x)0,知x0.426h(0)0.066,h(1)0.054,可得0.066。
用
0.426
结合
{1,x,,x}做基,求最佳平方逼近多项式,当n较大时,Hilbert
n系数矩阵(5.9)是高度病态的,因此直接求解法方程是相当困难的,通常是采用正交多项式做基。
f(x)ex在[1,1]上的三次最佳平方逼近多形式
解 先计算(f(x),Pk(x)) (k0,1,2,3)
例9 求
1(f(x),P0(x))edxe2.35041e
1xx1(f(x),P(x))xedx2e0.7358111321x(f(x),P2(x))xedx0.1431
122153x2(f(x),P3(x))xxedx0.02013
1221于是
*a0(f(x),P0(x))21.1752,*a13(f(x),P1(x))21.1036, *a25(f(x),P2(x))20.3578,a7(f(x),P3(x))20.07046
因此
*S3(x)0.99630.9979x0.5367x20.1761x3
*3均方误差
3(x)2eS(x)1x*323
2*2e2xdxak0.00841k02k1最大误差
3(x)*exS3(x)0.0112
例12 给出有理函数 42x45x3381x21353x1511 R43(x)32x21x157x409用辗转相除法将它化为连分式,并写成紧凑形。
解 用辗转相除可逐步得到
4x264x284R43(x)2x33x21x2157x40942x36(x9)x52x16x7142x36x58 x7x94682x3
x5x7x91kxx展成连分式. 例13 将级数ek0k!利用定理15,得
11xkexkk!k!xk0k01111112341x2x6x24x11x24x436x6112233411xx2x2x6x6x24x1xx4x36x1x1x22x66x241xx2x3xkx1x1x2x3x4xk1
例14考虑函数
ln(1x)的逼近问题。它的Taylor展开式为
kxln(1x)(1)k1,x(1,1] (6.6)
kk1n取部分和
kxTn(x)(1)k1ln(1x)
kk1 另一方面,若对(6.6)式用辗转相除或者定理15可得到ln(1x)的一种连分
式展开
x1x1x2x22xln(1x)12345若取(6.7)式的2,4,6,8项,则可分别得到ln(1x)的以下有理逼近
(6.7)
2x6x3xR11,R222x66xx260x60x211x3R33
236090x36x3x420x630x2260x325x4R44420840x540x2120x36x4若采用同样多项的泰勒展开部分和S2n(x)逼近ln(1x),并计算ln2的值S2n(x)及Rnn(x),计算结果见表3.3,R44(1)的精度比S8(1)高出
10万倍,而它们的计算量是相当的,这说明有理逼近好得多,开展某些函数的有理逼近时有必要的。
表3.3 计算结果
2n1 S2n(1) Sln2S2n(1) 1 2 3 4 0.5 0.58 0.617 0.634 0.19 0.11 0.076 0.058 Rnn(1) 0.667 0.692 31 0.693 122 0.693 146 42 Rln2Rnn(1) 0.026 0.000 84 0.000 025 0.000 000 76 f(x)ln(1x)的帕德逼近R(2,2)及R(3,3).
解 由ln(1x)的泰勒展开
121314ln(1x)xxxx
234得c00,c11,c212,c313,c414,。当nm2时,由(6.14)得
例14 求
11b2b123 1b1b121342求得1b1,b216,再由(6.12)得
a00,a11,a212
于是得
12xx26x3x2 R22(x)21266xx1xx6当nm3时,由(6.14)得
111b32b23b141111b3b2b1
345211113b34b25b16331,b2,b3解得b1.代入(6.10)得a00, 252011a11,a21,a3.于是得
601132xxx2360x60x11x60 R33(x)23332136090x36x3x1xxx2520帕德逼近Rnm(x)的误差估计.由(6.12)及(6.14)求得Pn(x),Qm(x)的
,an及b0,b1,,bm,代入则得 数a0,a1,mlnm1f(x)Qm(x)Pn(x)xbkcnm1lkx
l0k0将Qm(x)除上式两端,即得
f(x)Rnm(x)xnm1rlxlQm(x)
l0其中l当
rbkcnm1lk.
k0mx1时可得误差近似表达式
f(x)Rnm(x)r0xnm1,r0bkcnm1k
k0m第4章 数值积分与数值微分
例1 判断求积公式
11f(x)dx9[5f(0.6)8f(0)5f(0.6)]
1的代数精度。
解 记
I(f)f(x)dx111I(f)[5f(0.6)8f(0)5f(0.6)]9因为
1I(1)dx2,I(1)(585)2191I(x)xdx=0111I(x)[50.6805(0.6)]091222I(x)xdx=13122I(x)(50.68050.6)93I(x)x3dx=01312I(x)xdx=15124I(x)(50.36050.36)95414 1I(x3)[5(0.6)305(0.6)3]09I(x)xdx=015151I(x)[5(0.6)505(0.6)5]091266I(x)xdx=1712 633I(x)[5(0.6)05(0.6)]0.24975所以求积公式具有5次代数精度。
例2给定形如
10f(x)dxA0f(0)A1f(1)B0f(0)的求积公
式,试确定系数A0,A1,B0,使公式具有尽可能高的代数精度。
2解 求积公式中有三个参数,因此至少对f(x) 1,x,x应精确成立,即 当f(x)1时,得
当
f(x)x时,得
A0A11dx1
01当
f(x)x21A1B0xdx
021时,得
121A1xdx
03211,A1,B0,于是有 解得A033612110f(x)dx3f(0)3f(1)6f(0)
111333当f(x)x时,xdx,而上式右端为,故公式对f(x)x034不精确成立,其代数精度为2。
例2 根据函数表4-1,用复化梯形公式和复化辛普森公式计算
sinxIdx的近似值,并估计误差。
0x解 将积分区间[0,1]划分成8等分,应用复化梯形公式有
71kI[f(0)f(1)2f()]0.9456909
168k1而如果将积分区间[0,1]划分成4等
1分,应用复化辛普森公式得
341k2k1I[f(0)f(1)2f()4f()] 2448k1k10.9460832与准确值I0.9460831比较,显然用分,应用复化辛普森公式得
341k2kI[f(0)f(1)2f()4f(2448k1k10.9460832
与准确值
I0.9460831比较,显然用复化Simpson公式计算精度较高。
为了利用余项公式估计误差,要求
h
sinxf(x)x的高阶导数,由于
1sinxf(x)cos(xt)dt0x
所以有
1kf(k)1dkk(x)cos(xt)dttcos(xtk0dx02
于是
maxf0x1(k)k(x)maxtcos(xt)dt00x1211ktdt0k11k
由复化梯形误差公式(3.3)得
22h111R8(f)maxf(x)0.00120x11283
由复化辛普森误差公式(3.6)得
bah(4)R4(f)maxf(x)0x1180211160.2711018085 例3 若用复化求积分公式计算积分
1x044Iedx
的近似值,要求计算结果有四位有效数字,
n应取多
大?
解 因为当
0x1时,有
0.3e1ex1
于是
0.3exdx101
要求计算结果有四位有效数字,即要求误差不超过
1410。2又因为
(k)f(x)ex1 x[0,1]2
由式(3.3)得
12111RThf()1041212n2
即
1n10462,开方得
n40.8。因此若用复化梯形公式求积分,
n应等
于41才能达到精度。
若用复化Simpson公
式,由式(3.6)
1h(4)11RSf()180218016n
即。
故
得取
44n1.62n2,即
n2的复
合Simpson公式计算即可达到精度要求,此时区间
[0,1]实际
上应分为4等分,只需计算5个函数值,而复合梯形公式则需计算43个函数值,工作量相差8倍之多。
4龙贝格求积
公式 4.1梯形公式的逐次分半算法
如前所述,复化求积公式的截断误差随着步长的缩小而减少,甚至由给定的
精度可以预先确定步长。但由于误差估计式中出现高阶导数,使问题变得十分困难。实际计算时,我们总是从某个步长出发计算近似值,若精度不满足要求,可将步长逐次分半以提高近似值,直到求得满足精度要求的近似值。
设将区间
[a,b]分为n等分,共有n1个分
点,如果将求积区间再二分一次,则分点增至
2n1个,我们将二分前后两个积分值联系起来加以考虑。注意到每个子区间
[xk,xk1]经过二分只增加了一个分点
xk121(xkxk1)2,用复化梯形公式求得该子区间上的积分值为
hf(xk)2f(xk12)f(xk1)4
注意,这里
bahn代表二分前的步长,将每个子区间上的积分值相加得
hn1hn1T2nf(xk)f(xk1)f(xk124k02k0
即
1hn1T2nTnf(xk12)22k0 (4.1) 这表明,将步长由
h缩小
hT2n为时,2等于Tn的一
半再加新增加节点处的函数值乘以当前步
长。 由复合梯形误差公式
h3n1ITnf(k),k(xk,xk1)12k0
知
n1ITn11blim2limhf(k)f(h0h12h0k012a1f(b)f(a)12
所以当
n充
2分大时,有
hITnf(b)f(a)121ba12n
及
2f(b)f(a)21baIT2n122n
得
f(b)f(a)IT2n1ITn4
有
1IT2n(T2nTn)3 (4.2)
这说明,若把
T2n作为积分值I的近
似值,误差大约
为
(T2nTn)3。
算法4.1 1.输入
a,b,f(x),
2.置
bam1,h,T0h[f(a)f(b)]23.置
F0,对
k1,2,,2m1
FFf(a(2k1)h) 4
.
1TT0hF25.若
TT03,
输
出
IT,停
机;否则
hm1m,h,TT02,转3。
4.2 李查逊
(Richardson)外推法 假设用某种数值方法求量
I的近似值,
一般地,近似值是步长
h的函数,记为
I1(h),相应
的误差为
II1(h)1hp12hp2 (4.3)
其
中
khpkpki(i1,2,),0p1p2是与h无关
的常数。若用
h则得
代替
(4.2)中的
h,
k(h)pkkhpkpkII1(h)1(h)p11h (4.4) 式(4.4)减去式(4.3)乘以p1,得
p1p1II1(h)[II1(h)]2(p2p1)hp23(p3p1)hp3
p1取
k(pkp1)hpk
满足1,以
p1除
1上式两端,得
I1(h)p1I1(h)p3p2Ibhbh23p11 (4.5)
其中
pip1p1bkhpkbi2()(1)(i2,3,)仍与h无关。
令
I1(h)p1I1(h)I2(h)1p1
由式(4.5),以
I2(h)作为I的近似值,
其误差至少为
p2,
O(h)因此I2(h)收敛于I的
速
度
比
I1(h)快。不
断重复以上作法,可以得到一个函数序列
Im1(h)pm1Im1(h)Im(h),m2,3,pm11 (4.6)
I(h)近似I,误差
以m为
IIm(h)O(h)。随着m的
增大,收敛速度越来越快,这就是Richardson外推法。
4.3 龙贝格求积公式
由前面知道,复化梯形公式的截断误差
为
pmO(h2)。进
一步分析,我们有如下欧拉—麦克劳林(Euler-Maclaurin)公式:
定理4 设
f(x)C[a,b],则有
IT(h)1h2h
其中系数
24kh2kk(k1,2,)与h无关。
把李查逊
外推法与欧拉—麦克劳林公式相结合,可以得到求积公式的外推算法。特别地,在外推算法式(4.6)中,取
1,pk2k2,
并
记
T0(h)T(h),则有
4Tm1(h2)Tm1(h)Tm(h),m1,2,m41 (4.7)
经
过
mm(m1,2,)次加速后,余项便取下列形式:
Tm(h)I1h (4.8) 上述处理方法通常称为李查逊(Richardson)外推加速方法。
为研究Romberg求积方法的机器实现,引入记号:
2(m1)2h2(m2)以T0二分
(k)表示
k次后
(k)求得的梯形值,且以Tm表示序列
(k)T0的m次加速值,
则依以上递推公式得到
m(k1)(k)4TT(k)m1m1Tm(h),k0,1,2,m41
称为龙贝格求积算法。
Romberg公式的计算过程见下表4-2
表4-2
k
表4-1
k xk sinxkf(xk)xk k xk sinxkf(xk)xk 0 0 1 1 18 0.9973978 2 14 0.9896158 3 38 0.9767267 5 58 0.9361556 6 34 0.9088516 7 78 0.8771925 8 1 0.8414709 4 120.9588510 0 1 2 T0(k) T1(k) T2(k) T3(k) T4(k) ba T0(0) ba(1)(0) T0 T1 2 3 4 ba(2)(1) T0 T1 4ba(3)(2) T0 T1 8ba(4)(3) T0 T1 16 1T2(0) T2(1) T2(2) (0)T 3 T(0) (1)T 34
例4 用Romberg算法计算积分Ix32dx。
0解 利用逐次分半算法(4.1)和Romberg算法(4.7),计算结果见表4-3。
T(0)0T0(1)T(2)0T0(3)1[f(0)f(1)]0.50000021(0)11T0f()0.4267772221(1)0.513 T0[f()f()]0.40701822441(2)0.251357T0[f()f()f()f()]2288880.401812 表4-3
k 0 1 2 3 4 5 T0(k)
0.500000 0.426777 0.407018 0.401812 0.400463 0.400118 1T1(k)
0.402369 0.400432 0.400077 0.400014 0.400002 T2(k)
0.400302 0.400054 0.400009 0.400002 T3(k)
0.400050 0.400009 0.400002 T4(k)
0.400009 0.400002 T5(k)
0.400002 1例5计算积分
0.2x2dx,若用复合辛普森法(3.5)式计算结果见表4-6(此处hn即为公式中的h,积分精确值为4)
表4-6 计算结果 n hn 1 2 3 4 5
0.8 0.4 0.2 0.1 0.05
Sn 4.948148 4.187037 4.024218 4.002164 4.000154
SnSn1 0.761111 0.162819 0.022054 0.002010
1 1计算到SnSn10.02为止,此时I(f)0.2x2dx的近似值S5[0.2,1]4.000154,若再用龙贝格法则得到
S5S4RS[0.2,1]S54.00002
15整个计算是将[0.2,1]做32等分,即需要计算33个f(x)的值。现在若用自
适
应
积
分
法
,
当
h20.4时有
S2[0.2,0.6]3.51851852,S2[0.6,1]0.66851852,由于
S2S2[0.2,1]S2[0.2,0.6]S2[0.6,1]4.187037,
S1S20.761111
h2大于允许误差0.02,故要对[0.2,0.6]及[0.6,1]两区间再用h3做积
2分。先计算的积分[0.6,1]S3[0.6,0.8]0.41678477,S3[0.8,1]0.25002572。
由于
S2[0.6,1](S3[0.6,0.8]S3[0.8,1])0.668518520.666810490.001708小于允许误差0.01,故在[0.6,1]区间的积分值为
1RS[0.6,1]0.66681049(0.666810490.66851852) 150.66669662下面再计算子区间[0.2,0.6]的积分,其中
h2S2[0.2,0.6]3.51851852,而对h3可求得
2S3[0.2,0.4]2.52314815,S3[0.4,0.6]0.83425926
由于
S2[0.2,0.6](S3[0.2,0.4]S3[0.4,0.6])0.161111
大于允许误差0.01,因此还要分别计算[0.2,0.4]及[0.4,0.6]的积分,当
h3h4时可求得
2S4[0.4,0.5]0.50005144,S4[0.5,0.6]0.33334864
而
S3[0.4,0.6](S4[0.4,0.5]S4[0.5,0.6])0.000859
小于允许误差0.005,故可得[0.4,0.6]的积分近似
RS[0.4,0.6]0.8333428
而对区间[0.2,0.4],其误差S3[0.2,0.4]S4[0.2,0.4]不小于0.005,
故还要分别计算
[0.3,0.4]的积分,其中
h4S4[0.3,0.4]0.83356954,当h5可求得
2S5[0.3,0.35]0.47620166,S5[0.35,0.4]0.35714758
及
[0.2,0.3]且
S4[0.3,0.4](S5[0.3,0.35]S5[0.35,0.4])0.000220
小于允许误差0.0025,故有
RS[0.3,0.4]0.83333492
最后子区间[0.2,0.3]的积分可检验出它的误差小于0.0025,且可得
RS[0.2,0.3]1.666686
将以上各区间的积分近似值相加可得
I(f)RS[0.2,0.3]RS[0.3,0.4]RS[0.4,0.6]RS[0.6,1]4.00005957
它一共只需计算17个例9 确定求积公式
1f(x)的值。
的系数A0,0xf(x)dxA0f(x0)A1f(x1)
A1及节点x0,x1,使它具有最高代数精度。
解 具有最高代数精度的求积公式是高斯型求积公式,其节点为关于权函数
(x)x的正交多项式零点x0及x1,设(x)(xx0)(xx1) x2bxc,由正交性知(x)与1及x带权正交,即得
于是得
10x(x)dx0,10xx(x)dx0
222222bc0及bc0 753975105,c,即 由此解得b921105(x)xx
921令(x)0,则得x00.289949,x10.821162
2由于两个节点的高斯型求积公式具有3次代数精确度,故公式对
f(x)1,x,精确成立,即
当f(x)1时
A0A1当
10f(x)x时
12xdx
32A0x0A1x1xxdx
05由此解出A00.277556,A10.389111
,n)上下面讨论高斯求积公式的余项。设在节点xk(k0,1,f(x)的2n1次Hermite插值多项式为H(x),即
n1(xk)f(xk),k0,1,,n H2n1(xk)f(xk),H2由Hermite余项公式
f(2n2()2f(x)H(x)n1(x)
(2n2)!有
R(f)(x)f(x)dxAkf(xk)ak0nbn(x)f(x)dxAkH(xk)ak0bb(x)f(x)dx(x)H(x)dx
aab(x)f(x)H(x)dxabf(2n2()2(x)n1(x)dxa(2n2)!例10 用4点(n3)的高斯-勒让德求积公式计算
b解 先将区间[0,2Ixcosxdx
202]化为[1,1],由(6.13)式有
1I()(1t)cos(1t)dt
144根据表4-6中n3的节点及系数值可求得
32IAkf(xk)0.467402 (准确值I0.467401例11 用5点(nk03)
5)的高斯-切比雪夫求积公式计算积分
1exIdx
211xx(2n)(x)ex,当n5时由公式(6.14)可得 解 这里f(x)e,fIe5k15cos2k1103.977463
9由余项(6.16)式可估计误差
R[f]210!9e4.610
例12 用高斯-拉盖尔求积公式计算
的近似值。 解 取n0exsinxdx
1,查表得
x00.58578644,x13.41421356.A00.85355339,A10.14644661故
,
若取n0exsinxdxA0sinx0A1sinx10.43246
02,可得exsinxdx0.49603;
若取n5,可得exsinxdx0.50005。
0而准确值确。
0exsinxdx0.5,它表明取n5的求积公式已相当精
区间为(,),权函数
(x)e2x2的正交多项式为埃尔米特多项式
ndnxx2Hn(x)(1)ee,n0,1,ndx,
对应的高斯型求积公式
exf(x)dxAkf(xk)
k02n称为高斯-埃尔米特求积公式。节点xk 特多项式的零点,求积系数为
(k0,1,,n)为n1次埃尔米
Ak2(n1)!n11(xk)][Hn2高斯-埃尔米特求积公式的节点和系数可见表4-9
表4-9 高斯-埃尔米特求积公式的节点和系数 n 0 1 2 3 4 xk 0 ±0.707106781 ±1.2247448710 ±1.650680124 ±0.524647623 ±2.020182871 ±0.9585724650 ±2.350604974 ±1.335849074 ±0.436077412 ±2.651961357 ±1.673551629 ±0.8162878830 Ak 1.772453851 0.886226926 0.295408975 1.181635901 0.081312835 0.804914090 0.019953242 0.393619323 0.945308721 0.004530010 0.157067320 0.724629595 0.0009717812 0.0545155828 0.425607253 0.810264618 5 6 公式(6.20)的余项为
(n1)!(2n2)R[f]n1f(),(,) (6.22)
2(2n2)!例13 用两个节点的高斯-埃尔米特求积公式(6.20)计算积分解 先求节点
ex2x2dx
x0,x1,由
H2(x)4x22,其零点为
22x0,x1,由(6.21)式可求得
22A0A1于是
x222
2222exdx2[(2)(2)]2
2高斯型求积公式代数精度为3,故对f(x)x求积公式精确成立,从而得
2ex2xdx22
例14 用复合辛普森公式求二重积分
的近似值。 解 取N1.51.41.0ln(x2y)dydx
2,M1,即h0.3,k0.5得
21.51.41.0ln(x2y)dydx22k2[ln(x2)dx4ln(x2.5)dxln(x3)dx]1.41.461.40.50.3[ln3.44(ln3.55ln3.85)2ln3.7ln4]660.51.2[ln3.94(ln4.05ln4.35)2ln4.2ln4.5]660.50.3[ln4.44(ln4.55ln4.85)2ln4.7ln5]660.42955244
此积分的真值是0.4295545265(保留小数后10位) 对二重积分(7.1)式也可用其他求积公式计算,特别是为了减小函数值计算可采用高斯求积公式。
2的高斯求积公式求例14中的二重积分
解 先将区域R{(x,y)|1.4x2,1.0y1.5}变换为区域R{(u,v)|1u,v1},其中
11u(2x3.4),v(2y2.5)
0.60.5或等价于
例15 用nx0.3u1.7,y0.25v1.25
于是有
I对于u,v取n2.01.41.51.0ln(x2y)dydx1110.0751
ln(0.3u0.5v4.2)dvdu2时的高斯求积公式节点及系数,即
u0v00.774596662,u1v1058
u2v20.774596662,A0A2,A199用n2的高斯求积公式计算积分I可得
I0.075111221ln(0.3u0.5v4.2)dvdu0.075AiAjln(0.3ui0.5vj4.2)
i0j00.42955453这里只需计算9个函数值。而例14中需求15个函数值,这里的精度也比例14高,达到8位有效数字。
对于非矩形区域的二重积分,只要化为累次积分,也可类似矩形域情形求得其近似值,如二重积分
I用辛普森公式可转化为
bbad(x)c(x)f(x,y)dydx
k(x)I[f(x,c(x))4f(x,c(x)k(x))f(x,d(x))]dx
a3d(x)c(x)其中k(x),然后再对每个积分使用辛普森公式,则可求得
2积分I的近似值。
例0.075如,用中点公式求f(x)x在x2处的一阶导数
2h2h G(h)2h设取4位数字计算,结果见表4-10(导数的准确值f(2)0.353553)
表4-10 计算结果
h G(h) 1 0.5 0.1 0.3660 0.3564 0.3535 h 0.05 0.01 0.005 G(h) 0.3530 0.3500 0.3500 h 0.001 0.0005 0.0001 G(h) 0.3500 0.3000 0.3000 从表4-10中看到h0.1的逼近效果最好,如果进一步缩小步长,则逼近效
果反而越差。这是因为当f(ah)及f(ah)分别有舍入误差1和2。若令max{1,2},则计算f(a)的舍入误差上界为
12(f(a))f(a)G(a)
2hh表明h越小,舍入误差
(f(a))越大,故它是病态的。用中点公式(8.1)计算
f(a)的误差上界为
h2E(h)M
6h要使误差E(h)最小,步长h应使E(h)0,由
hE(h)M20
3h33可得h3/M,如果h3/M,有E(h)0;如果h33/M,有E(h)0。由此得出h33/M时E(h)最
35/2小。当, f(x)x时,f(x)x8135/2Mmaxx0.07536。假定104,则
1.9x2.18241.510h30.125。与表4-10基本相符。
0.075362x例16 用外推法计算f(x)xe在x0.5的导数。
11(h)(h)111[(h)2e2(h)2e2],当解 令G(h)2h22h0.1,0.05,0.025时,由外推法表4-11可算得
G(0.1)0.4516049081,G(0.05)0.4540761693G1(h)0.4548999231hG(0.025)0.4546926288G1()0.4548981152G20.4548979942
f(0.5)的精确值0.454897994,可见当h0.025时用中点微分公式
只有3位有效数字,外推一次达到5位有效数字,外推两次达到9位有效数字。
第五章 线性代数方程组的数值解法
例1 解方程组
102x1x21 x1x22(1) 求精确解; (2) 在
10,n2的浮点机上用Gauss消去法求解。
11,x21。 解 (1) 容易求得方程组的精确解为x119999(2) 在所给浮点机上原方程组为
1110.1010x0.1010x0.101012 1110.1010x10.1010x20.2010由于
m210.10101(0.10101)0.10103
消去第二式的x1,得
(0.101010.10103)x20.201010.10103
对阶,出现大数“吃掉”小数,结果有
33 21解得2,回代第一式得1。
与精确解相比较,已无精确度可言。产生不准确的原因是主元素太小,致使
0.1010x0.1010x0x0.1010m21很大。改变上述状况的办法是将方程组的一、二两式对换,得
0.1010x10.1010x20.2010 1110.1010x10.1010x20.1010然后再使用Gauss消去法,此时
12111111m0.1010(0.1010)0.1010
(0.10100.1010)x20.101010.20101
11于是得近似解x10.1010,x20.1010。
此例表明,高斯消去法解方程组时,小主元可能带来严重的后果,因此应尽量避免小主元的出现;另一方面,通过对换方程组中方程的次序或改动变量次序,选择绝对值大的元素做主元,可减少舍入误差,提高计算精度。
11
例2 求矩阵
223A477
245的三角分解。
解 按式(3.2)
u11a112,u12a122,u13a133l21a21u11422,l31a31u11221u22a22l21u127223u23a23l21u137231l32(a32l31u12)u22[4(1)2]32u33a33(l31u13l32u23)5[(1)321]6所以
100223A210031
121006紧凑格式:
(a11) u11 (a12) u12 (a13) u13 (a21) l21 (a22) u22 (a23) u23
… … … …
(a1n) u1n (a2n) u2n
(a31) l31 (a32) l32 (a33) u33
(a3n) u3n
(an1) ln1 (an2) ln2 (an3) ln3
例2中矩阵
(ann) unn
A的三角分解按紧凑格式计算,结果见下表
(2) 2
(3) 3
(2) 2
4(7) 7223 (7) 7231 (4) 2
212(2) 1 (4) [4(1)2]2 (5) 521(1)36 32Axb的系数矩阵已进行三角分解,ALU,则解
方程组Axb等价于求解两个三角形方程组Lyb,Uxy。
第一步:先求解下三角方程组Lyb
如果线性方程组
1lLy21ln1得解
1lnn1y1b1 1ynbny1b1k1 ykbklkjyj, k2,3,,nj1第二步:再求解上三角方程组Uxy
u1nx1y1u11u12u22u2nx2y2 unnxnyn得解
xnynunnn1x(yux), kn1,n2,kkkjjukkjk1例3 用选主元的直接三角分解法解方程组Axb,其中
,1
113A246,b(1,4,1)T,x(x1,x2,x3)T
492解(1) 对A作选主元的LU分解,中间结果冲掉A相应位置元素,数组
Ip(3)记录主行号。
第一步分解:a11S11,a21S22,a31S34,因为S3maxSi,于是有
1i3492492r1r3分解A2461246
113141315第二步分解:a22S2,a23S3,因
24S3maxSi,故有
2i3为
41r2r3A4124921分解1341462492第三步155分解 442124259542525 26于是
1L141492,U5452
122514由选主元过程,Ip(1)3,Ip(2)3,Ip(3)3。 001PI23I13100,Pb(1,1,4)T010 (2) 解LyPb,得y(1,34,3210)T;解Uxy,x(0.8,1,2.4)T
例6 用改进平方根法求解方程组 解 容易验证,系数矩阵
121A250
1014为对称正定阵。按式(4.6)计算分解式,得
d1a111t21a212,t31a311,l21t21d12,l31t31d11 d2a22t21l215221
t32a32t31l210122l32t32d22 d3a33t31l31t32l321411(2)(2)9按式(5.7)计算方程组的解,得
得
y1b14,y2b2l21y17241y3b3l31y1l32y21514(2)(1)9 x3y3d31,x2y2d2l32x31(2)11x1y1d1l21x2l31x342111所以方程组的解为1
x1,x21,x31。
例6 容易看出,方程组
x1x22 x11.00001x22的解为x12,x20。而方程组
x1x22 x11.00001x22.00001的解为x11,x21。
例7 计算例6方程组系数矩阵的条件数。 解 系数矩阵为
11A
51110其逆矩阵为
51101A51010 510
5于是有
cond(A)AA14105(2105)(21051)条件数很大,所以方程组是“病态”的。
例8 已知希尔伯特(Hilbert)矩阵
11Hn21n计算
12131n11n1n1
12n1H3的条件数。
1解 Hn的逆矩阵Hnaij的元素是
nn(1)ij(ni1)!(nj1)!(ij1)(i1)!(j1)!(ni)!(nj)!
2aij所以
, 1i,jn3630112139H3121314,H3136192180
13141530180180(1)计算H3的件数cond(H3)。
H3所以
116,H31408
cond(H3)748
同样,可算得
cond(H6)2.610当
7,cond(H7)9.85108
n愈大时,Hn病态愈严重。
(2)考虑方程组
TH3x(116,1312,4760)b
的扰动方程(H3及b的元素取3位有效数字)
1.000.5000.333x1x11.830.5000.3330.250xx1.08
220.3330.2500.20xx0.78333简记为
(H3H3)(xx)bb
方程
H3xb与它的扰动方程的解分别为:
x(1,1,1)T,
xx(1.089512538,0.487967062,1.491002798)T
于是
x(0.0895,0.5120,0.4910)而
T,
xx51.2%
00.0003300.00333,b0.00333
H300.0003300.000330.0003300有
H3所以
0.00033,b0.00333
H3H3b0.003330.000330.02%,0.182%116b116
这表明
H3与b的相对误差不超过0.3%,而引起解的相对误差超过
450%。例9 设
4x110110x 1122简记为Axb,计算cond(A)。
解
4110411101A,A4
1011111411041A110,A4
101有
cond(A)AA1(110)410
410142当用列主元消去法求解时(计算到三位有效数字)
1104104 (A|b)4401010于是得到很坏的结果:
x21,x10。
41100111取D,考察等价方程组DAxDb的系数矩101阵ADA的条件数。
11041111A ,A441101101144,大大改善了系数矩阵的条件数。 则cond(A)4110再用列主元消去法求解
Ax=b,得到
10411112112(A|b) 4
1101111210从而得到较好的计算解:
x21,x11。
例1 用直接三角分解法解方程组
7.0006.990x134.974.0004.000 x20.00 2解 因方程组的系数矩阵的两行(列)几乎线性相关,所以方程组可能是病态的。事实上
cond(A)A1方程组的确是病态的。 利用迭代改善法: (1)实现A=A275.1413.993849
LU分解得
07.0006.9901A LU
0.0060.571410(2)解Lyb及Uxy得
y(34.97,0.02)T,x(1.667,3.333)Tx(0)
(0)(0)TrbAx(0.00333,0)(3)计算(用双倍字长计算)
(0)(4)求解LUzr(0)得
z(0)(0.3171,0.3172)T
(5)计算改善解
(6)计算
x(1)x(0)z(0)(1.986,2.999)T
x(1)x(0)0.317。重复(3)—(6)步做法,得
r(1)bAx(1)(0.0002,0)T (1)Tz(0.00241,0.01667) x(2)x(1)z(1)(1.986,2.999)T
1(2)(1)xx0.017101
21上述迭代改善过程还可以继续下去,如果给定101,则x(2)就是满
2*T足精度要求的近似解。方程组的准确解x(2,3)。
因篇幅问题不能全部显示,请点此查看更多更全内容