也就是说迭代过程未必收敛(图5.2a和5.2b表示收敛;图5.2c和5.2d表示发散)。于是我们要证明,如果在根的附近│φ`(x)│<1,则迭代过程是收敛的。
事实上,从(4)减去迭代公式,我们有
x-x =φ(x)-φ(x )
I i-1
由中值定理
φ(x)-φ(x )=(x-x )φ(ξ ) (x ≤ξ ≤x),
i-1 i-1 i-1
于是
x-x =(x-x )φ`(ξ )
i i-1 i-1
由此等式置i=n,并记M=max│φ`(ξ )│,就得
i
n
│x-x │=│(x-x )φ`(ξ )φ`(ξ )...φ`(ξ )│≤│x-x │M
n 0 0 1 n-1 0
由假定M<1,所以当n→∞时,│x-x │→0,这就证明了我们的断言。
n
例.求方程2x-lgx=7的实根
把原方程改写成x=(lgx+7)/2,
从曲线y =2x-7和y =lgx之交点得其粗糙的近似值3.8。
1 2
取这个值作为初始近似。于是按迭代公式得
x =(lg3.8+7)/2=3.79
1
x =(lg3.79+7)/2=3.7893
2
x =(lg3.7893+7)/2=3.7892
3
第二和第三近似完全一致。这可以作为方程的具有五位准确度的近似根。
2.线性插入法
该方法是用曲线的弦与横坐标的交点x 来逼近曲线与横坐标轴的交点a,
i
即方程式的根(图5.3)
弦A A的方程为
0
y-f(a) x-a
=
f(x )-f(a) x -a
0 0
令y=0,就得x 的值
1
(a-x )f(x ) (x -a)f(a)
0 0 0
x =x - =a-
1 0 f(a)-f(x ) f(a)-f(x )
0 0
以后各点x 的值为
i
(a-x )
i-1
x =x - (5)
I i-1 f(a)-f(x )
i-1
就是求近似根的线性插入公式。
3.牛顿公式
若将上述的弦用切线来代替(如图5.4),于是从(5)容易推出有名的牛顿公式
(a-x )
i-1
x =x - (6)
I i-1 f`(x )
i-1
另一方面,设f(x)=0的根在[a,b]内,取x 为根的近似值,h是这样的值,使
0
f(x +h)=0
0
2
按泰勒级数展开该函数,并把h 项以上略去,得
f(x )+hf`(x )=0
0 0
或
f(x )
0
h=-
f`(x )
0
改正过的根值为
f(x )
0
x =x +h=x -
1 0 0 f`(x )
0
重复这种过程我们就有
f(x )
i-1
x = x -
i i-1 f`(x )
i-1
我们又得到牛顿公式。这种迭代公式可以看作是普通迭代的特殊情形。此处,
f(x )
φ(x)=x-
f`(x )
因此,如果在根的近旁f`(x)≠0,及
f(x)f``(x)
│φ`(x)│= <1
2
[f`(x)]
则牛顿公式收敛。
如果曲线y=f(x)在x=x 和x=α附近有凹点或弯曲,迭代过程可能不收敛于x=α(图5.5).
0
如果f`(x)和f``(x)在区间[x ,α]不变号,f(x )和f`(x )同号,
0 0 0
这是y=f(x)凹向x轴,并且迭代过程收敛于α,
而且每次近似都在区间[x ,α]内(图5-4)。
0
如果f(x )和f``(x )反号,迭代过程未必收敛(图5.5),
0 0
若第一近似x 在α的另一端,而f`(x)和f``(x)在区间[x ,α]内不变号,
1 1
迭代过程仍可收敛(图5.6)。必须指出,若x=a是f(x)=0的重根,则牛顿公式不能使用,因为这时在α的近旁f`(x)接近于零。在实际计算中,无论是手算或是编制程序为了计算牛顿公式中的f(x)和f`(x)采用洪钠方案是很方便的。
设x 是某一近似,a ,a ,a ,...,a 是f(x)的系数,那么洪钠方案的计算格式如下:
i 0 1 2 n
a a a …. a a a
0 1 2 n-1 n i
a x b x …. b x b x
0 i 1 i n-2 i n-1 i
a a +a x =b b …. b b =f(x )
0 1 0 i 1 2 n-1 n i
a x c x …. c x
0 i 1 i n-2 i
a b +a x =c c …. c =f(x )
0 1 0 i 1 2 n-1 i
在什么时候迭代过程可以终止了呢?在实际计算中,当两相邻的迭代之差的绝对值小于预先给定的准确度时,我们就认为最后这次迭代出的近似值就是所要求的值。
3 2
例.求f(x)=x -6.144x +11.432x-6.228=0的一个实根。
容易求出(用第一节的方法)在[3,4]中有一实根。
我们取x =3作为初始近似,第一近似计算如下:
0
1 -6.144 11.432 -6.288 3
3 -9.432 6
1 -3.144 2.000 -0.288=f(x ) 3
0
1 -0.432
-0.144 1.568=f`(x )
0
于是,
f(x )
0 0.288
x = x - =3+ =3.184
1 0 f`(x ) 1.568
0
第二近似计算如下:
1 -6.144 11.432 -6.288 3.184
3.184 -9.432 6.390
1 -2.960 2.007 0.102=f(x )
0
3.184 0.713
0.224 2.720=f`(x)
于是
f(x )
1 0.102
x = x - =3.184+ =3.147
2 1 f`(x ) 2.710
1
继续上述的计算过程,我们能计算出第三近似和第四近似都是3.144...。因此,3.144可以作为f(x)=0的具有四位有效数位的近似根。
§3.方程组的情形
我们研究二个变数的二个方程的情形。
φ (x,y)=0,
1 } (7)
φ (x,y)=0,
2
1.牛顿方法,设x ,y 是方程(7)的一对近似根,而h,k是它们的这样的矫正值,使
0 0
φ (x + h,y +k)=0,
1 0 0
}
φ (x + h,y +k)=0,
2 0 0
按二元函数的泰勒公式展开该式,并将其平方项忽略掉后,我们有
Әφ Әφ
1 1
φ (x ,y )+h ( ) +k( ) =0
1 0 0 Әx 0 Әy 0
Әφ Әφ
2 2
φ (x ,y )+h ( ) +k( ) =0
2 0 0 Әx 0 Әy 0
对h,k解这组方程,我们得到
△ △
1 2
h= ,k= (8)
D D
其中,
Әφ Әφ
1 1
( ) ( )
Әx 0 Әy 0
D=
Әφ Әφ
2 2
( ) ( )
Әx 0 Әy 0
Әφ
1
-φ (x ,y ) ( )
1 0 0 Әy 0
△ =
1 Әφ
2
-φ (x ,y ) ( )
2 0 0 Әy 0
Әφ
1
( ) -φ (x ,y )
Әx 0 1 0 0
△ =
2 Әφ
2
( ) -φ (x ,y )
Әx 0 2 0 0
矫正过的近似值是
△ △
1 2
x =x + , ,y =y +
1 0 D 1 0 D
重复这过程,就可以得到所要求的近似值。从矫正公式(8)中看到:若D=0,则牛顿公式不能用。我们就采用迭代公式。
2.迭代法,我们把原方程(7)改写成
x=F (x,y)
1
y=F (x,y)
2
如果x ,y 是方程(7)的一对根的近似值,
0 0
我们要求的各次近似用下列迭代公式来得到:
x =F (x ,y )
I 1 I-1 I-1
} (9)
y =F (x ,y )
I 2 I I-1
易证,如果在根的近旁不等式
ӘF ӘF
1 2
+ <1和
Әx Әx
ӘF ӘF
1 2
+ <1
Әy Әy
成立,则公式(9)收敛(参阅[4])
例.求方程组
2
φ (x,y)=x+3lgx-y =0
1
2
φ (x,y)=2x -xy-5x+1=0
2
的根,
1.牛顿法的使用,容易求出
Әφ
1 3M
=1+ ,其中M-0.43429
Әx x
Әφ
1
=-2y,
Әy
Әφ
2
=4x-y-5,
Әx
Әφ
2
=-x
Әy
我们取x =3.4,y =2.2作为初始近似,那么
0 0
φ (x ,y )=0.1545,
1 0 0
φ (x ,y )=-0.72,
2 0 0
Әφ Әφ
1 1
( ) =1.383,( ) =-4.4,
Әx 0 Әy 0
Әφ Әφ
2 2
( ) =6.4, ( ) =-3.4,
Әx 0 Әy 0
将这些值代入校正公式(8)就得h ,k
1 1
△ △
1 2
h= ,k=
D D
其中,
Әφ Әφ
1 1
( ) ( )
Әx 0 Әy 0 1.383 -4.4
D= = =23.4578
Әφ Әφ 6.4 -3.4
2 2
( ) ( )
Әx 0 Әy 0
Әφ
1
-φ (x ,y ) ( )
1 0 0 Әy 0 -0.1545 -4.4
△ = = =3.6933
1 Әφ 0.72 -3.4
2
-φ (x ,y ) ( )
2 0 0 Әy 0
Әφ
1
( ) -φ (x ,y )
Әx 0 1 0 0 1.383 -0.1545
△ = =
2 Әφ 6.4 0.72
2
( ) -φ (x ,y ) =1.98456
Әx 0 2 0 0
△
1 3.6933
h = = =0.157444
1 D 23.4578
△
2 1.98456
k = = =0.084601
1 D 23.4578
h =0.157,k =0.085,
1 1
从而我们有
x =3.4+0.157=3.557,y =2.285,
1 1
同样又可得
φ (x ,y )=-0.011,
1 1 1
φ (x ,y )=-0.3945,
2 1 1
Әφ Әφ
1 1
( ) =1.367,( ) =-4.57,
Әx 1 Әy 1
Әφ Әφ
2 2
( ) =6.943,( ) =-3.557,
Әx 1 Әy 1
再将这些值代入矫正公式(8)求得
h =-0.0685,k =-0.0229,
2 2
从而有
x =3.4885,y =2.2621,
2 2
重复这种过程,我们有
h =-0.0018,k =-0.000561,
3 3
所以第三近似是
x =3.4872,y =2.2615,
3 3
这些值小数点后四位都是正确的。
2.迭代公式的使用,我们将原方程改写成
x(y+5)-1
x=
2
y= x+3lgx
仍以x =3.4,y =2.2作为初始近似,
0 0
我们就可以逐次地算出下列各次近似:
3.4(2.2+5)-1
x = =3.426
1 2
y = 3.426+3lg3.426 =2.243
1
3.426(2.243+5)-1
x = =3.426
2 2
y = 3.451+3lg3.451 =2.2505
2
x =3.466,y =2.255,
3 3
x =3.475,y =2.258,
4 4
x =3.480,y =2.259,
5 5
x =3.483,y =2.260,
6 6
由此可见,迭代过程的收敛速度很慢。六次迭代以后只得到三位有效数字。而牛顿公式三次迭代后就得到了五位有效数字。
第十三部分 计算实习
下面内容可参看《计算实习》,初等部分,王德人等编,高等教育出版社1959年出版
§3.秦九韶除法[秦九韶程序]
现在一般称之为综合除法。该方法是由我国南宋时的数学家秦九韶发现的二项式定理推导出来。求代数方程式的根时计算最大的是计算函数值。综合除法就是求多项式在某一点值的有效方法。
设多项式
n n-1
P(x)=a x +a x +...+a +a (3)
0 1 n-1 n
其中a (k=0,1,2,...,n)为实数。设x 是实数,求P(x )。
k 0 0
用(x-x )除多项式(3)之后,则多项式P(x)可表示为下面形式:
0
n-1 n-2
P(x)=(S x +S x +...+S x+S )(x-x )+S (4)
0 1 n-2 n-1 0 0
显然P(x )=S ,由此可见,欲求值P(x ),只要求值S 即可。
0 0 0 n
为了计算S ,只要比较等式(4)两端x同次幂的系数,便得下面递推关系:
n
S =S x +a ,(k=1,2,...,n),S =a (5)
k k-1 0 k 0 0
求S 时,只要做n次乘法和n次加法。计算时用下面程序表:
n
表5
a a a …. a a
0 1 2 n-1 n
S x S x …. S x S x
0 0 1 0 n-2 0 n-1 0
S S S …. S S =P(x )
0 1 2 n-1 n 0
例设
4 3 2
P(x)=x -2x +3x +x-5
求x =1.32219时P(x )的值。计算表如下:
0 0
1 -2 3 1 -5
1.32219,-0.89619=-0.67781*1.32219, 2.78164=2.10381*1.32219,5.00005=3.78164*1.32219
1, -0.67781=-2+1.32219, 2.10381=3-0.89619, 3.78164=1+2.78164, 0.00005=-5+5.00005
因为,
P(x )=S
0 n
S =S x +a ,(k=1,2,...,n),S =a
k k-1 0 k 0 0
S =S x +a
4 3 0 4
S =S x +a
3 2 0 3
S =S x +a
2 1 0 2
S =S x +a
1 0 0 1
S =a
0 0
所以, P(1.32219)=S =0.00005。
4
在求多项式的根时往往要同时求几个点的值,此时我们可以采用下面表进行计算:
表6
x a a a …. a a
k 0 1 2 n-1 n
(0) (0) (0) (0)
S x S x S x S x
0 0 1 0 n-2 0 n-1 0
x
0 (0) (0) (0) (0) (0)
S S x S x S x S x
0 1 0 2 0 n-1 0 n 0
(1) (1) (1) (1)
S x S x S x S x
0 0 1 0 n-2 0 n-1 0
x
1 (1) (1) (1) (1) (1)
S S x S x S x S x
0 1 0 2 0 n-1 0 n 0
(2) (2) (2) (2)
S x S x S x S x
0 0 1 0 n-2 0 n-1 0
x
2 (2) (2) (2) (2) (2)
S S x S x S x S x
0 1 0 2 0 n-1 0 n 0
….. …………………
….. ……………..
表中第一行的a ,a ,a ,...,a ,a 是公共的。
0 1 2 n-1 n
如求P(x ),只要把x 的那一行遮掉即与求P(x )完全一样。
1 0
若x 为复数:
0
x =u +iv
0 0 0
其共轭复数为
x =u +iv
0 0 0
则
2
(x-x )(x- x )=x +px+q
0 0
2 2
其中p=-2u ,q=u +v 。
0 0 0
而多项式(3)可写为
n-2 n-2 2
P(x)=(b x +b x +...+b x+b )(x +px+q)+b (x+p)+b
0 1 n-3 n-2 n-1 n
显然,
P(x )=b (x +p)+b =b -u b +iv b
0 n-1 0 n n 0 n-1 0 n-1
与前面同样,用比较系数的办法可推得
b =a -pb -qb ,(k=0,1,2,...,n) (6)
k k k-1 k-2
其中令b =b =0。计算时用表7是比较方便的。
1 2
例,计算多项式
表7
a a a …… a a
0 1 2 n-1 n 多项式实部 多项式虚部
u
0 -p=2u
0 -pb -pb …… -pb -pb
0 1 n-2 n-1
v
0 2 2
-q=-(u +v )
0 0 -qb ……. –qb -qb
0 n-3 n-2
b b b …… b b
0 1 2 n-1 n b -u b
n 0 n-1 v b
0 n-1
4 3 2
P(x)=x -2x +3x +x-5
在x =0.89135+i1.21835的值。计算表如下:
0
表8
1 -2 3 …… 1 -5
多项式实部 多项式虚部
0.89135 1.78270
=2*0.89135 1.7827 -0.38738 0.59496 3.72613
-0.38738=1.78270*(-0.2173)
1.21835 -2.27888
2 2
=-(0.89135 +1.21835 ) -2.27888 0.49520 -0.76055
-2.27888=-2.27888*1
1 -0.2173 0.33374 2.09016 -2.03442
-0.2173=-2+1.78270*1, 0.33374=3+1.78270*(-0.2173)+(-2.27888)*1 -0.17136 2.54655
4 3 2
P(x)=x -2x +3x +x-5
因此, P(x )=-0.17136+i*2.54655
0
如果熟记了b 的·递推关系(6),那么在计算机上要直接算出数b ,
k k
而不必记录中间数据,此时采用下表较为合适:
表9
k u
k v
k p
k q
k a a …… a a
0 1 n-1 n (k) (k)
b -u b
n k n-1 (k)
v b
k n-1
0 b b …… b b
0 1 n-1 n (0) (0)
b -u b
n 0 n-1 (0)
v b
0 n-1
1 … …. ….. ….. …….. ….. …..
4.叠代法
叠代法既可用来求方程(1)的实根,又可用来求方程(1)的复根。为了应用此方法,须先把形如(1)的方程改写成下面形式:x=φ(x) (7)
这种变换的方法是很多的,例如,在方程(1)的两端同时加上一个x:
x=x+P(x)
设x 是方程(7)初始近似根,则可逐次求得一串数
0
x =φ(x ),x =φ(x ),...,x =φ(x ),,... (8)
1 0 2 1 n+1 n
如果序列{x }有极限,即
n
lim x =x*
n→∞ n
并且φ(x)连续,则x*就是方程(7)根。
在所要求的精确度内x 可取为方程(7)的近似根。
n
注意叠代程序(8)未必收敛于方程的根。但如果函数φ(x)在其根的某一适当的邻域内满足条件max│φ`(x)│≤q<1,
并且q不迫近于1,则迭代程序(8)收敛于方程的根。计算时必须根据φ(x)的特点列出计算程序表,例如,可参看例题。
首先选定初始近似x ,使φ`(x)在邻域内适合max│φ`(x)│≤q<1。
0
通常φ`(x)是连续的,只要│φ`(x )│很小,当│x-x │<δ时即可使│φ`(x)│≤q<1。
0 0
x 选定之后,就可按程序列表计算只要逐次叠代到出现x =x 时,
0 n+1 n
计算即可停止,则x 就为方程的近似根。
n
例,求方程
4 3 2
P(x)≡x +x -3x +12x-12=0
的最小正实根,按四位小数进行计算。首先,因P(0)<0,P(2)>0,故在(0,2)内必有方程的根。又因P(x)的微商
3 2
P`(x)=4x +3x +6(2-x)
在(0,2)内是正的,因此,方程在(0,2)内只有一个根,即在(0,2)内方程的根是最小正根。其次,取初始近似x =1,而把方程改写成下面形式:
0
4 3 2
x=-(x +x -3x -12)/12=φ(x)
但,
3 2
φ`(x)=-(4x +3x -6x)/12
在x =1的值为φ`(1)=1/12很小,因此可以进行叠代。计算表格如下:
0
根据秦九韶除法计算多项式
4 3 2
x=-(x +x -3x -12)/12=φ(x)
的值,如下表所示
表10
x
i a =1 a =1 a =-3 a =0 a =-12
0 1 2 3 4 φ(x )=-S /12
i 4
1 1=1*1 2=2*1 -1=-1*1 -1=-1*1 1.0833
1 2=1+1 -1=2*1-3 -1=-1*1-0 S =-13=-1*1-12
4
1.0833 1.0833 2.2568 -0.8051 -0.8722 1.0727
1 2.0833 -0.7432 -0.8051 -12.8722
1.0727 1.0727 2.2234 -0.8331 -0.8937 1.0745
1 2.0727 -0.7766 -0.8331 -12.8937
1.0745 1.0745 2.2291 -0.8283 -0.8900 1.0742
1 2.0745 -0.7709 -0.8283 -12.8000
1.0749 1.0742 2.2281 -0.8292 -0.8907 1.0742
1 2.0742 -0.7719 -0.8292 -12.8907
由此得到所求的最小正根的近似值为1.0742,
注:秦九韶除法计算多项式的公式如下
S =S x +a ,(k=1,2,...,n),S =a (5)
k k-1 0 k 0 0
表5
a a a …. a a
0 1 2 n-1 n
S x S x …. S x S x
0 0 1 0 n-2 0 n-1 0
S S S …. S S =P(x )
0 1 2 n-1 n 0
5.牛顿法
牛顿法对于解代数方程与超越方程而言是最有效的方法,它的基本特点是程序简单而收敛较快。
设给定方程(1)与初始近似根x 。
0
假定在x 的适当邻域内函数P(x)可微,我们用线性方程
0
P`(x )+P`(x )(x-x )=0 (9)
0 0 0
代替方程(1),显然方程(9)左端的表达式是函数y=P(x)的曲线在点x 处的切线方程,
0
它与x轴的交点为
P(x )
0
x =x -
1 0 P`(x )
0
我们取x 作为方程(1)的第一次近似根;
1
再由x 出发,按上法可求出方程(1)的第二次近似根x ,
1 2
P(x )
1
x =x -
2 1 P`(x )
1
等等,一般有
P(x )
n
x =x - ,(n=0,1,2,...) (10)
n+1 n P`(x )
n
此处必须假定P`(x )≠0,(n=0,1,2,...)。程序(10)称为基本牛顿程序。
n
如果在公式(10)中以P`(x )代入分母P`(x ),则得所谓的变形牛顿程序
0 n
P(x` )
n
x` =x` - ,(n=0,1,2,...;x` =x ) (11)
n+1 n P`(x ) 0 0
0
因为按公式(11)计算每一步时不必再计算P`(x)在x (n=1,2,3,...)的值,
n
所以比按公式(10)计算较为简便,但是收敛比基本程序(10)来的慢。下面我们给出关于牛顿程序收敛的充分判别法,而不加以证明。
注:详细证明见ИПМысовских著的近似计算讲义第一章
设给定方程P(x)=0与初始近似根x 满足下面诸条件:
0
函数P(x)二阶连续可微,并且有条件:
1.P`(x )≠0与
0
1
≤B
│P`(x )│
0
2.下列不等式成立:
P`(x )
0
≤η
P`(x )
0
3.在x 的邻域
0
│x-x │≤2η (12)
0
内二阶微商P``(x)的绝对值有界:│P``(x)│≤K
4.诸常数B,η,K满足条件h=BKη≤1/2
那么方程(1)在邻域(12)内有解x*,并且基本程序(10)与变形程序(11)都收敛于这个解x*,基本程序(10)的收敛速度有下列估计:
n
1 2 -1
│x -x*│≤ (2h) η (13)
n n-1
2
[注]除上面的估计式(13)外,实用中还有更方便的估计式
│x -x*│≤η(r*-r )
n n
其中r*是方程
1 2
hr -r+1=0
2
的最小正根,而r 是由初始近似根r =0出发,按基本程序(10)得到的第n次近似根。
n 0
我们给出当h=0.05,0.1,...,0.5与n=0,1,2,...,5时r*-r 的数值表如表11.
n
表11
0 1 2 3 4 5
0.05
1.026 -1
0.2633*10 -4
0.1825*10 -11
0.9524*10
0.10
1.056 -1
0.5573*10 -3
0.1725*10 -8
0.1664*10
0.15
1.089 -1
0.8893*10 -3
0.6979*10 -7
0.4365*10
0.20
1.127
0.1270 -2
0.2017*10 -6
0.5248*10
0.25
1.172
0.4716 -2
0.5491*10 -5
0.4248*10 -11
0.3190*10
0.30
1.225
0.2251 -1
0.1086*10 -4
0.2784*10 -2
0.1838*10
0.35
1.292
0.2922 -1
0.2299*10 -3
0.1664*10 -7
0.1211*10
0.40
1.382
0.3820 -1
0.4863*10 -2
0.1044*10 -6
0.4591*10
0.45
1.519
0.5195
0.1104 -2
0.7495*10 -4
0.3955*10 -8
0.1113*10
0.50
2.000
1.0000
0.5000
0.2500
0.1250 -7
0.6250*10
如果方程(1)左端P(x)在区间[a,b]上是具有二阶连续微商的实函数,
注:微商即导数。
则有特别简单的收敛性判别法。陈述如下:
假设在区间[a,b]上成立
P`(x)P``(x)>0,
而且, P(a)P(b)<0
如果, P(b)P``(b)>0,[或P(a)P``(a)>0],
则当取x =x` =b(或a)时,基本程序(10)与变形程序(11)都收敛于方程(1)的解。
0 0
现在给出牛顿程序计算表如下:
表12
n 0 1 2 ……….
x
n
P(x )
n
P`(x )
n
P(x )
n
△ =-
n P`(x )
n
注:此表是用来计算实数方程的实根的。如果求方程的复根,则牛顿程序计算表为:
表13
n 0 1
x =u +iv
n n n u
0 v
0
P(x )=a +ib n n n a
0 b
0
P`(x )=c +id n n n c
0 d
0
P(x )P`(x )
n n a c +b d
0 0 0 0 b c +a d
0 0 0 0
P`(x )P`(x )
n n 2 2
c +d
0 0
0
P P`
△x =-
n P` P △u =-
0
a c +b d
0 0 0 0
2 2
c +d
0 0 △v =-
0
b c +a d
0 0 0 0
2 2
c +d
0 0
若用变形牛顿程序(11)求方程的根,
则只要把表10(或表11)中的P`(x )一行都换成P`(x )即可。
0 0
计算步骤与注意事项:
1.首先,选定初始近似x ,并根据上述充分判别法验证程序(10)[或(11)]的收敛性。
0
如果初始近似x 选得适当好时,即使P(x )较小,P`(x )较大,
0 0 0
那么程序(10)[或(11)]往往容易收敛。此时,就可免去验证收敛条件的麻烦,而直接进行计算即可。
一般说来,初始近似x 选得越好,程序收敛也就越快。
0
2.由x 出发按程序(10)[或(11)]计算,把数据填写在程序表12或表13内,
0
计算到所要求的精确度内前一次近似与后一次近似相同时为止。也可根据h的大小在表11中查到r*-r 的值,由
n
│x -x*│≤η(r*-r )
n n
断定n多大时就能达到所要求的精确度;或直接由(13)式断定n的大小。
3.求复根时计算比较复杂,计算量较大,因此,有时把它转化成求含有两个未知量方程组的实根问题。为此,只要令z=x+iy,则P(x)可化为P(x)=u(x,y)+iv(x,y), 但P(x)=0等价于
u(x,y)=0,
{ (14)
v(x,y)=0
注:关于求方程组的根见§6.求方程组的根
例1.用基本牛顿程序求方程2-x=logx的最小正根,并验证收敛条件。
首先,函数P(x)=logx+x-2在区间(0,+∞)内有意义,它的微商
1
P`(x)= loge+1, (loge≈0.4329448)
x
在(0,+∞)内恒为正的,因此至多有一正根。
其次,由§1,(一)中的例知道,可取x =1.7作为初始近似,
0
注:§1,(一)中说明的是画图法求近似值,画出f(x)=2-x和函数f(x)=logx的图像,它们的交点近似值是1.7。
我们来验证收敛条件。因为P(1.7)=-0.6955,P`(1.7)=1.25547, 故可取
P(x )
0
η= =0.0554
P`(x )
0
1
B=0.76952,(因为 =0.76951445...)
P`(x )
0
在x =1.7的邻域│x-1.7│≤2η=0.1108内考虑P(x)的二阶微商
0
1
P``(x)=- loge
2
x
最大绝对值,得│P``(x)│≤│P``(1.5892)│≤0.17196
故可取K=0.17196,
最后我们得到h=BKη≤0.007<1/2,
因此,在邻域│x-1.7│≤0.1108内有方程的根。最后,由于P(x),P`(x)的函数值很容易求出,故不必列出计算函数值的表。我们列出程序计算表如下:
表14
n 0 1 2 3
x
n 1.7 1.75540 1.7558 1.75558
logx
n 0.23045 0.24438 0.24442
P(x )
n -0.06955 -0.00022 0
P`(x )
n 1.25547 1.24740
P(x )
n
△ =-
n P`(x )
n 0.05540 0.00018 0
因此,x=1.75558即为方程的近似根。
因为初始近似x 选得较好,因此h较小,收敛也就较快。
0
这里的h=0.007,它当然小于0.05,参照表11知道,
-4
当n=2时,表中h=0.05那一行给出估计为0.1825*10 ,
-4
而我们这里的η=0.0554,故有误差不超过0.1825η*10 <0.112*10
例2.用牛顿法求方程
4 3 2
P(x)=x +3x +0.8x -0.1x-2=0
的最小正实根。
因P(1)=正数,P(0)=-1,故[0,1]间有根,我们取x =0.7,不难求得
0
B=0.15,η=0.06011,K=32,
故h=0.27951, 由收敛定理得知用牛顿法计算时收敛,并且由表11可知h=0.3时,
-1 -5
只要计算三步即n=3,就可以使误差不超过0.2784η*10 <0.17*10
现在我们按5位小数计算于表:
表14
n 0 1 2 3
x
n 0.7 0.76011 0.75546 0.75543
P(x )
n -0.4089 0.03752 0.00022 -0.00002
P`(x )
n 6.82 8.07275 7.96984 7.96918
P(x )
n
△ =-
n P`(x )
n 0.06011 -0.00465 -0.00003 0.00000
得最小正实根为x=0.75543, 由此可见,上面的收敛速度的估计准确。牛顿方法用来求一个数a的平方根,立方根亦是很方便的。
例如,求平方根的程序为
1 a
x = (x + ) (15)
n+1 2 n x
n
2
这是由方程x -a=0导出的。
例3.用牛顿法求√0.78265的值,按五位小数进行计算。
为了尽快地求出所要的值,我们在位数不多的简单平方根表中查得x =0.88作为初始近似。
0
其计算表为:
表15
n X
n a
x
n 1 a
x = (x + )
n+1 2 n x
n
0 0.88 0.88933 0.88469
1 0.88469 0.88466 0.88468
2 0.88468 0.88467 0.88468
例4.用变形牛顿程序求
4 3 2
P(x)=x +x +x +x-5=0
的正实根。
因为P(1)<0,P(1,2)>0,故在(1,1.2)内有方程的实根。
取x =1/1,则P(1.1)=0.1051很小,故不必验证收敛条件而直接计算。
0
用综合除法计算P(x)的值如下:
表16
x
a =1
0 a =1
1 a =1
2 a =1
3 a =-5
4 P(x)
1.2 1.2 2.46 4.368 6.4416 1.4416
1 1.2 2.46 4.368 6.4416
1.1 1.1 2.31 3.641 5.1051 0.1051
1 2.1 3.31 4.641 0.1051
1.00135 1.09135 2.28239 3.58224 5.00083 0.00083
1 2.09135 3.28239 4.58224 0.00083
1.09128 1.09128 2.28217 3.58177 4.99999 -0.00001
1 2.09128 3.28217 4.58177
计算程序表为:
表17
n x
. n f(x` )
n f(x` )=f`(1.1)
0 f(x )
0
△x` =-
n f`(x )
0
x` =x` +△x`
n+1 n
0 1.1 0.1051 12.154 -0.00865 1.09135
1 1.09135 0.00088 12.154 -0.00007 1.09128
2 1.09128 -0.00001 12.154 0 1.09128
故所求的正实根的近似值为1.09128。
例5.用牛顿法求
3 2
P(x)=x -3x +6x-5=0
的复根,已知初始近似x =0.9+i1.8 ,
0
注:若没有给出初始近似,则可用以后将要讲到的罗巴切夫斯基方法求出。
表18
n u
. n v
n p =-2u
n n 2 2
q =(u +v ) n n n
0 0.9 1.80000 -1.8 4.05
1 0.85183 1.75805 -1.70366 3.81635
2 0.83897 1.75424 -1.67794 3.78123
3 0.83891 1.75438 -1.67782 3.78162
a =1
0 a =1
1 a =1
2 a =1
3 b -b u 3 2 n b v
1 n
1 -1.2 -0.21 -0.518 -0.0329 -0.375
1 -1.29634 -0.02487 -0.09508 -0.07389 -0.07372
1 -1.32206 0.0043 -0.00027 -0.00063 0.00075
1 -1.32218 0 -0.000018 0.00001 0
表19
n u
. n v
n P` =-2u
n n 2 2
q` =(u` +v` ) n n n
0 0.9 1.80000 -1.8 4.05
1 0.85183 1.75805 -1.70366 3.81635
2 0.83897 1.75424 -1.67794 3.78123
3 0.83891 1.75438 -1.67782 3.78162
a =1
0 a =6
1 a =6
2 b -b u` 2 1 n b v`
1 n
3 -0.6 -7.23 -7.77 -1.08
3 -0.88902 -6.96364 -6.20635 -1.56294
3 -0.96618 -6.96488 -6.13496 -1.69491
3 -0.96654 -6.96654 -6.15570 -1.69568
表20
n 0 1 2 3
x =u +iv
n n n 0.9 1.8 0.85183 1.75805 0.83897 1.75424 0.83891 1.75438
P(x )=a +ib n n n -0.320 -0.378 -0.07389 -0.04372 -0.00063 0.00075 0.00001 0
P`(x )=c +id n n n -7.77 -1.08 -6.20635 -1.56294 -6.13496 -1.69491 -6.15570 -1.69568
P(x )P`(x )
n n 2.96457 2.58174 0.52692 0.15586 0.00259 -0.00567 -0.00006 0.00002
P`(x )P`(x )
n n 61.5393 0 40.96156 0 40.51045 0 40.76713 0
P P`
△x =-
n P` P -0.04817 -0.04195 -0.01286 -0.00381 -0.00006 0.00014 0 0
我们不验证收敛条件,而直接用牛顿程序计算。用表9求P(x)于P`(x)的值。
3 2 2
计算P(x)=x -3x +6x-5的数值见表18. 计算P`(x)=3x -6x+6的数值见表19.
计算复根的程序见表20。故近似根为0.83891±i1.75438。
§6.用牛顿方法解方程组
牛顿法除应用于解含一个未知量的方程外,还可用来解非线性方程组。
为了简单起见,我们只讨论二个未知量方程组的情形。
设给定方程组
P(x,y)=0
} (16)
Q(x,y)=0
与一对初始近似(x ,y ),取下面线性方程组:
0 0
Ә P(x ,y ) Ә P(x ,y )
0 0 0 0
P(x ,y )+ (x-x )+ (y-y )=0
0 0 Ә x 0 Ә y 0
Ә Q(x ,y ) ӘQ(x ,y )
0 0 0 0
Q(x ,y )+ (x-x )+ (y-y )=0
0 0 Ә x 0 Ә y 0
的一对根(x ,y )作为方程组(16)的第一次近似,再由第一次近似按上法可确定第二次近似,
1 1
一般地由第n次近似(x ,y )按方程组
n n
Ә P(x ,y ) Ә P(x ,y )
n n n n
P(x ,y )+ (x-x )+ (y-y )=0
n n Ә x n Ә y n
Ә Q(x ,y ) ӘQ(x ,y )
n n n n
Q(x ,y )+ (x-x )+ (y-y )=0
n n Ә x n Ә y n
就可确定第n+1次近似(x ,y ),我们令
n+1 n+1
△x =x -x ;△y =y -y ;(n=0,1,2,...)
n n+1 n n n+1 n
则由代数学知识知(D ≠0)
n
A B
n n
△x = ,△y = (17)
n D n D
n n
其中,
Ә P(x ,y )
-P(x ,y ) n n
0 0 Ә y
A =
n Ә Q(x ,y )
-Q(x ,y ) n n
0 0 Ә y
Ә P(x ,y )
n n -P(x ,y )
Ә x 0 0
B =
n Ә Q(x ,y )
n n -Q(x ,y )
Ә x 0 0
0
而D 是矩阵
n
Ә P(x ,y ) Ә P(x ,y )
n n n n
Ә x Ә y
D =
n Ә Q(x ,y ) Ә Q(x ,y )
n n n n
Ә x Ә y
的行列式(n=0,1,2,...)。计算程序表为:
表21
Ә
( )
Әx 0 Ә
( )
Әy 0
-( )
0 Ә
( )
Әx 1 Ә
( )
Әy 1
-( )
…….
P ӘP
( )
Әx 0
之值 ӘP
( )
Әy 0
之值
-(P)
0
之值 ӘP
( )
Әx 1
之值 ӘP
( )
Әy 1
之值 -(P)
1
之值
…….
Q ӘQ
( )
Әx 0
之值 ӘQ
( )
Әy 0
之值
-(P)
0
之值 ӘQ
( )
Әx 1
之值 ӘQ
( )
Әy 1
之值 -(Q)
1
之值
…….
A 之值
0 B 之值
0 D 之值
0 A 之值
1 B 之值
1 D 之值
1 ……..
△x 之值 0 △y 之值 0 △x 之值 1 △y 之值 1
x 之值 1 y 之值 1 x 之值 2 y 之值 2
其中记号()。表示函数在(x ,y )点的值,等等。
0 0
在实际计算时还需要计算函数与它的偏微商在点(x ,y ) (x ,y ),...值,
0 0 1 1
它们的计算表格视表格视函数本身而定。
例1.用基本牛顿程序(17)求方程组。
2 2 4
P(x,y)=x +y -0.12x -1=0
}
3
Q(x,y)=y-x+0.15y =0
的一对根,按五位小数进行计算。已知初始近似为x =3.3,y =2。
0 0
先求出P与Q的一阶偏微商:
ӘP 3 ӘP
=2x-0.48x ; =2y ;
Әx Әy
ӘQ ӘQ 2
=-1 ; =1+0.45y
Әx Әy
计算依照表22和表23进行:
表22
m m
x
0 m
y
0 m
x
1 m
y
1 m
x
2 m
y
2
1 3.3 2 3.27851 2.02804 3.27813 2.02766
2 10.89 4 10.74863 4.11295 10.74614 4.11141
3 35.937 8 35.23949 3.84123 35.22724 8.33654
4 118.5921 115.53302 115.47947
4
-(1+0.12x ) -15.23105 -14.86396 -14.85754
3
0.15y 1.2 1.25118 1.25048
由表22和表23看出,方程组的一对近似根为:
x*=3.27813;y*=2.02766
上述方法每计算一步需要计算三个行列式的值,因此计算量较大;又在求行列式的值时,由于交错相乘、相减、正负号的关系,常常容易算错,因而在有些情况下采用变形牛顿程序是较方便的。我们令
△x` =x` -x` ;△y` =y` -y` ;(n=0,1,2,...)
n n-1 n n n-1 n
而(x` ,y` )=(x ,y )是方程组(16)的初始近似根,则
0 0 0 0
表23
Ә
( )
Әx 0 Ә
( )
Әy 0
-( )
0 Ә
( )
Әx 1 Ә
( )
Әy 1
-( )
1
-( )
2
P -10.64976 4 0.34105 -10.36754 4.05608 0.00238 0
Q -1 2.8 0.1 -1 2.85083 -0.00071 0
0.55494 -0.72393 -25.81933 0.00967 0.00974 -25.50001
-0.02149 0.02804 -0.00038 -0.00038
3.27851 2.02804 3.27813 2.02766
ӘQ ӘP
( ) ( )
Әy 0 Әy 0
△x` =- P(x` ,y` )+ Q(x` ,y` )
n D n n D n n
0 0
} (18)
ӘQ ӘP
( ) ( )
Әx 0 Әx 0
△y` =- P(x` ,y` )+ Q(x` ,y` )
n D n n D n n
0 0
其计算程序表为:
表24
-Γ
0 n 0 1 2 3
ӘQ
-( )
Әx 0
之值
D
0 ӘP
-( )
Әy 0
之值
D
0 P
n
ӘQ
-( )
Әx 0
之值
D
0 ӘP
-( )
Әy 0
之值
D
0 Q
n
△x`
n
△y`
n
-1 -1
其中的Γ 表示D 的逆矩阵D :Γ =D
0 0 0 0 0
例2.用变形牛顿程序(18)解例1中的方程组,已知初始近似为x =0.7,y =0.7。
0 0
计算按照下面的表进行:
表25
m m
x
0 m
y
0 m
x
1 m
y
1 m
x
2 m
y
2
1 0.7 0.7 0.74525 0.69494 0.74471 0.69447
2 0.49 0.49 0.55540 0.48294 0.55459 0.48229
3 0.3430 0.3430 0.41391 0.33561 0.41301 0.33494
4 0.2401 0.30847 0.30757
4
-(1+0.12x )
-1.02881
-1.03702
-1.03691
3
0.15y
0.05145
0.05034
0.05024
表24
-Γ
0 n 0 1 2
-0.41974 -0.48147 P
n -0.04881 0.00132 -0.00003
-0.34391 -0.42485 Q
n 0.05143 0.00003 0
△x`
n 0.04525 -0.00054 0.00001
△y`
n -0.00506 -0.00047 0.00001
由表26看出,计算到x` ,y` 就可停止,
3 3
由表25知x*=0.74471+0.00001=0.74472,y*=0.69447+0.00001=0.69448
第十四部分 罗巴切夫斯基法
下面内容可参看《计算实习》,初等部分,王德人等编,高等教育出版社1959年出版
§7.罗巴切夫斯基法
这个方法只适用于求代数方程的根。在求方程的根时不必预先知道初始近似根,可通过方程的系数之间的计算就能求出方程所有的根。
设给定n次代数方程
(0) n (0) n-1 (0) (0)
P(x)=a x +a x +...+a x+a =0 (19)
0 1 n-1 n
(0) (0) (0) (0)
其中系数a ,a ,...,a ,a 都是实数,且a ≠0.
0 1 n-1 n
设x ,x ...,x 是方程(19)的一切根,则有如下的关系:
1 2 n
(k)
a
m m m 1
x +x +...+x =
1 2 n (k)
a
0
(k)
a
m m m m m m 1
x x +x x +...+x x =
1 2 3 4 n-1 n (k)
a
0 } (20)
(k)
a
m m m m m m m m m 1
x x x +x x x +...+x x x =
1 2 3 4 5 6 n-2 n-1 n (k)
a
0
(k)
a
m m m m n
x x x ...x =
1 2 3 n (k)
a
0
(k=0,1,2,...)
k (k) (k) (k) (k) (k)
其中m=2 ,而诸数a ,a ,a ,...,a ,a 由下列逐次关系式确定:
0 1 2 n-1 n
(k) (k-1) 2
a =(a )
0 0
(k) (k-1) 2 (k-1) (k-1)
a =(a ) -2a a
1 1 0 2
(k) (k-1) 2 (k-1) (k-1) (k-1) (k-1)
a =(a ) -2a a +2a a }(21)
2 2 1 3 0 4
…………………………
(k) (k-1) 2 (k-1) (k-1)
a =(a ) -2a a
n-1 n-1 n-2 n
(k) (k-1) 2
a =(a )
n n
系数的计算程序为(见表27):
(一)设方程(19)的一切根都是实根,且互不相同。
注:并且要求诸根的绝对值彼此不很接近。
我们设│x │>│x │>│x │>....>│x │,
1 2 3 4
则当k充分大时,等式(20)左端的第一项成为主要部分,从而我们得到近似等式:
表27
k (k)
a
0 (k)
a
1 (k)
a
2 (k)
a
3
……..
(k)
a
n-1 (k)
a
n
0 (0)
a
0 (0)
a
1 (0)
a
2 (0)
a
3
……..
(0)
a
n-1 (0)
a
n
(0) 2
(a )
0 (0) 2
(a )
1
(0) (0)
-2a a
0 2 (0) 2
(a )
2
(0) (0)
-2a a
1 3
(0) (0)
+2a a
0 4
(0) 2
(a )
3
(0) (0)
-2a a
2 4
(0) (0)
+2a a
1 5
(0) (0)
-2a a
0 6
……..
……..
……..
……..
(0) 2
(a )
n-1
(0) (0)
-2a a
n-2 n
(0) 2
(a )
n
1 (1)
a
0 (1)
a
1 (1)
a
2 (1)
a
3
……..
(1)
a
n-1 (1)
a
n
(1) 2
(a )
0 (1) 2
(a )
1
(1) (1)
-2a a
0 2 (1) 2
(a )
2
(1) (1)
-2a a
1 3
(1) (1)
+2a a
0 4
(1) 2
(a )
3
(1) (1)
-2a a
2 4
(1) (1)
+2a a
1 5
(1) (1)
-2a a
0 6
……..
……..
……..
……..
(1) 2
(a )
n-1
(1) (1)
-2a a
n-2 n
(1) 2
(a )
n
2 (2)
a
0 (2)
a
1 (2)
a
2 (2)
a
3
……..
(2)
a
n-1 (2)
a
n
……. ……… ……….. ……….. …….. ………… ……….
(k)
a
m 1
x ≈
(k)
a
0
(k)
a
m m 2
x x ≈
1 2 (k)
a
0
(k)
a
m m m 3
x x x ≈
1 2 3 (k)
a
0
……………….. }
(k)
a
m m m n
x x ….x ≈
1 2 n (k)
a
0
k
由此我们得到各根x (i=1,2,...,n),m=2 次方的近似值
i
(k)
a
m 1
x ≈
1 (k)
a
0
(k)
a
m 2
x ≈
2 (k)
a
0
(k)
a
m 3
x ≈
3 (k)
a
0
……….. }(22)
(k)
a
m n
x ≈
n (k)
a
0
自上面近似等式(26)可求出│x │(i=1,2,...,n)的近似值,
i
至于x 是正是负由方程(19)来确定。如果计算进行到第k +1步出现
I 0
(k +1) (k )
0 0 2
a =(a )
1 1
(k +1) (k )
0 0 2
a =(a )
2 2
(k +1) (k )
0 0 2
a =(a )
n-1 n-1
那么计算即可停止。
(二)当诸根x (i=1,2,...,n)的绝对值│x │之中有相等的或近似相等的情形。比如,
i i
│x │>│x │=│x │>│x │>...>│x │
1 2 3 4 n
则由(20)式可得
(k)
a
m 1
x ≈
1 (k)
a
0
(k)
a
2m 3
x ≈
2 (k)
a
1
(k)
a
m 4
x ≈
4 (k)
a
3
,...,
(k)
a
m n
x ≈ (23)
n (k)
a
n-1
如果计算进行到第k +1步出现
0
(k )
(0) 0 2
a =(a ) , (i=1,3,4,...,n-1),
i i
(k +1) (k )
0 1 2 2
a = (a ) ,
2 2 2
那么计算即可停止。
(三)设方程(19)有复根(为简单起见,只叙述具有一对共轭复根的情形)。比如,
ir -ir
x =re ,x =re
2 3
且│x │>r>│x │>...>│x │
1 4 n
其中x ,x ,...,x 都是实根,则有近似关系式
2 4 n
(k)
a
m 1
x ≈
1 (k)
a
0
(k)
a
2m 3
r ≈
2 (k)
a
1
(k)
a
m 4
x ≈
4 (k)
a
3
,...,
(k)
a
m n
x ≈ (24)
n (k)
a
n-1
(k +1)
0
如果计算进行到第k +1步,除a 外,出现
0 2
(k +1) (k ) (k +1) (k ) (k +1) (k )
0 0 2 0 0 2 0 0 2
a =(a ) , a =(a ) , ……, a =(a )
1 1 3 3 n-1 n-1
(k)
那么计算即可停止。此时在计算过程中a 的变化是不规律的。
2
根据等式(24)与方程(19)确定x ,r,x ,...,x 之后,再由根与系数的关系式
1 4 n
(0)
a
1
x +2rcosφ+x +...+x =- (25)
1 4 n (0)
a
0
2
求出cosφ,从而可求得sinφ= 1-cos φ,再后得到复根近似值为
x =r(cosφ+isinφ),
2
x =r(cosφ-isinφ),
3
计算步骤与注意事项:
1.如果方程次数较低,又熟记了系数的规律,那么计算系数的表27可改写为下面的简表:
表28
k (k)
a
0 (k)
a
1 (k)
a
2
………. (k)
a
n
0 (0)
a
0 (0)
a
1 (0)
a
2
………. (0)
a
n
(0)
2a
0 (0)
2a
1 (0)
2a
2
……….
(1)
a
0 (1)
a
1 (1)
a
2
………. (1)
a
n
应用表28时不必记录中间数据而直接在计算机上算出所要的数。
2.在求代数方程的一切根时,并不预先知道方程的根属于(一)、(二)、(三)等哪一种情况,但是可由观察在计算时系数变化规律判断之。
(k) (k)
如果某一系数,比如a 变化不规律,特别是a 当k变化时改变正负号,
2 2
那么可以断定方程有一对共轭复根x ,x ;
2 3
(k)
如果计算到某一步某一系数,比如a 出现
2
(k+1) 1 (k) 2
a ≈ (a ) 情况,
2 2 2
那么方程有一对根x ,x 的绝对值近似相等:
2 3
│x │≈│x │
2 3
如果在计算系数时不出现上述情况,那么可以断定方程的一切根都是互不相同的实根。
注:并且诸根的绝对值彼此不很接近。[注]如果在计算中有两个系数变化不规律,那么方程有两对复根,比如
x =r (cosφ ±isinφ )与x =r (cosφ ±isinφ )
2,3 1 1 1 4,5 2 2 2
(k)
此时由系数a 求出r 与r 外还要求φ 与φ ,这可从下列关系式得到:
i 1 2 1 2
(0)
a
1
x +x +...+x =-
1 2 n (0)
a
0 }
(0)
a
1 1 1 n-1
+ +…+ =-
x x x (0)
1 2 n a
n
注:此时必须假设方程无接近于零的根。或
(0)
a
1
x +2r cosφ +2r cosφ +x +...+x =-
1 1 1 2 2 6 n (0)
a
0
} (26)
(0)
2cosφ 2cosφ a
1 1 2 1 1 n-1
+ + + +…+ =-
x r r x x (0)
1 1 2 6 n a
n
3.为了避免产生过大的误差起见,在计算过程中我们保持一定位数的有效数字。
m 2m 2m
4.系数计算停止后,根据不同情况得到x ,x ,r ,
i i
然后用对数表求出│x │或r,如果出现复根,
i
还需根据关系式(25)[或(26)]求cosφ,再求sinφ,
最后由方程(19)定出x 的正负号。
i
5.前述各种方法,在计算过程中若有小的错误,也不会影响所得结果,但罗巴切夫斯基法则不然,若有一步出错,结果也就错了。如果在计算系数时怀疑有错时,可根据下面关系式进行验算:
n (k) n i (k) n (k+1)
∑a *∑(-1) a =∑a
i=0 i i=0 I i=0 i
例1.用罗巴切夫斯基法求方程
5 4 3 2
P(x)≡x -2.04878x -13.08943x +14.06504x +23.90244x-1.08943=0
的所有根。首先计算系数,在计算中我们取五倍以上有效数字,见表29.
表29
k
m=2
a
0
a
1
a
2
a
3
a
4
a
5
0
1=2
1
-2.04878
-13.08943
14.06504
23.90244
-1.08943
2 1
2
a =4.19750
1
-2a a =26.17886
0 2
2
a =171.33318
2
-2a a =57.633234
1 3
-2a a =47.80488
0 4 2
a =197.82535
3
-2a a =625.73864
2 4
-2a a =4.46400
1 5 2
a =571.32664
4
-2a a =30.64575
3 5
2
a =1.18686 5
1
2=2
1 2
3.03764*10 2
2.76770*10 3
8.28030*10 2
6.01972*10
1.18686
4
2
9.22726*10
2
-5.53540*10 4
7.66016*10
3
-50.30514*10
2
12.03944*10 4
68.56337*10
4
-32.32156*10
72.10506*10 4
36.23703*10
2
-19.65512*10
2
4=2
1
2
3.69186*10
4
2.75004*10
4
35.31391*10
4
36.04048*10
1.40864
8
4
13.62983*10
4
--5.50008*10 8
7.56272*10
8
-2.60748*10
4
72.08096*10 3
1247.07224*10
3
-198.22552*10
2
10.40100*10 8
1298.91620*10
4
-99.48917*10
3
8=2
1 2
8.12975*10 8
4.96245*10 11
1.04885*10 11
1.29891*10
1.98427
16
8
66.09284*10
8
-9.92490*10
16
64.62591*10
15
-17.05378*10
11
2.59782*10 22
1.10009*10
19
-12.88145*10
0 8
1.68717*1022
0
4
16=2
1 9
5.61679*10 17
2.29206*10 22
1.08721*10 22
1.68717*10
3.98733
32
18
31.54883*10
17
-4.58412*10
34
5.25354*10
31
-12.21326*10
0 44
1.18203*10
39
-7.73419*10
0 44
2.84654*10
0
5
32=2
1 19
3.10899*10 34
5.24133*10 44
1.8195*10 44
2.84654*10
1.55026*10
64
38
9.66582*10
34
-10.48266*10 68
27.47154*10
0
0 88
1.39701*10
0
0 88
8.10279*10
0
5
32=2
1 38
9.66477*10 69
2.74715*10 88
1.39701*10 88
8.10279*10 2
2.4033*10
128 76
93.40778*10
69
-5.49430*10
138
7.54683*10
0
0 176
1.95164*10
0
0 176
65.65521*10
0
6
128=2
1 77
9.34078*10 138
7.54683*10 176
1.95164*10 177
6.56552*10 4
5.77585*10
注:表中所写的0,并非真为0,只说明在我们所取的有效数字范围内不起作用。
从表29中看出,方程只有实根,而且
(7) (6) 2
a = (a ) , (i=0,1,2,3,4,5)
i i
7
所以计算即可停止。此时m=2 =128,从关系式
(7)
a
128 i
x = , (i=0,1,2,3,4,5)
(7)
a
i-1
求实根的绝对值│x │,(i=1,2,3,4,5)
i
由表29得
128 77
x =9.34078*10
1
两边同时取对数得
128lg│x │=77+lg9.34078=77.97038,
1
lg│x │=0.6091449,│x │=4.0658,
1 1
同时查表29,得
128lg│x │=138+lg7.54683-77-lg9.34075=60.90738
2
lg│x │=0.475839,│x │=2.99115,
2 2
128lg│x │=176+lg1.95164-138-lg7.54683=37.41264
3
lg│x │=0.292286,│x │=1.96014,
3 3
128lg│x │=177+lg6.56552-176-lg1.95164=1.52687
4
lg│x │=0.011929,│x │=1.02785,
4 4
128lg│x │=4+lg5.77585-177-lg6.56552=-173.055656
5
lg│x │=-1.351997=2.648003,│x │=0.04446,
5 5
最后由观察与计算定出x 的正负号,因此得到方程的全部根如下:
i
x =4.0658,x =-2.99115,x =1.96014,x =-1.02785,x =0.04446,
1 2 3 4 5
例2.用罗巴切夫斯基法求方程
3
P(x)≡x -3x+1=0
的一切根,按五位有效数字进行计算,并指出所求近似根的精确度。首先列出计算系数的表:
表30
k
(k)
a
0 (k)
a
1 (k)
a
2 (k)
a
3
0 1 0 -3 1
2 0
1 1 6=0-2*(-3) 9=(-3)(-3)-2*0*1 1=1*1
2 12
2 1 18=6*6-2*9 69=9*9-2*6*1 1=1*1
2 36
3
1 186=18*18-2*69 4725=69*69-2*18*1 1=1*1
2 372
4 1 25146=186*186-2*4725 3
22325*10 =4725*4725-2*186 1=1*1
2 50292
5 1
4
58767*10
10
49841*10
1=1*1
2 5
11758*10
6 13
34436*10 25
24841*10
1=1*1
13
68872*10
7 1 31
11858*10 54
61708*10
1=1*1
2
因此
128 35 128 23 128 -59
│x │ =1.1858*10 ,│x │ =5.2039*10 ,│x │ =1.6205*10 ,
1 2 3
(7)
a
128 1 35
│x │ = =1.1858*10
1 (7)
a
0
(7) 54
a 61708*10
128 2 23
│x │ = = =5.2039*10
2 (7) 31
a 11858*10
1
(7)
a 1
128 3 -59
│x │ = = =1.6205*10
3 (7) 54
a 61708*10
2
利用对数表求得
│x │ =1.8794,│x │ =1.5321 ,│x │=0.3472 ,
1 2 3
然后由方程本身可以断定根为:
x =-1.8794,x =1.5321 ,x =0.3472 ,
1 2 3
最后,由于
P(-1.8794)=-0.000111<0
{
P(-1.87935)=0.00031>0
P(1.5321)=-0.000045>0
{
P(1.53205)=-0.00016<0
P(0.34730)=-0.000009<0
{
P(0.347295)=0.000004>0
可见所求近似根具有五位有效数字。
例3.用罗巴切夫斯基法求方程
3 2
x +0.123x -0.25x-0.03075=0
的一切根,按五位有效数字进行计算,首先列出计算系数的表(表31):
表31
k
(k)
a
0 (k)
a
1 (k)
a
2 (k)
a
3
0 1 -1
1.2300*10 -1
-2.5000*10 -2
-3.0750
2 -1 -1
2*1.2300*10 =2.4600*10
1 1 5.1513*10
-1 2 -1
=(1.2300*10 ) -2*1*(-2.5000*10 ) -2
7.0064*10
-1 2 -1 -2
=(-2.5000*10 ) -2*(1.2300*10 )*(-3.0750*10 ) -4
9.4556*10
-4 2
=(-3.0750*10 )
2 -1
1.0303=2*5.1513*10
2 1 1.2523*10
-1 2 -1
=(5.1513*10 ) -2*1*(7.0064*10 ) -2
3.9348*10
-1 2 -1 -4
=(7.0064*10 ) -2*(5.1513*10 )*(9.4556*10 ) -7
8.9408*10
-4 2
=(9.4556*10 )
2 -1
1.0303=2*5.1513*10
3
1 -3
7.8130*10 -5
1.5259*10 -13
7.9939*10
2 -2
1.5626*10
4 1 -5
3.0525*10 -10
2.3282*10 -25
6.3901*10
2 -5
6.1050*10
5 1 -10
4.6614*10 -20
5.4205*10 -49
4.0835*10
此时
(5) 1 (4) 2 (5) (4) 2
a ≈ (a ) ,a ≈ (a ) ,(i=0,2,3)
1 2 1 i i
故│x │=│x │
1 2
按
(5) (5)
a a
64 2 64 3
│x │ = │x │ =
1 (5) 3 (5)
a a
0 2
而得
64 -20 32 -30
│x │ =5.4205*10 ,│x │ =7.5331*10 ,
1 3
利用对数表而得│x │=0.5,│x │=0.123
1 3
最后由方程本身断定根为:
x =0.5,x =-0.5,x =0.123
1 2 3
例4.用罗巴切夫斯基法求方程
3 2
P(x)≡x -3x +6x-5=0
的一切根
我们列出计算系数的表(表32):
表32
k
(k)
a
0 (k)
a
1 (k)
a
2 (k)
a
3
0 1 -3 6 -5
2 -6 12
1 1 2
-3=(-3) -2*6*1 2
6=6 -2*(-3)*(-5) 2
25=(-5)
2 -6 12
2 1 2
-3=(-3) -2*1*6 3
0.186*10
2
(注:186=300+6 -2*(-3)*25) 3
0.625*10
2 -6 3 3
0.372*10 =2*0.186*10
3
1 3
-0.363*10
2
(注:363=600-237=600-(-3) -2*1*114) 5
0.38346*10
3 2 5
=(1.86*10 ) -2*(-3)*0.625*10 6 3 2
0.39063*10 =(0.625*10 )
2 3
-0.726*10 5
0.76692*10
4 1 5
0.55077*10
3 2 5
=(-0.363*10 ) -2*0.38346*10 *1 10
0.17540*10
5 2 3 6
=(0.38346*10 ) -2*(-3.63*10 )*0.39062*10 12 6 2
0.15259*10 =(0.39063*10 )
2 5
0.11015*10 10
0.35080*10
5 1 9
-0.47450*10
6 2 10
=(0.55077*10 ) -2*0.17540*10 *1 19
0.30597*10
10 2 5 12
=(0.17540*10 ) -2*(0.55077*10 )*0.15259*10 23 12 2
0.23284*10 =(0.15259*10 )
2 9
-0.94900*10 19
0.6119410
6 1 19
-0.58943*10
9 2 19
=(0.47450*10 ) -2*0.30597*10 *1 37
0.93618*10
19 2 9
=(0.61194*10 ) -2*(0.47450*10 )*0.23284*10 45 22 2
0.54214*10 =(0.23284*10 )
6 (5) 2 (k)
因为a =[a ] (i=0,2,3),且a 变化不规则,由此可知方程有一对共轭复根x ,令
i i 1,2
x =r(cosφ±isinφ)
1,2
由表32中的数据,我们得到
128 37
r =0.93618*10
64 0.54214 8
│x │ = *10
3 0.93618
应用对数表算得r=1.94464,│x │=1.32219
3
容易看出,方程有一实根近似值为:x =1.32219
3
我们再由
(0)
a
1
2rcosφ+x =-
3 (0)
a
0
得3.88928cosφ+1.32219=3,
故
1.67781
cosφ= =0.43139
3.88928
从而
2
sinφ= 1-cos φ =√0.81390=0.90216
最后得到共轭复根的近似值为x =0.83890±i1.75438
1,2
下面我们举出一例,说明如何选择上述各种方法,使计算量尽可能地少。
例5.求方程
3
P(x)=x -3x+1-0.2sinx=0
的一切实根,要求近似根具有四位小数,并估计误差。
1.确定一切实根所在的范围:
首先求出函数P(x)的一阶与二阶微商:
2
P`(x)=3x -3-0.2cosx
P``(x)=6x+0.2sinx
然后应用§1中试验法造出下面的表:
表33
x -2 -1 0 1 2
P(x) - - + + - + +
P`(x) + + - - - + +
P``(x) - 0 +
由表33可看出,在(-2,1)内有方程的根,但是在区间内P(x)只有一个极值,故只有一个根;在(0,1)内P(x)的曲线是单调下降的,故也只有一个根;在(1,2)内P(x)只有一个极值,故也只有一个根,此外无方程的实根。
2.选定初始近似根。
因为│0.2sinx│≤0.2,故可取方程
3
x -3x+1=0
的根,作为原方程的初始近似根。由本节例2知可取
(1) (2) (3)
x =0.3473,x =1.5321,x =-1.8794,
0 0 0
作初始近似根。
3.方法的选择
首先把原方程化为形式:
1 3 1 0.2
x= x + - sinx≡φ(x)
3 3 3
求φ(x)的一阶微商为
2 0.2
φ`(x)=x - cosx
3
(1)
因为│φ`(x )│<1很小,故求在(0,1)内的实根可用叠代法;
0
(2) (3)
而│φ`(x)│在点x ,x 的值大于1,因此求在(1,2)与(-2,-1)内的实根叠代法不适用,
0 0
P(x) (2) (3)
但 在点x ,x 的值很小,故可用牛顿法。
P`(x) 0 0
4.实际计算与误差估计。
我们不列出计算各函数值的表,只要按下面表34与表35上已化成的形式在计算机上直接算出函数值。用叠代法计算在(0,1)内的根,其计算表为34.
因此,x =0.3234为近似根。
1
1 -4
又因为P(0.3234)=0.00006>0与P(0.32345)=-0.00008<0,所以误差不超过 *10
2
用牛顿法计算在(1,2)与(-2,-1)内的根,其计算表为表35.
因此,x =1.5790,x =-1.9038为近似根。又因为
1 2
P(1.5790)=-0.00017<0
{
P(1.57905)=-0.00006>0
P(-1.9038)=0.00018>0
{
P(-1.90385)=-0.00021<0
1 -4
所以误差不超过 *10
2
表34
3
x =φ(x )=0.33333x +0.33333-0.06667sinx
n+1 n n
n 0 1 2 3 4
x
n 0.3473 0.3246 0.3235 0.3234 0.3234
sinx
n 0.34036 0.31893 0.31789 0.31789
表35
2 2
P(x)=x(x -3)+1-0.2sinx,P`(x)=3(x -1)-0.2cosx
n 0 1 2 0 1 2
x
n 1.5321 1.5811 1.5790 -1.8704 -1.9037 -1.9038
0.2sinx
n 0.19985 0.19999 0.19999 -0.19055 -0.18902 -0.18901
0.2cosx
n 0.00774 -0.00206 -0.00164 -0.25130 -0.06536 -0.06538
P(x )
n -0.19981 0.00927 -0.00017 0.19045 0.000098 0.00018
P`(x )
n 4.08021 4.5017 4.487156 7.84772 7.93757 7.93873
P(x )
n
P`(x )
n 0.04897 -0.00206 0.00004 -0.02427 -0.00012 -0.00002