• Tidak ada hasil yang ditemukan

实根的近似计算 - Dr. Huang

N/A
N/A
Protected

Academic year: 2023

Membagikan "实根的近似计算 - Dr. Huang"

Copied!
10
0
0

Teks penuh

(1)

§4 实根的近似计算

f(x)为已知连续函数,ξ 是方程

f(x)=0

的根,这里方程可以是一般方程(代数方程或超越方程).在实际问题中都给出了根的范围,

例如代数方程

f(x)=a0xn+a1xn1++an-1x+an=0 的根ξ 的范围是

ξ 1+

0

1

a max{a1,a2,,an}

因此可以假定方程在区间(a,b)内只有一个根(若有两个根,则将区间的一个端点换为使

f(x)=0 的点).并由函数的连续性可知,一般来说,在根的附近 f(x)是异号的(当 f(ξ )=0

或除外),所以在下面介绍的各种近似计算中,都假定f(a)和f(b)异号.

一、秦九韶法*

秦九韶法基本上是通过逐次试验求根的近似值的方法,试验次数愈多,所得近似值愈接 近根的真值.系统地继续这一过程,直至达到预定的有效数字的位数.现举例具体说明这个方 法.

例 求方程

f(x)=x3 18x300 (1) 的根到五位有效数字.

应用笛卡尔符号法则可知这个方程有一个正根.由于f(1)=-11,f(2)=14,这个正根在(1,2) 之间.

现在应用秦九韶法求这个方程的近似根.先设 px1,这里 p表示 1 到所求根的距离.

应用多项式的泰勒公式(秦九韶法,见§2,一),得到关于p的方程

p3 3p2 21p110 (2) 其算式为

1













d 11 21 3 1

30 19 2 1

18 1 1

0 1 1

现在求纯小数 p的近似值,由于纯小数的三次方或二次方的值更小,可暂舍去方程(2)的

头两项而来计算21 p-11=0,即p=0.5238….但舍去的两项是正的,这个值显得太大.当p

0.500 时,方程(2)的左边各项的和是仍是正数(0.375),而当p=0.400 时,方程(2) 的左边各

项的和是负数(-2.056).因此,设p0.4h(h0),即hp-0.4,再应用多项式的泰勒公式,

(2)

得到关于h的方程

h3 4.2h223.88h2.0560 (3) 其算式为

* 我国古代数学家秦九韶在他所著的<<数书九章>>(1247),给出一个求代数方程的根近似值 的方法,这个方法一般书上都称为和纳法.实际上和纳在1819年才提出这个方法,比秦九 韶晚五百多年.

4 . 0













d 0 5 6 . 2 88 . 23 2 . 4 1

11 36

. 22 8 . 3 1

21 4 . 3 1

3 1 1

现在求小数h的近似值,舍去头两项,求得h=0.08609….因舍去两个正量,所得的h太大,

所以设h=0.08q(q0),即qh-0.08.应用上述方法得到关于q的方程

q34.44q2 24.5712q0.1 1 8 2 0 80 (4) 同 上 面 一 样 , 从 方 程(4)的 后 两 项 求 得 q0.00481, 设 q0.004r (r 0) ,即

, 004 .

0

q

r 得到关于r的方程

r3 4.452r2 24.6 0 6 7 6 8r0.0 1 9 8 5 2 0 9 60 (5) 从后两项求出r的近似值r =0.0008…,因舍去的都是正量,所以方程(5)的根在 0.0008 和 0.00081之间.

现在把(2),(3),(4),(5),的各个近似值0.4,0.08,0.004,0.0008相加得总和0.4848,然后加到第一 次近似值1上,所以方程(1)的根在1.4848与1.48481之间,取五位有效数字为1.4848.

用秦九韶法还能求负的近似值.想求f(x)=0的一切负实根,可先求 f(-x)的正实根,然后 改变符号,即得负实根.

二、二分法

假定 f(x)在[a,b]上连续,且 f(a)f(b)<0(这里假定 f(a)<0,f(b)>0 ) , 取 区 间 [a,b] 的 中 点

2 b

a , 若



 

  2

b

f a =0,则 f(x)=0 的根是ξ =

2 b

a .不然,若



 

  2

b

f a >0,则令 a1=a,b1= 2

b

a ;若

 

  2 b

f a <0,

则令 a1= 2

b a

,b1=b.于是形成新区间[a1,b1],它包含

f(x)=0的根ξ (图3.2).

