非线性方程根的求解(2)
- 格式:doc
- 大小:582.50 KB
- 文档页数:15
8 第二章 非线性方程根的求解
§1.引 言
本章将介绍单个非线性方程
f(x)=0 (2-1)
的求解几种常用的方法。通常我们把(2-1)的解也称为根或函数f(x)的零点。
我们在本章介绍的方法中,一般要求通过对所涉及函数f(x)的分析,尽量找出一个区间 [ a,b ],使方程(2-1)在此区间内有根,称这样的区间为根的隔离区间。一般情况下根的隔离区间长度越小越好。这样可以保证后面所用方法有较好的收敛效果。而根的隔离区间的取得,一般可通过应用零点的存在定理来确定。
定理:(零点存在定理)如果f(x)在[a,b]上连续,使f(a)f(b)<0,则必存在(a,b),使f()=0。
例:求方程3x-2x-5=0实根的隔离区间
解:设f(x)=3x-2x-5,则'2()32fxx,由此可知在2(,)3内()fx单调增,在22(,)33内()fx单调减,2(,)3内()fx单调增。但22()0,()033ff,所以()fx最多有一个实根。又因(2)10,(3)160ff,所以[2,3]是一个根的隔离区间。
为了以后叙述的方便,我们还给出以下定义。
定义:如果函数f(x)可以因式分解为:
f(x)=)x(g)x(m
且g()0,则称是f(x)的m重零点,也称为方程f(x)=0的m重根。如果m=1,则称为f(x)的单重零点或f(x)=0的一重根。如果m>1,则称为f(x)的m重零点或f(x)=0的m重根。
性质:如果函数f(x)充分可微函数,则是f(x)的m重零点的充要条件是:
f()=f ()=…=0)(f)1m(,但0)(f)m(
下面分别介绍求方程(2-1)实根的方法。
§2. 二 分 法 9
二分法的思想相当简单,其数学基础为零点存在定理。具体做法如下,假设函数f(x)在[a,b]上连续,且f(a) f(b)<0 ,令2bax0计算f(0x),如果f(0x)与f(a)同号,则令bb,xa101,否则令011xb,aa,这样可知f(x)必在[11b,a]中有零点;再对分,令2bax112计算f(2x),…,如此反复,可得到有根的区间套:
[a,b][11b,a] …[kkb,a]…
对分k次后,区间长度kkk2abab,如此下去{ka}及{kb}必收敛于一点x,此点即为f(x) =0的一个根。如果以中点2baxkkk作为x的近似,则误差为:
|1k1kkk2ab|xx||xx (2-2)
注意:①如果f(x) =0在[a,b]内有多个根,二分法尽管能求根,但求出的根是其中的那一个带有偶然性。最后得到其中的那一个根的近似值,一般与区间[a,b]的端点有关。
②如果f(x)=0在[a,b]内有唯一的根,则对分法得到的序列{kx},必收敛到方程的唯一根x,误差表达式(2-2)仍成立。
例:求方程3x-2x-5=0在[2,3]内的根的近似值,并指出其误差。
解:设f(x)=3x-2x-5,则
有根区间
f(2)=-1<0
f(3)=16>0 (2,3)
f(2.5)>0
f(2.25)>0
f(2.125)>0
f(2.0625)<0
f(2.09375)<0
f(2.109375)>0 (2,2.5)
(2,2.25)
(2,2.125)
(2.0625,2.125)
(2.09375,2.125)
(2.09375,2.109375)
取1015625.22109375.209375.2x,则x与根的绝对误差限为 10 721=0.0078125,即以x作为(2,3)间根的近似值,至少保证有2位有效数字。
对分法的优点是方法简单,只要函数f(x)连续,一定能求出根的近似值,并且可以预报迭代的大致次数。缺点是速度太慢,且无法知道是否是重根。下面是对分法的计算框图,是误差限。(见下页)
§3.迭 代 法
迭代法可分为单点迭代法和多点迭代法。单点迭代法的一般形式为:
)x(Fxi1i (i=0,1,…) (2-3)
其中F(x)是迭代函数,对于不同的方法可有不同的形式。一般依赖于(2-1)中的f(x)及
开始
输入a、b
2bax1ax1
计算)x(f1
0)a(f)x(f1
1xb 1xa 停止 N Y
Y N 输入a、b
输出1x 11
其各阶导数。F(x)的选取,要保证在给出合适的初始值0x后,由(2-3)产生的序列{nx}收敛到方程f(x)=0的根。
多点迭代法的一般形式为:
1ni1ii1ix,,x,x(Fx) i=0,1,… (2-4)
其中迭代函数F(n1y,,y)的选取也可有不同的形式,但选取的目的是:给出合适的初始值1n20x,,x,x,由(2-4)产生的序列{kx}应收敛到方程f(x)=o的根。
但不管那一种方法,都希望所选用的迭代函数所产生的序列是收敛的,且恰好收敛到所求方程f(x)=0的根。那么怎样选取迭代函数F及初始值?在介绍方法之前,先介绍两个重要概念。
1.局部收敛性:设是(2-1)的根,若存在的一个邻域,当迭代初值属于时,迭代法得到的序列{kx}收敛到,则称该迭代法关于根具有局部收敛性。
2. 收敛速度:设ix为第i次迭代值,是(2-1)的根,令iix,且假设迭
代收敛,即iixlim。若存在实数P1,使 c||||limpi1ii0
则称此方法关于根具有P阶收敛速度。C称为渐近误差常数,渐近误差常数C与f(x)有关。C0保证了P的唯一性。对于特殊的函数,C可能为零,此时,由这个函数针对此方法迭代产生的序列收敛得更快。一般情况下,P越大,收敛就越快。当P=1时,我们称为线性收敛。P>1,称为超线性收敛。P=2,称为平方收敛。
一、 简单迭代法
简单迭代法具体做法如下:把方程f(x)=0写成与其同解的方程:
x=F(x) (2—5)
然后建立迭代格式)x(Fxk1k。
但这种同解方程可有无穷多种。如果选取的F(x)满足如下定理的条件,则产生的序列必收敛。
定理:设F(x)满足条件:
(1)当x[a,b]时,F(x) [a,b]
(2)F(x)在[a,b]上满足Lipschitz条件,且Lipschitz常数L<1。则:
方程x=F(x)在[a,b]上存在唯一的根,且对0x[a,b],迭代(2-3)产生的序列{ix}收敛 12 于,且有如下误差估计式:
i1iixxL11|x| (2-6)
或 10||1iiLxxxL (2-7)
证明:因为F(x)在[a,b]上满足Lipschitz条件,则F(x)在[a,b]上连续。由于F(x)
[a,b],x[a,b],则方程x=F(x)在[a,b]中至少有一根。如果方程x=F(x)在[a,b]中还有一个根,则由Lipschitz条件知:
||L|)(F)(F|||
由于0L<1,故必有,即根唯一。现仍取]b,a[x0,下证由 )x(Fxk1k产生的序列收敛于。
由于|x|L|)(F)x(F||x|kk1k0|x|L01k(k)
从而知)k(xk
再证(2-6)式,由于|)x(F)x(F||xx|2ik1ik1ikik
|xx|L2ik1ik
……
|xx|Li1i1k
从而知:||xx||xx||xx||xxi1i2in1in1ininiin
|xx|)1LL(i1i2n1n
<111iixxL|
令n,则得:
|xx|L11|x|i1ii
而(2—7)由上式继续递推即可得。
此定理告诉我们,如果L不是很接近于1的情况下,第i次迭代值ix与所求根间的误 13 差,可近似地用|i1ixx|来表示。由(2—7)还可预测要达到某一精度,需迭代的次数。
例:求92x-sinx-1=0在[0,1]内的一个实根。
解:令:f(x)=91xsinx2,由于f(x)=18x-cosx,故f(x) 在[0,+)先降而后升,因f(0)=-1<0,故可知f(x)在[0,+)只有一个零点,又因f(1)>0,故f(x)在[0,1]有且只有一个零点,现令:F (x)=1xsin31,则x=F(x)在[0,1]与原方程同解,易知F(x)满足定理的条件,从而令:
)x(Fxk1k,即:1xsin31xk1k
由于'cos()6sin1xFxx,所以.1()6Fx。因此可令L=16,如取0x=0.4,1x=0.392911969如要求误差不超过810,则由(2—7)可估计迭代次数i如下:810||101iiLxxxL
108ln10lnln(1)lnxxLiL=7.62025
而实际计算得如下结果:
=0.39186907 这与上面所分析的结果是一致的。
如果F (x)不满足定理条件就很难保证所得序列收敛。如取F (x)=arcsin(91x2), 0x 0.4 6x 0.391846948
1x 0.392911969 7x 0.391846912
2x 0.391986409 8x 0.391846907
3x
4x 0.391865185
0.391849302 9x 0.391846907
5x 0.391847220