第八部分 林士鄂法计算电路
下面内容可参看《计算实习》,初等部分,王德人等编,高等教育出版社1959年出版
§8.林士鄂法(析因子法)
注:我国自动控制学家,航空教育专家林士鄂在留学美国麻省理工学院期间,以《飞机自动控制理论》论文获航空科学博士学位,该论文提出的“高阶方程劈因解法”,被誉为“林士鄂法”。即为此方法。
这个方法适用于求代数方程
n n-1
P(x)≡a x +a x +...+a x+a =0 (27)
0 1 n-1 n
的根,其中a ,a ,...,a 都是实数,而次数n>2。
0 1 n
这个方法的实质是由P(x)的近似二次三项式因子
2
x +p x+q
0 0
出发,寻求P(x)的近似二次三项式因子
2
x +p x+q
k k
而把求n次代数方程(27)的根归结为求二次方程的根。
注:为了简单起见,我们这里特别1只讲析出二次三项式因子的计算方法,一般可析出m,(m<n)次因子。
p 与q 按下面关系式计算:
k k
-p =a ,-q =-a 0 0 0 0
(0)
b =a
0 0
(k)
b
n-1
p =p +
k+1 k (k)
b
n-1
(k)
a
n
p = ,(k=0,1,2,...) (28)
k+1 (k)
b
n-2
其中,
(k)
b =a
0 0
(k) (k)
b =a -p b
1 1 k 0
(k) (k) (k) b =a -p b -q b 2 2 k 1 k 0
(k) (k) (k)
b =a -p b -q b
3 3 k 2 k 1
……………..
(k) (k) (k)
b =a -p b -q b
n-1 n-2 k n-3 k n-4
(k) (k) (k)
b =a -p b -q b
n n-1 k n-2 k n-3
其计算可按下面表36进行。
表36
k a
0 a
1 a
2 …
a
n-2 a
n-1 a
n (k)
b
n-1
(k)
b
n-2
a
n
(k)
b
n-2
0 -p
0 (0)
-p b
0 0 (0)
-p b
0 1 (0)
-p b
0 n-3 (0)
-p b
0 n-2 (0)
b
n-1
(0)
b
n-2
a
n
(0)
b
n-2
-q
0 (0)
-p b
0 0 (0)
-p b
0 n-4 (0)
-p b
0 n-3
(0)
b
0 (0)
b
1
(0)
b
2
(0)
b
n-2 (0)
b
n-1
1 -p
1
-q
1
如果计算到第k +1步出现
0
p =p ,q =q
k k +1 k k +1
0 0 0 0
计算即可停止。方程
2
x +p x+q =0
k k
0 0
的根即为方程(27)的二个近似根。
(1) (2)
如果用试验法求的方程(27)的二个粗糙的近似根x 与x ,即可取
0 0
(1) (2) (1) (2)
p =-x -x ,q =x x
0 0 0 0 0 0
如果求的一个粗糙的近似复根x =u +iv ,则可取 0 0 0
2 2
p =-2u ,q =u +v
0 0 0 0 0
此外,如果知道方程(27)有二个绝对值为很小的近似根,且a ≠0
n-2
则可删去多项式P(x)中次数大于2的一切项而得初始近似二次三项式因子
a a
2 n-1 n
x + x+
a a
n-2 n-2
例.用林氏法求方程
6 5 4 3 2
P(x)≡x -6x +16x -28x +45x -34.6x+22.4=0
的两个根,按五位小数进行计算,已给p =-1,q =-1。
0 0
按表36计算p 与q 而得表37.
k k
表37
k 1 a =1
0 a =6
1 a =16
2 a =-28
3 a =45
4 a =-34.6
5 a =22.4
6 (k)
b
n-1
(k)
b
n-2 (k)
b
P =P + n-1
K+1 k (k)
b
n-2
a
q = n
k (k)
b
n-2
0 -p =1
0 1 -5 10 -13 22 0.01818 -0.98182 1.01818
-q =-1
0 -1 5 -10 13
1 5
10
-13 22 0.4
1 -p=0.98182
1 0.98182 -4.92695 9.87207 -12.78184 21.58088 0.01074 -0.97108 1.01909
-q=-1.01818
1 -1.01818 5.10941 -10.23767 13.25520
1 -5.01818 10.05487 -13.01852 21.98049 0.23608
2 0.97108 0.97108 -4.88348 9.80522 -12.69188 21.38137 0.00457 -0.96651 1.01734
-1.01909 -1.01909 5.12492 -10.28999 13.31936
1 -5.02892 10.09743 -13.06986 22.01813 0.10073
3 0.96651 0.96651 -4.86492 9.77890 -12.66160 21.30698 0.00156 -0.96495 1.01609
-1.01734 -1.01734 5.12077 -10.29318 13.32749
1 -5.03349 10.11774 -13.10033 22.04522 0.03442
4 0.96495 0.96495 -4.85857 9.77045 -12.65386 21.28475 0.00042 -0.96458 1.01551
-1.01609 -1.01609 5.11606 -10.28826 13.32449
1 -5.03505 10.12534 -13.11349 22.05788 0.00924
5 0.96453 0.96453 -4.85686 9.76840 -12.65273 21.28000 0.00006 -0.96447 10.1529
-1.01551 -1.01551 5.11537 -10.28471 13.32149
1 -5.03547 10.12763 -13.11803 22.06256 0.00149
6 0.96447 0.96447 -4.85662 9.76824 -12.65311 21.28001 -0.00001 -0.96448 1.01523
-1.01529 -1.04529 5.11252 -10.28295 13.31983
1 -5.03553 10.12809 -13.11924 22.06394 -0.00016
7 0.96448 0.96448 -4.85666 9.76836 -12.65343 21.28049 -0.00001 -0.96449 1.01522
-1.01523 -1.01523 5.11221 -10.28236 13.31924
1 -2.03552 10.12811 -13.11943 22.06421 -0.00027
8 0.96449 0.96449 -4.85670 9.76843 -12.65355 21.28072 -0.00001 -0.96450 1.01522
-1.01522 -1.01522 5.11215 -10.28223 13.31910
1 -5.03551 10.12808 -13.11942 22.06422 -0.00018
9 0.96450 0.96450 -4.85674 9.76849 -12.65363 21.28090 0 -0.96450 1.01522
-1.01522 -1.01522 5.11214 -10.28219 13.31905
1 -5.03550 10.12804 -13.11937 22.06418 -0.00005
由表37知p =-0.96450,q =1.01522,因此P(x)有近似二次因子
0 0
2
x -0.96450x+1.01522
解方程
2
x -0.96450x+1.01522=0
得
2
-b± b -4ac
x =
1,2 2a
2
0.96450± 0.96450 -4*1.01522
x =
1,2 2
x =0.48225±i√0.78265
1,2
这也就是原方程的两个根。[注]1.这方法的程序收敛很慢,有时甚至计算二、三十步,并且初始近似不容易取,有时初始近似甚至取得与真值很接近,程序也可能发散。注意:关于判断此程序收敛的问题,直到目前还未解决。
2.计算中若有一个数据出错,往往对结果影响很大。通常计算几部以后可以看出规律,如果发现某一数据突然变换很大,那么不是计算错误就是程序不收敛。
3.如果是四次方程就可同时求出四个近似根。
程序:
PROGRAM BEGIN 程序开始
6 5 4 3 2
JISUAN1# FANGCHENG P(x)≡x -6x +16x -28x +45x -34.6x+22.4=0
1#计算,计算六次方程式的虚根
LSEJS LIUCI FANGCHENG E 选择林士鄂法计算六次方程式电路
MAKEA A=1,B=-6,C=16,D=-28,E=45,F=-34.6,G=22.4,
键盘输出六次方程式电路的参数A=1,B=-6,C=16,D=-28,E=45,F=34,G=22.4
GET P,Q 把计算电路最后得到的P,Q两个参数存储到P寄存器,Q寄存器
RUN LSEJS 与门导通,接通林士鄂法六次方程式计算电路,进行计算
DEPLAY ON 液晶显示器显示计算得到的P,Q,方程式的虚根X1,X2等值
P,Q,X1,X2
DEPLAY OFF
OUTPUT JISUAN1# 5#IO 将计算中的所有寄存器的数据输出到计算机5#端口
PROGRAM END 程序结束,与门截止,电路关闭
计算上面方程根的罗巴切夫斯基方法见上面的表29。
用数字电路加法器,乘法器,除法器,各种数值表示上面表29的计算公式,
第八部分 计算一元三次方程式的卡丹公式计算电路
推导过程可参见А.Г.УРОШ库洛什著高等代数教程1953年版,
41.三次与四次方程,
说明,计算一元三次立方根的卡尔丹公式如下:
3 2
y +ay +by+c=0 (1)
设y=x+h,得
3 2
(x+h) +a(x+h) +b(x+h)+c=0
3 2 2 3
x +(3h+a)x +(3h +2ah+b)x+h +bh+c=0
上面方程可转化为,
3
x +px+q=0 (3)
其中, y=x-a/3, (2)
h=-a/3,
2 2
p=3h +b+2ah=b-a /3,
3 3
q=h +bh+c=-a /27-ab/3+c,
只要求得方程(3)的根,那么我们根据(2)就可以得到方程(1)的根, 根据基本定理方程(3)有三个复数根,设x0是其中一个, 我们引入辅组未知量u来讨论多项式,
2
f(u)=u -x0u-p/3,
它的系数为复数,故有两个复数根α和β。而且由韦达公式,得,
α+β=x0 (4)
αβ=-p/3 (5)
以根x0的表达式(4)代(3)中,我们得出:
3
(α+β) +p(α+β)+q=0,
或,
3 3
α +β +(3αβ+p)(α+β)+q=0,
但由(5)得3αβ+p,故有,
3 3
α +β =-q (6)
另一方面,由(5)推得,
3 3 3
α β =-p /27 (7)
3 3
等式(6)与(7)证明了,数α 和β 是系数为复数的二次方程,
3
2 p
z +qz- =0 (8)
27
的根,
解方程(8),我们得到:
2 3
q q p
z =- ± +
2 4 27
3
2 3
q q p
α= - ± +
2 4 27
3
2 3
q q p
β= - ± + (9) 2 4 27
注意:因α和β在等式(6)和(7)中,同时在x0的表达式(4)中,都是对称的,
3 3
故对方程的根(S)的根,以何者为α 何者为β 是没有什么分别的。这就是说α,β可以相互交换位置,得到的计算结果不变.
即,
3
2 3
q q p
β= - ± +
2 4 27
3
2 3
q q p
α= - ± + (9)
2 4 27
或,
3
2 3
q q p
α= - ± +
2 4 27
3
2 3
q q p
β= - ± + (9)
2 4 27
两者的计算结果是相同的, 我们得到次之卡尔丹公式,把方程(3)的根经其系数用平方根与立方根来表出:
3 3
2 3 2 3
q q p q q p
x0=α+β= + + + - + +
2 4 27 2 4 27
因立方根在复数域中有三个值,所以(9)式给予α三个值与β三个值。
注意:ε是1的立方根,即
3
ε =1,
因为1开立方在复数平面内有3个根。分别是
ε =1, ε =-1/2+i√3/2, ε =-1/2+i√3/2,
0 1 2
程序:
PROGRAM BEGIN 程序开始
3 2
JISUAN1# FANGCHENG y +ay +by+c=0
计算1#,计算一元三次方程式的根
KDJS SANCI FANGCHENG D 选择卡丹公式计算三次方程式电路
MAKEA A=a,B=b,C=c, 用键盘输入一元三次方程式的参数A=a,B=b,C=c,
GET X0,X1,X2, 将计算得到的三个根放在X0,X2,X3寄存器里面
DISPLAY ON 液晶显示器显示计算得到的根X0,X1,X2
X0,X1,X2
DISPLAY OFF
OUTPUT X0,X1,X2 4#IO 将计算得到的根X0,X1,X2输出到计算机4#端口
PROGRAM END 程序结束,与门截止,电路关闭
第九部分 根的判别计算电路
下面的资料可参见《计算方法讲义》,中国科学院计算技术研究所编,科学出版社1958年出版。
1.根的位置
在讲述求根的近似方法之前,先复习一下高中课程中讲过的关于根分布在怎样的界限内的知识,对我们今后讨论求方程式的根的近似方法是有用处的。先叙述两个求方程式正根上界的方法(证明参阅[1]或[2])。
1)设实系数方程式
n n-1
f(x)=a x +a x +...+a =0 (1)
0 1 n
的最高次项的系数a 是正的(否则,以-1相乘两端)k≥1是它的第一个负系数的下标,
0
以及B为所有负系数的绝对值的最大值,那么
k
B
R=1+ (2)
a
0
是方程式(1)的正根上界。
2)设(1)的最高次项的系数a >0,
0
n
如果x=a时方程本身及其各次导数f(x),f``(x),...,f (x)都取正值,那么a为(1)的正根上界。 例.求方程 4 2 f(x)=x -5x +6x-8=0 的正根上界. 方法(1),此处k=2和B=8,由(2)得到它的正根上界大致为4. k 2 B 8 R=1+ =1+ =3.8284 a 1 0 方法(2),它的各次导数为: 3 f(x)=4x -10x+6
2
f``(x)=12x -10
f```(x)=24x
(Ⅳ)
f (x)=24
当x=2时,它们皆为正,因此方程正根的上界为2. 由例可见,方法(2)比方法(1)准确一些。现在来讲实根定位的斯多姆(Sturm)方法。
设f(x)=0是实系数的方程式。假定f(x)不含重因子,即f(x)和f(x)彼此互质。使用辗转相除法于f(x)和f(x)后,我们有函数列:
f(x)=g(x)f`(x)-f (x),
1
f`(x)=g (x)f (x)-f (x), } (3) 1 1 2 …… f (x)=g (x)f (x)-f (x), m-2 m-1 m-1 m
式中f (x)表示方程f(x)和导数f(x)的最高因式。 m (3)具有下列性质,并称它为f(x)的斯多姆函数列。 a)任何两个相邻的函数没有公共根。 b)若α是f (x)的实根,则f (x)的相邻函数f (x)和f (x)在x=α处不同号。 k k k-1 k-1 c)若x增加时,经过函数列中某一函数(f(x)和f (x)除外)的实根, m 则函数列(3)变号不受影响。 d)当x经过f(x)的实根时,则f(x)和f(x)之间的变号减少一个。这样一来,我们有实根定位的斯多姆方法:
设a和b不是f(x)的根。f(x)在区间[a,b]内实根的个数等于x由a变到b时f(x)的斯多姆函数列减少的变号数。
事实上,若x增加时经过斯多姆函数列(f(x)和f (x)除外)某函数的实根,
m
由性质c)斯多姆函数列的变号数保持不变。若x经过f(x)的实根,由性质d)f(x)和f`(x)之间的变号数减少一个。从而整个斯多姆数列的变号数减少一个。因此,当x从a增至b时,变号数减少的数目等于区间[a,b]中所含f(x)的实根的个数。
例.试求方程式
5 4 3 2
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.97=0
的实根个数。作出f(x)的斯多姆函数列:
5 4 3 2
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.97
4 3 2
f`(x)=25x -57.28x +13.59x -30.78x-9.86
3 2
f (x)=4.750x +7.677x +11.414x-22.84
1
2
f (x)=-111.50x -324.17x+479.58
2
f (x)=-49.75x+49.30 3
f (x)=-48.95
4
求出函数列在x=+∞和x=-∞的变号数:
f(x) f`(x) f (x)
1 f (x)
2 f (x)
3 f (x)
4 变号数目
-∞ - + - - + - 4
}减少3
1
+∞ + + + - - -
求函数列在x=+∞和x=-∞的变号数的过程如下:
x=+∞时,f(x)计算过程如下所示
5 4 3 2 5 5
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.975=5(+∞) =5(+1) =+∞
4 3 2 4 4
f`(x)=25x -57.28x +13.59x -30.78x-9.86=25(+∞) =25(+1) =+∞
3 3 3 3
f (x)=4.750x +7.677x +11.414x-22.84=4.750(+∞) =4.750(+1) =+∞ 1
2 2 2
f (x)=-111.50x -324.17x+479.58=-111.50(+∞) =-111.50(+1) =-∞ 2
f (x)=-49.75x+49.30=-49.75(+∞)=-∞ 3
f (x)=-48.95
4
x=-∞时,f(x)计算过程如下所示
5 4 3 2 5 5
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.975=5(-∞) =5(-1) =-∞
4 3 2 4 4
f`(x)=25x -57.28x +13.59x -30.78x-9.86=25(-∞) =25(-1) =+∞
3 2 3 3
f (x)=4.750x +7.677x +11.414x-22.84=4.750(-∞) =4.750(-1) =-∞ 1
2 2 2
f (x)=-111.50x -324.17x+479.58=-111.50(-∞) =-111.50(-1) =-∞ 2
f (x)=-49.75x+49.30=-49.75(-∞)=-49.75(-1)=+∞ 3
f (x)=-48.95
4
由此可见,f(x)=0有三个实根在区间[-∞,+∞]内。
用方法2求实根,f(x)的各次导数为
4 3 2
f`(x)=25x -57.28x +13.59x -30.78x-9.86
3 2
f (x)=4.750x +7.677x +11.414x-22.84 1
2
f (x)=-111.50x -324.17x+479.58 2
f (x)=-49.75x+49.30 3 当x=3时,它们皆为正,因此方程正根的上界为3. 用求实根上界的第二方法,不难求出它的实根上界等于3,应用斯多姆方法得: f(x) f`(x) f (x) 1 f (x) 2 f (x) 3 f (x) 4 变号数目 -1 - + - + + - 4 3 }减少1 2 }减少1 2 1 }减少1 0 + - - + + - 1 - - + + - - 2 - - + - - - 3 + + + - - - 由此推出,f(x)=0的三个实根位置是:-1≤x≤0,0≤x≤1,2≤x≤3, 知道实根位于哪个区间后,就能用古典的隔离法求出根的近似值。 设已知f(x)有一实根在某一区间上,我们平分该区间,得两个区间,其中必有一区间有f(x)的根。再分这个新区间,又得两个区间,其中必有一个有f(x)的根。再继续上面的作法,我们就得到一系列分点a ,a ,...,a (如图5.1), 1 2 n 这些点是逼近于方程式f(x)=0的根α的,这就是根的隔离法。
程序:
PROGRAM BEGIN 程序开始,与门导通,输入磁带程序编码
4 2
JISUAN GSX x -5x +6x-8=0 计算四次方程式的根的上限值
GSXJS SICI FANGCHENG A
与门导通接通计算四次方程式的根的上限值的第一种电路
SET K=2,B=3,a0=1 键盘输入计算电路的参数K=2,B=3,a0=1
RUN SET TO R 将键盘输入的参数代入计算电路进行计算
DISPLAY ON 液晶显示器显示根的上限值R
PROGRAM END 程序结束,与门截止,电路关闭
第一种方法, 用上面的程序计算四次方程实根的上限值
k
B
R=1+
a
0
用数字电路加法器,乘法器,除法器,各种数值表示上面的函数,
程序:
PROGRAM BEGIN 程序开始,与门导通,输入磁带程序编码
4 2
JISUAN GSX x -5x +6x-8=0 计算四次方程式的根的上限值
GSXJS SICI FANGCHENG C
与门导通接通计算四次方程式的根的上限值的第二种电路
SETA A1=4,B1=-10,C1=6 键盘输入计算电路的参数A1=4,B1=-10,C1=6
SETB A2=12,B2=-10, 键盘输入计算电路的参数A2=12,B2=-10,
SETC A3=24 键盘输入计算电路的参数A3=24
GET M1=1,M1=2,M3=3,M4=4 键盘输入计算电路的根的数值M1=1,M1=2,M3=3,M4=4
GET M1=1,M1=2,M3=3,M4=4 将键盘输入的参数代入计算电路进行计算
DISPLAY ON 液晶显示器显示根的上限值M
M 程序结束,与门截止,电路关闭
DISPLAY OFF
PROGRAM END
计算得到的数据进行平方计算,如果是负数,平方后得到正数,开方后得到正数,加上原来的负数,输出0.
计算得到的数据进行平方计算,如果是正数,平方后得到正数,开方后得到正数,加上原来的正数,输出正数。
如果加法器输出0,或门输出1,与门输出1,状态寄存器A保存1,证明方程计算得到的是负数,反之,则是正数。
当按键输入2时,三个方程计算结果都是正。非门A,B,C输出1,与门A,与门B输出1,此时与门C将前面按键输入的2输出到数据寄存器M中,此时M=2。表示方程的正根上限为2。
程序:
PROGRAM BEGIN 程序开始,与门导通,输入磁带程序编码
5 4 3 2
JISUAN GSX f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.975
计算五次方程式的根的上限值
GSXJS WUCI FANGCHENG B
与门导通接通计算五次方程式的根的上限值的斯多姆法电路
MAKEA A=23.975,B=-9.86,C=-15.39,D=4.53,E=-14.32,F=5
键盘输入计算电路的参数 A=23.975,B=-9.86,C=-15.39,D=4.53,E=-14.32,F=5
MAKEB H=1,K=-1 键盘输入计算电路的参数 H=1,K=-1,H代表+∞,K代表-∞
RUN SET TO G 将键盘输入的参数代入计算电路进行计算
DISPLAY ON 液晶显示器显示根的上限值G
G
DISPLAY OFF
PROGRAM END 程序结束,与门截止,电路关闭
用上面的程序描述的斯多姆法计算五次次方程实根的个数。
用古典的隔离法计算方程实根
5 4 3 2
2x -3x +4x -5x -3x=0
解:用求实根上界的第二方法,不难求出它的实根上界等于3,应用斯多姆方法得:
用求实根上界的第二方法,不难求出它的实根上界等于3,应用斯多姆方法得:
f(x) f`(x) f (x)
1 f (x)
2 f (x)
3 f (x)
4 变号数目
-1 - + - + + - 4
3 }减少1
2 }减少1
2
1 }减少1
0 + - - + + -
1 - - + + - -
2 - - + - - -
3 + + + - - -
由此推出,f(x)=0的一个实根位置是:1≤x≤2,显然,在1≤x≤2时,
5 4 3 2
f(x)=2x -3x +4x -5x -3x
取x=1,得
5 4 3 2
f(x)=2(1) -3(1) +4(1) -5(1) -3(1) =2-3+4-5-3=-5<0
取x=2,得
5 4 3 2
f(x)=2(2) -3(2) +4(2) -5(2) -3(2) =64-48+32-20-6=22>0
所以,取x=1.5,得
5 4 3 2
f(x)=2(1.5) -3(1.5) +4(1.5) -5(1.5) -3(1.5) =15.1875-15.1875+13.5-11.25-4.5=-2.25<0
所以,取x=1.75,得
5 4 3 2
f(x)=2(1.75) -3(1.75) +4(1.75) -5(1.75) -3(1.75)
=32.8261-28.13671875+21.4275-15.3125-5.25=5.5543>0
所以,取x=1.6,得
5 4 3 2
f(x)=2(1.6) -3(1.6) +4(1.6) -5(1.6) -3(1.6)
=20.97152-19.6608+16.384-12.8-4.8=0.89472>0
所以,取x=1.55,得
5 4 3 2
f(x)=2(1.55) -3(1.55) +4(1.55) -5(1.55) -3(1.55)
=17.893219375-17.31601+14.8955-12.0125-4.65=-1.89791<0
所以,取x=1.57,得
5 4 3 2
f(x)=2(1.57) -3(1.57) +4(1.57) -5(1.57) -3(1.57)
=19.0777-18.22719+15.4795-12.3245-4.71=-0.69449<0
所以,取x=1.58,得
5 4 3 2
f(x)=2(1.58) -3(1.58) +4(1.58) -5(1.58) -3(1.58)
=19.69316-18.696+15.7772-12.482-0.474=4.766>0
所以,取x=1.575,得
5 4 3 2
f(x)=2(1.575) -3(1.575) +4(1.575) -5(1.575) -3(1.575)
=19.383-18.4605+15.6279375-12.403125-4.725=0.5776875>0
所以,取x=1.5725,得
5 4 3 2
f(x)=2(1.5725) -3(1.5725) +4(1.5725) -5(1.5725) -3(1.5725)
=19.230176-18.34357+15.55363-12.36378-4.7175=-0.64046<0
所以x=1.5725就是方程的实根。
程序:
PROGRAM BEGIN 程序开始,与门导通,输入磁带程序编码
5 4 3 2
JISUAN GDGL 2x -3x +4x -5x -3x=0
执行五次方程的古典隔离法计算法电路
GDGLJS WUCI FANGCHENG A
MAKEA A=2,B=-3,C=4,D=-5,E=-3,F=0 将方程式的系数用A,B,CD存储器存储起来
TAKEA X=1.5 可以将x=1.5代入函数f(x),计算函数值
TAKEB QJ=0.25 每次计算增加的区间长度为0.25
RUN GDGLJS 执行古典隔离法计算法电路
DISPLAY ON 液晶显示器显示计算得到的根X
X
DISPLAY OFF
SAVE JISUAN1# 将计算结果保存到JISUAN寄存器
PROGRAM END 程序结束,与门截止,电路关闭
计算方程根的电路
5 4 3 2
2x -3x +4x -5x -3x=0
用数字电路加法器,乘法器,除法器,各种数值表示上面的函数,
古典隔离法计算电路
第十部分 根式的计算
399.根式的计算
根式可最简单地借助与对数表来计算。可是,如果一些个别的根式需要很大的精确度,则更适合的是采用二项式级数[394(22)]。模拟计算机幂函数计算公式
m m(m-1) 2 m(m-1)...(m-n+1) n
(1+x) =1+mx+ x +…+ x +… (22)
12 12*...n
同时用常数a替换函数自变量x,自变量x替换m,得到指数计算公式
模拟计算机指数计算公式
x x(x-1) 2 x(x-1)...(x-n+1) n
(1+a) =1+ax+ a +…+ x +… (22a)
12 12*...n
k
假定需要计算 A ,并已知这根式的近似值a(大于或小于真值),但要求改善它,如果,比方说
A
=1+x
k
a
其中|x|是不大的一个真分数,那么可以用下面的方法把根式变形:
k
k A 1/k
A =a* =a*(1+x)
k
a
并可利用当m=1/k时的二项式级数。有时从等式
k
a
=1+x
A
出发是更合适的,如果|x`|又是一个不大的真分数,并且采用另一变形:
k a 1/k
A = =a*(1+x`)
k
k
a
A
此后取m=-1/k,应用二项式级数。 最为例子,从√2的近似值1.4出发,计算√2到很大的精确度。 √2的近似值1.4可以通过下面的方法得到
1/2 (1/2)*(1/2-1) m(m-1)...(m-n+1) n
(1+1) =1+1/2+ +…+ x +…≈1.5-0.08333≈1.4166
12 12*...n
为此目的,以上述两种范式中的一种把根式变形:
2 0.04 1 1/2
√2=1.4* =4* 1+ =.4*(1+ )
1.96 1.96 49
或
1.4 1.4 1 -1/2
2 = = =1.4*(1- )
1.96 0.04 50
1-
2 2
为使计算容易起见,自然宁愿采用第二种方法。
1 1 1 1 1 1 1 1 1 1
√2=1.4*(1+ * + + + + +...) 2 3 4 5 2 50 8 50 16 50 128 50 256 50 限于已经写出的这些项,它们都可以表示成有穷十进位小数:
5 1
1+...+ =1.0101525 3 16 50
35 1
=0.00000004375
4
128 50
63 1
=0.0000000007875
5
256 50
1.0101525445375*1.4=1.41421356235250
因为在1/50的幂次下的系数递减,所以校正数可以像通常那样加以估计:
231 1 1 1.4231 2.1
△<1.4 (1+ + +...)= <
6 2 5 11
102150 50 50 1024*50 *49 10
因此1.414213562352<√2<1.414213562373, √2=1.4142135623...;
小数后所有十个数字都是正确的, 利用变形
119 -1/2
√2=1.41(1- )
20000
容易得到非常多的数字,现在再举出一些类似的变形的例子, (借助于二项式级数的计算留给读者去作)
71 -1/2
√3=1.73*(1- )
30000
11 1 1/2
√11= (1- ) 3 100
3 5 3 1/2
√2= (1- ) 4 125
3 10 29 1/2
√3= (1- ) 7 1000 计算N次方的电路
m m m(m-1) 2 m(m-1)...(m-n+1) n
y =(1+x) =1+mx+ x +…+ x +…
12 12*...n
用数字电路加法器,乘法器,除法器表示上面的等式就会得到计算变量y的根式的数字电路
第十一部分 高次方程的数值解
下面的资料可参见《计算方法讲义》,中国科学院计算技术研究所编,科学出版社1958年出版
第五章 高次代数方程的数值解
力学、物理和其它科学技术中的各种问题常常归结到求方程式的根,而且这些方程式往往都是高次的。我们知道,不存在一个方法能求出高于四次方程的根的准确解。另一方面,在实际应用中只能获得具有预先给定的准确度的近似值就足够了。本章之目的在于讲述适用于实际计算的求方程式的根的各种近似方法。
1.根的位置
在讲述求根的近似方法之前,先复习一下高中课程中讲过的关于根分布在怎样的界限内的知识,对我们今后讨论求方程式的根的近似方法是有用处的。先叙述两个求方程式正根上界的方法(证明参阅[1]或[2])。
1)设实系数方程式
n n-1
f(x)=a x +a x +...+a =0 (1)
0 1 n
的最高次项的系数a 是正的(否则,以-1相乘两端)k≥1是它的第一个负系数的下标,
0
以及B为所有负系数的绝对值的最大值,那么
k
B
R=1+ (2)
a
0
是方程式(1)的正根上界。
2)设(1)的最高次项的系数a >0,
0
n
如果x=a时方程本身及其各次导数f(x),f``(x),...,f (x)都取正值,那么a为(1)的正根上界。 例.求方程 4 2 f(x)=x -5x +6x-8=0 的正根上界. 方法(1),此处k=2和B=8,由(2)得到它的正根上界大致为4. k 2 B 8 R=1+ =1+ =3.8284 a 1 0 方法(2),它的各次导数为: 3 f(x)=4x -10x+6
2
f``(x)=12x -10
f```(x)=24x
(Ⅳ)
f (x)=24
当x=2时,它们皆为正,因此方程正根的上界为2. 由例可见,方法(2)比方法(1)准确一些。现在来讲实根定位的斯多姆(Sturm)方法。
设f(x)=0是实系数的方程式。假定f(x)不含重因子,即f(x)和f(x)彼此互质。使用辗转相除法于f(x)和f(x)后,我们有函数列:
f(x)=g(x)f`(x)-f (x),
1
f`(x)=g (x)f (x)-f (x), } (3) 1 1 2 …… f (x)=g (x)f (x)-f (x), m-2 m-1 m-1 m
式中f (x)表示方程f(x)和导数f(x)的最高因式。 m (3)具有下列性质,并称它为f(x)的斯多姆函数列。 a)任何两个相邻的函数没有公共根。 b)若α是f (x)的实根,则f (x)的相邻函数f (x)和f (x)在x=α处不同号。 k k k-1 k-1 c)若x增加时,经过函数列中某一函数(f(x)和f (x)除外)的实根, m 则函数列(3)变号不受影响。 d)当x经过f(x)的实根时,则f(x)和f(x)之间的变号减少一个。这样一来,我们有实根定位的斯多姆方法:
设a和b不是f(x)的根。f(x)在区间[a,b]内实根的个数等于x由a变到b时f(x)的斯多姆函数列减少的变号数。
事实上,若x增加时经过斯多姆函数列(f(x)和f (x)除外)某函数的实根,
m
由性质c)斯多姆函数列的变号数保持不变。若x经过f(x)的实根,由性质d)f(x)和f`(x)之间的变号数减少一个。从而整个斯多姆数列的变号数减少一个。因此,当x从a增至b时,变号数减少的数目等于区间[a,b]中所含f(x)的实根的个数。
例.试求方程式
5 4 3 2
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.97=0
的实根个数。作出f(x)的斯多姆函数列:
5 4 3 2
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.97
4 3 2
f`(x)=25x -57.28x +13.59x -30.78x-9.86
3 2
f (x)=4.750x +7.677x +11.414x-22.84
1
2
f (x)=-111.50x -324.17x+479.58
2
f (x)=-49.75x+49.30 3
f (x)=-48.95
4
求出函数列在x=+∞和x=-∞的变号数:
f(x) f`(x) f (x)
1 f (x)
2 f (x)
3 f (x)
4 变号数目
-∞ - + - - + - 4
}减少3
1
+∞ + + + - - -
求函数列在x=+∞和x=-∞的变号数的过程如下:
x=+∞时,f(x)计算过程如下所示
5 4 3 2 5 5
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.975=5(+∞) =5(+1) =+∞
4 3 2 4 4
f`(x)=25x -57.28x +13.59x -30.78x-9.86=25(+∞) =25(+1) =+∞
3 3 3 3
f (x)=4.750x +7.677x +11.414x-22.84=4.750(+∞) =4.750(+1) =+∞ 1
2 2 2
f (x)=-111.50x -324.17x+479.58=-111.50(+∞) =-111.50(+1) =-∞ 2
f (x)=-49.75x+49.30=-49.75(+∞)=-∞ 3
f (x)=-48.95
4
x=-∞时,f(x)计算过程如下所示
5 4 3 2 5 5
f(x)=5x -14.32x +4.53x -15.39x -9.86x+23.975=5(-∞) =5(-1) =-∞
4 3 2 4 4
f`(x)=25x -57.28x +13.59x -30.78x-9.86=25(-∞) =25(-1) =+∞
3 2 3 3
f (x)=4.750x +7.677x +11.414x-22.84=4.750(-∞) =4.750(-1) =-∞ 1
2 2 2
f (x)=-111.50x -324.17x+479.58=-111.50(-∞) =-111.50(-1) =-∞ 2
f (x)=-49.75x+49.30=-49.75(-∞)=-49.75(-1)=+∞ 3
f (x)=-48.95
4
由此可见,f(x)=0有三个实根在区间[-∞,+∞]内。
用方法2求实根,f(x)的各次导数为
4 3 2
f`(x)=25x -57.28x +13.59x -30.78x-9.86
3 2
f (x)=4.750x +7.677x +11.414x-22.84 1
2
f (x)=-111.50x -324.17x+479.58 2
f (x)=-49.75x+49.30 3 当x=3时,它们皆为正,因此方程正根的上界为3. 用求实根上界的第二方法,不难求出它的实根上界等于3,应用斯多姆方法得: f(x) f`(x) f (x) 1 f (x) 2 f (x) 3 f (x) 4 变号数目 -1 - + - + + - 4 3 }减少1 2 }减少1 2 1 }减少1 0 + - - + + - 1 - - + + - - 2 - - + - - - 3 + + + - - - 由此推出,f(x)=0的三个实根位置是:-1≤x≤0,0≤x≤1,2≤x≤3, 知道实根位于哪个区间后,就能用古典的隔离法求出根的近似值。 设已知f(x)有一实根在某一区间上,我们平分该区间,得两个区间,其中必有一区间有f(x)的根。再分这个新区间,又得两个区间,其中必有一个有f(x)的根。再继续上面的作法,我们就得到一系列分点a ,a ,...,a (如图5.1), 1 2 n 这些点是逼近于方程式f(x)=0的根α的,这就是根的隔离法。
2.迭代法
1.普通的迭代法
将已知方程f(x)=0改写为
x=φ(x) (4)
应用前节所讲的方法,能求出根的粗糙近似值x ,
0
我们把x 代入(4)式的右端,就得到较好的近似值
0
x =φ(x )
1 0
以后一些近似值是
x =φ(x ) (i=1,2,...)
i+1 i
先来看一看它的几何意义。从(4)的写法,看出求方程f(x)=0的根归结为找直线y=x和曲线y=φ(x)的交点B的横坐标α。
设初始近似x 是曲线y=φ(x)上点A 的横坐标,
0 0
计算出φ(x )就确定了A 的横坐标。 0 0
同时水平直线y=φ(x )和直线y=x相交于点A` ,其横坐标等于x =φ(x ),
0 0 1 0
计算出φ(x )后就得到垂线x=x 和曲线y=φ(x)的交点A [x ,φ(x )], 1 1 1 1 1
如此继续下去,得点列A ,A ,A ...(如图5.2). 0 1 2 也就是说迭代过程未必收敛(图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.677811.32219, 2.78164=2.103811.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
=20.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.278881
1 -0.2173 0.33374 2.09016 -2.03442
-0.2173=-2+1.782701, 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+i2.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=11 2=21 -1=-11 -1=-11 1.0833
1 2=1+1 -1=21-3 -1=-11-0 S =-13=-11-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