再 取[a1,b1]的 中 点 2

1

1 b

a  , 若

 

  2

1

1 b

f a =0, 则ξ =

2

1

1 b

a

.若

 

  2

1

1 b

f a >0, 则 令

(3)

a2=a1,b2= 2

1

1 b

a  ;若

 

  2

1

1 b

f a <0,则令 a2=

2

1

1 b

a

,b2=b1.于是又形成新区间[a2,b2],其长度

等于 2 2

a

b ,它包含方程f(x)=0的根ξ .…若允许误差ε =10k,则按这个过程作出区间[a1,b1], [a2,b2], [a3,b3],, [an,bn],n= 

 

  

2 lg

) lg(b a

k ([x]表示x的整数部分),于是 ξ *=

2

n

n b

a

是方程f(x)=0的近似根,误差不超过

ξ -ξ * 1 2

n

a b 10k

二分法是求实根的近似计算中行之有效的最简单的方法,它只要求函数是连续的,因此 它的使用范围很广,并便于在电子计算机上实现.但是它不能求重根,也不能求虚根.

三、迭代法

把方程f(x)=0表成它的等价形式

x=(x) 或一般地

f1(x)=f2(x)

式中f1(x)是这样一个函数:对任意实数c,能容易算出方程f1(x)=c的精确度很高的实根.如果

对任意ax1b,ax2b,下式成立:

1 )

( ) (

1 1

2

2  

q x f

x f

则下面迭代过程是收敛的.

首先从一个近似根x0出发(x0可由图解法粗略估计出),代入方程右边,解方程 f1(x)=f2(x0)

得到第一个近似根x=x1,再解方程

f1(x)=f2(x1) 得到第二个近似根x=x2,,类似地由第n个近似根 xn,解方程

f1(x)=f2(xn)

得到第n+1个近似根x=xn+1,于是得到一系列不同 精确度的近似根

x0, x1, x2,, xn,

它收敛于方程的根ξ (图3.3).

收敛速度(即误差消失速度)与an相当,而 a

0 1

1 2

x x

x x

  用

(4)

 

0 2

2 1 2

2 x

x x

x

 

代替 x2可加速收敛.式中x1=x2x1x1的一阶差分,

2x0=x1-x0x0的二阶差分.

对 于 方 程 x=(x), 只 要(x)在[a,b]上 连 续 , 且

(x) 

q<1,那末,它的根可由

x1=(x0) x2=(x1)



xn+1=(xn) 来接近(图3.4).

四、牛顿法

1.一般牛顿法

f(x)在[a,b]上连续, f(x)也连续,且 f(x)0,f (x)0,f(a)f(b)<0(设f(a)<0,f(b)>0),

过点(a,f(a))(或点(b,f(b)))作曲线的切线:

) ) (

( f a

a x

a f

y  

 (或 ( ) ( )

b b f

x b f

y  

 )

它和x轴的交点为x=a

) (

) (

a f

a f

 (或x=b

) (

) (

b f

b f

 ) 用迭代公式

xn+1=xn

) (

) (

n n

x f

x f

 并取初始值

x0=



 

  0 ) ( ,

0 ) ( ,

x f b

x f a

当 当

可计算出方程f(x)=0的根的近似值(图3.5).误差-xn不超过 )

( min

) (

x f x f

b x a

n

(5)

一般选取的初始值x0,要满足不等式

2 ) ( ) ) (

( 0 2 f x0 f x0 x

f 

  2.近似牛顿法

如果 f(x)不易算出,可改用差商代替,得出近似牛顿法迭代程序:

xn+1=xn

) (

) (

) ( 2

h x f h x f

h x f

n n

n

  3.逐次压缩牛顿法

求实系数代数方程

f(x)=a0xn+a1xn-1++an=0

的单实根时,用牛顿法求出一个实根x0后,可把多项式的次数降低一次,降低次数后的多项 式系数bk

b0=a0

bk=ak+x0bk-1 (k=1,2,,n-1)

然后,再把求出的实根作为初始近似值,用同法求出再次降低次数的多项式的实根,依此求 出全部单实根.

4.牛顿法解非线性方程组 假设非线性方程组

   



 0 ,

0 ,

y x

y x u

存在一组近似解P0=(x0,y0),且

0

0

 

y p

x y u x u

可用迭代公式:

xn+1=xn+

pn

n

y y u u

J

 



 1

yn+1=yn+

pn

n

x x u u J



 

1

式中Pn为点(xn,yn),Jn为雅可比式JPn的值:

pn

n

y x

y u x u J

 

 

(6)

五、弦截法(线性插值法)

假设 f(x)在[a,b]上连续, f(x),f (x)都不变号,且 f(a)f(b)<0(这里假定 f(a)<0,f(b)>0).

过点(a,f(a))和(b,f(b))的直线是:

a b

a x a f b f

a f y

 

) ( ) (

)

( (或

a b

x b a f b f

y b f

 

 ) ( ) (

)

( )

它和x轴的交点是x=a

) ( ) (

) ( ) (

a f b f

a f a b

 (或x=b

) ( ) (

) ( ) (

a f b f

b f a b

 ).

a)当 f(x) f (x)>0时,用迭代公式





 

a x

a f b f

b f x b b

xn n

0

1 ( ) ( )

) ( ) (

可求出方程的近似根(图3.6(a)).

b)当 f(x) f (x)<0时,用迭代公式





 

b x

a f x f

a f a a x

x

n n n

0

1 ( ) ( )

) ( ) (

可求出方程f(x)=0的近似根(图3.6(b)).

六、联合法(牛顿法与弦截法联合使用)

假设f(x)在[a,b]上连续, f(x),f (x)都不变号,且f(a)f(b)<0(这里假定f(a)<0,f(b)>0).

a)当f(a)与 f (x)同号时(图3.7(a)),用迭代公式 x1=a

) (

) (

a f

a f

  x1=b

) ( ) (

) ( ) (

b f a f

b f b a

 

(7)

x2=x1

) (

) (

1 1

x f

x f

  x2=x1

) ( ) (

) ( ) (

1 1

1 1 1

x f x f

x f x x

 

 



xn=xn-1

) (

) (

1 1

 

n n

x f

x f

xn=xn1

) ( ) (

) ( ) (

1 1

1 1

1

 

n n

n n

n

x f x

f

x f x x

可求出方程f(x)=0的近似根.

b)当f(a)与 f (x)异号时(图3.7(b)),用迭代公式 x1=a

) ( ) (

) ( ) (

a f b f

a f a b

 

x1=b

) (

) (

b f

b f

  x2=x1

) ( ) (

) ( ) (

1 1

1 1 1

x f x f

x f x x

 



x2=x1

) (

) (

1 1

x f

x f

 



xn=xn-1

) ( ) (

) ( ) (

1 1

1 1

1

 

 

n n

n n

n

x f x f

x f x x

xn=xn1

) (

) (

1 1

 

n n

x f

x f

可求出方程f(x)=0的近似根.

误差 xn   xn xnxn   xn xn . 七、抛物线法(穆勒法)

求实系数n次方程

f(x)=xn+a1xn-1++an=0 (1) 的近似根.

可先求出f(x)=0的一个根x=r,则 f(x)=(x-r)g(x)

(8)

=(xr)(xn1+b1xn2++bn-1)

式中g(x)是n-1次多项式,然后再求出g(x)的根,依此类推,可以求出f(x)=0的全部实根来.

首先选取x轴上三点:x0,x1,x2,通过曲线y=f(x)上的三点:(x0,f(x0)), (x1,f(x1)),(x2,f(x2))作一抛

物线 y=P(x)(即拉格朗日插值多项式,见第十七章,

§2,三),抛物线与x轴有两个交点,取离x2较近的一 点作为x3;再过三点(x1,f(x1)), (x2,f(x2)), (x3,f(x3))作一抛 物线(图3.8中的虚线),它与 x轴有两个交点,取离 x3较近的一点作为x4,依此法作出点xi-2, xi-1, xi,再 过三点(xi-2,f(xi-2)), (xi-1,f(xi-1)), (xi,f(xi))作一抛物线与x轴 有两个交点,取离xi较近的一点作为xi+1,等等.

对于预先给定的允许误差,当迭代过程进行到

xi+1-xi<

时,就取xi+1作为f(x)=0的一个近似根.

由此得到的序列是收敛的.极限值

n

xn

 lim ,就是

方程f(x)=0的根.

迭代步骤如下:

(1)根据经验对上式(1)可取

x0=-1, x1=1, x2=0 作为初始值,于是

f(x0)=(-1)n+(-1)n1a1+-an-1+an

f(x1)=1+a1++an f(x2)=an

或用x=0附近的近似值

f(x0)an-2an-1+an

f(x1) an-2+an-1+an

f(x2)=an

(2)设

i=

2 1

1

i i

i i

x x

x

x , i=1+i=

2 1

2

i i

i i

x x

x x

gi=f(xi-2)i2f(xi-1)ii +f(xi)i

hi=f(xi-2)i2

-f(xi-1)i2

+f(xi)(i+i) 由此根据xi-2, xi-1, xi 计算出i, i, gi, hi,并根据下列公式计算出i+1

i+1=

i i i i

i

i i

g x f h h

x f

 ) ( 4

) ( 2

2

hi>0,根式取正号;hi<0,根式取负号)

f(xi-2)=f(xi-1)=f(xi)时,取i+1=1.

(3)根据公式

(9)

xi+1=i+1(xixi-1)+xi 计算出xi+1

八、林士谔—赵访熊法(劈因子法)

由于解二次方程是容易的,因此在求实系数代数方程 f(x)=xn+a1xn1++an-1x+an=0

的复根时,如果找出f(x)的一个二次因子,就等于找到方程的一对复根.

f(x)的一个近似二次因子(任意选取)为

 (x)=x2+px+q 可用下述方法使它精确化:

(1)用 (x)去除f(x),得到商式Q(x)和余式R(x),即 f(x)=  (x)Q(x)+R(x)

=(x2+px+q)(xn2+b1xn3++bn-3x+bn-2)+(r1+r2) 式中商式与余式的系数可用下面的递推公式算出:

bk=ak-pbk-1-qbk-2, k=1,2,,n b-1=0, b0=1

r1=bn-1=an-1-pbn-2-qbn-3

r2=bn+pbn-1=an-qbn-2

(2)用 (x)去除xQ(x)得到余式

R[1](x)=R11xR21`

式中R11,R21,由下面的递推公式算出:

ck=bn-pck-1-qck-2, k=1,2,,n-3 c-1=0, c0=1

R11=bn-2-pcn-3-qcn-4 R21=-qcn-3

(3)用 (x)去除Q(x)得到余式

R[2](x)=R12xR22`

式中R12,R22,由下面的公式算出:

R12=bn-3-pcn-4-qcn-5

R21=bn-2-qcn-4

(4)解二元一次线性方程组

 

2 22

21

1 12 11

r R

u R

r R

u R

得到u,

.

(5)修正后的二次式为

[1](x)=x2+(p+u)x+(q+

)

如果它还不够精确,再重复(1)至(5)的步骤进行修正,直到足够精确为止.

林士谔—赵访熊法求实系数代数方程的复根,其优点是避免了复数运算,缺点是程序比 较复杂.

九、下降法

对任意实系数超越方程组

(10)

 

 

0 ) , , , (

0 ) , , , (

0 ) , , , (

2 1

2 1 2

2 1 1

n n

n n

x x

x f

x x

x f

x x

x f

(1)

定义目标函数

F(x1,x2,,xn)=

n

i

fi 1

2

如果 F(1,2,,n)<(为在一定精确度下给定的适当小的正数),则认为1,2,,n为方程组

(1)的解.

具体计算步骤如下:

(1)任取一组初始值x1(0),x2(0),,xn(0)(全不为零),设已按照下述过程计算到第m步得到 一组值:x1(m)

,x2(m),,xn(m)

(2)计算

Fm=F(x1(m)

,x2(m)

,,xn(m)

)

(3)若Fm<,则x1(m)

,x2(m),,xn(m)是所求的解,否则计算n个偏导数:

i m i

m

H x

F 1

)

(

 [F(x1(m)

,x2(m),,xi(m)

+Hi,, xn(m))-Fx1(m)

,x2(m),,xn(m))]

Hi=xi(m) i=1,2,,n

(4)计算

xi(m+1)

= xi(m)

) (m i

m

m x

F

  , i=1,2,,n 式中



 

 

n

i

m i

m m n m

m m

x F

x x

x F

1

2

) (

) ( ) ( 2 ) (

1 , , , )

( 

得到一组{xi(m+1)},再重复(2),(3),(4)的计算.

Referensi

Dokumen terkait

求矩阵按模最大特征值的乘幂法 设A是n阶矩阵,如果数λ和n维非零列向量x使关系式: Ax=λx, 则称数λ为方阵A的特征值,非零向量x称为A的对应于特征值λ的 特征向量。 特征值λ计算方法行列式: 上述称为A的特征多项式,零根即为A的特征值。... 求矩阵按模最大特征值的乘幂法 故当k→∞时,