1第7章非线性方程与方程组的数值解法•7.1方程求根与二分法•7.2不动点迭代法及其收敛性•7.3迭代收敛的加速方法•7.4牛顿法•7.5弦截法与抛物线法•7.6非线性方程组的数值解法2例如代数方程x5-x3+24x+1=0,超越方程sin(5x2)+e-x=0.对于不高于4次的代数方程已有求根公式,而高于4次的代数方程则无精确的求根公式,至于超越方程就更无法求出其精确的解,因此,如何求得满足一定精度要求的方程的近似根也就成为迫切需要解决的问题,为此,本章介绍几种常见的非线性方程的近似求根方法.引言3主要讨论单变量非线性方程f(x)=0(1.1)的求根问题,这里x∈R,f(x)∈C[a,b].在科学与工程计算中有大量方程求根问题,其中一类特殊的问题是多项式方程)2.1(),0()(01110aaxaxaxaxfnnnn其中系数ai(i=0,1,,n)为实数.4方程f(x)=0的根x*,又称为函数f(x)的零点,它使得f(x*)=0,若f(x)可分解为f(x)=(x-x*)mg(x),其中m为正整数,且g(x*)≠0.当m=1时,则称x*为单根,若m1称x*为(1.1)的m重根,或x*为函数f(x)的m重零点.若x*是f(x)的m重零点,且g(x)充分光滑,则当f(x)为代数多项式(1.2)时,根据代数基本定理可知,n次代数方程f(x)=0在复数域有且只有n个根(含复根,m重根为m个根)..0)(,0)()()()()1(xfxfxfxfmm5n=1,2时方程的根是大家熟悉的,n=3,4时虽有求根公式但比较复杂,可在数学手册中查到,但已不适合数值计算,而n≥5时就不能用公式表示方程的根.因此,通常对n≥3的多项式方程求根与一般连续函数方程(1.1)一样都可采用迭代法求根.迭代法要求给出根x*的一个近似,若f(x)∈C[a,b]且f(a)f(b)0,根据连续函数性质中的介值定理可知方程f(x)=0在(a,b)内至少有一个实根,这时称[a,b]为方程(1.1)的有根区间.例1判断方程f(x)=x3-x-1=0的有根区间.x00.511.52f(x)---++6设f(x)在区间[a,b]上连续,f(a)·f(b)0,则在[a,b]内有方程的根.取[a,b]的中点将区间一分为二.若f(x0)=0,则x0就是方程的根,否则判别根x*在x0的左侧还是右侧.,)(210bax若f(a)·f(x0)0,则x*∈(a,x0),令a1=a,b1=x0;若f(x0)·f(b)0,则x*∈(x0,b),令a1=x0,b1=b.不论出现哪种情况,(a1,b1)均为新的有根区间,它的长度只有原有根区间长度的一半,达到了压缩有根区间的目的.7.1方程求根与二分法7对压缩了的有根区间,又可实行同样的步骤,再压缩.如此反复进行,即可的一系列有根区间套],[],[],[11nnbababa由于每一区间都是前一区间的一半,因此区间[an,bn]的长度为)(ababnnn21若每次二分时所取区间中点都不是根,则上述过程将无限进行下去.当n→∞时,区间必将最终收缩为一点x*,显然x*就是所求的根.8abx0x2abWhentostop?11εxxkk2)(εxf或不能保证x的精度x*2xx*9若取区间[an,bn]的中点)(nnnbax21作为x*的近似值,则有下述误差估计式111*()()22nnnnxxbaba只要n足够大,(即区间二分次数足够多),误差就可足够小.),(,*11nnnbaxx由于在偶重根附近曲线y=f(x)为上凹或下凸,即f(a)与f(b)的符号相同,因此不能用二分法求偶重根.10例2用二分法求例1中方程f(x)=x3-x-1=0的实根,要求误差不超过0.005.解由例1可知x*∈(1,1.5),要想满足题意,即:则要005.021)15.1(21)(21211nnnab|x*-xn|≤0.005由此解得取n=6,按二分法计算过程见下表,x6=1.3242为所求之近似根.,6.512lg2n11nanbnxnf(xn)说明01234561.01.251.251.31251.31251.31251.32031.51.51.3751.3751.34381.32811.32811.251.3751.31251.34381.32811.32031.3242-+-++--(1)f(a)0,f(b)0(2)根据精度要求,取到小数点后四位即可.二分法的优点是算法简单,且总是收敛的,缺点是收敛的太慢,故一般不单独将其用于求根,只是用其为根求得一个较好的近似值.12逐步搜索法从区间[a,b]的左端点a出发,按选定的步长h一步步向右搜索,若f(a+jh)·f(a+(j+1)h)0(j=0,1,2,)则区间[a+jh,a+(j+1)h]内必有根.搜索过程也可从b开始,这时应取步长h0.137.2不动点迭代法及其收敛性7.2.1不动点迭代法将方程f(x)=0改写为等价方程形式x=(x).(2.1)若要求x*满足f(x*)=0,则x*=(x*);反之亦然,称x*为函数(x)的一个不动点.求f(x)的零点就等于求(x)的不动点,选择一个初始近似值x0,将它代入(2.1)右端,即可求得x1=(x0).14.limxxkk可以如此反复迭代计算xk+1=(xk)(k=0,1,2,).(2.2)(x)称为迭代函数.如果对任何x0∈[a,b],由(2.2)得到的序列{xk}有极限则称迭代方程(2.2)收敛.且x*=(x*)为(x)的不动点,故称(2.2)为不动点迭代法.15当(x)连续时,显然x*就是方程x=(x)之根(不动点).于是可以从数列{xk}中求得满足精度要求的近似根.这种求根方法称为不动点迭代法,1()(0,1,2,)kkxxk称为迭代格式,(x)称为迭代函数,x0称为迭代初值,数列{xk}称为迭代序列.如果迭代序列收敛,则称迭代格式收敛,否则称为发散.(几何意义的解释见下页)1()(0,1,2,)kkxxk.limxxkk16xyy=xxyy=xxyy=xxyy=xx*x*x*x*x0p0x1p1x0p0x1p1x0p0x1p1x0p0x1p11703224xxx分别按以上三种形式建立迭代公式,并取x0=1进行迭代计算,结果如下:14)(2xxx32)(243xxxx4121)23()(xxxx解对方程进行如下三种变形:例1用迭代法求方程x4+2x2-x-3=0在区间[1,1.2]内的实根.18准确根x*=1.124123029,可见迭代公式不同,收敛情况也不同.第二种公式比第一种公式收敛快得多,而第三种公式不收敛.73496,8.49530710xx12()41kkkxxx4213()23kkkkxxxx12411()(32)kkkkxxxx26271.124123xx671.124123xx19当方程有多个解时,同一个迭代法的不同初值也可能收敛到不同的根.20例1表明原方程化为x=(x)的形式不同,有的收敛,有的不收敛,有的发散.例2表明同一个迭代法的不同初值可能收敛到不同的根.只有收敛的的迭代过程才有意义,为此我们首先要研究(x)的不定点的存在性及迭代法的收敛性.217.2.2不动点的存在性与迭代法的收敛性首先考察(x)在[a,b]上不动点的存在唯一性.定理1设(x)∈C[a,b]满足以下两个条件:1º对任意x∈[a,b]有a≤(x)≤b.)4.2(.)()(yxLyx2º存在正数L1,使对任意x,y∈[a,b]都有则(x)在[a,b]上存在唯一的不动点x*.证明先证不动点的存在性.若(a)=a或(b)=b,显然(x)在[a,b]上存在不动点.因为a≤(x)≤b,以下设(a)a及(b)b定义函数22.)()(xxxf显然f(x)∈C[a,b],且满足f(a)=(a)-a0,f(b)=(b)-b0,由连续函数性质可知存在x*∈(a,b)使f(x*)=0,即x*=(x*),x*即为(x)的不动点.再证不动点的唯一性.设x1*,x2*∈[a,b]都是(x)的不动点,则由(2.4)得.)()(21212121xxxxLxxxx引出矛盾,故(x)的不动点只能是唯一的.证毕.在(x)的不动点存在唯一的情况下,可得到迭代法(2.2)收敛的一个充分条件.23定理2设(x)∈C[a,b]满足定理1中的两个条件,则对任意x0∈[a,b],由(2.2)得到的迭代序列{xk}收敛到的不动点x*,并有误差估计式)6.2(.1)5.2(.1101kkkkkxxLLxxxxLLxx证明设x*∈[a,b]是(x)在[a,b]上的唯一不动点,由条件1º,可知{xk}∈[a,b],再由(2.4)得.)()(011xxLxxLxxxxkkkk因0L1,故当k→∞时序列{xk}收敛到x*.24下面证明估计式(2.5),由(2.4)有111)()(kkkkkkxxLxxxx.01212xxLxxLkkk于是对任意正整数p有.11)1()(010101211211xxLLxxLLLxxLLLxxxxxxxxkpkkpkpkkkpkpkpkpkkpk上述令p→∞,注意到limxk+p=x*(p→∞)即得(2.5)式.25又由于对任意正整数p有.1111)1(111211211kkkkpkkppkkpkpkpkpkkpkxxLxxLLxxLLxxxxxxxx上述令p→∞,及limxk+p=x*(p→∞)即得(2.6)式.证毕.迭代过程是个极限过程.在用迭代法进行时,必须按精度要求控制迭代次数.误差估计式(2.5)原则上确定迭代次数,但它由于含有信息L而不便于实际应用.而误差估计式(2.6)是实用的,只要相邻两次计算结果的偏差足够小即可保证近似值xk具有足够精度.26对定理1和定理2中的条件2º可以改为导数,即在使用时如果(x)∈C[a,b]且对任意x∈[a,b]有)7.2(.1)(Lx则由微分中值定理可知对任意x,y∈[a,b]有).,(,)())(()()(bayxLyxyx故定理中的条件2º是成立的.27例如,在前面例3中采用的三种迭代公式,在隔根区间(1,1.2)内,有11.051544144)(112xxx187.0)2.1213(25.02.1)23(25.0)(4324321xxxx844)(33xxx2141()(32)xxxx2()41xxx423()23xxxx故前两个迭代公式收敛,第三个迭代公式不收敛.287.2.3局部收敛性与收敛阶上面给出了迭代序列{xk}在区间[a,b]上的收敛性,通常称为全局收敛性.有时不易检验定理的条件,实际应用时通常只在不动点x*的邻近考察其收敛性,即局部收敛性.定义1设(x)有不动点x*,如果存在x*的某个邻域R:|x-x*|≤δ,对任意x0∈R,迭代公式(2.2)产生的序列{xk}∈R,且收敛到x*,则称迭代法(2.2)局部收敛.29定理3设x*为(x)的不动点,在x*的某个邻域连续,且,则迭代法(2.2)局部收敛.1)(x)(x.1)(Lx证明由连续函数的性质,存在不动点x*的某个邻域R:|x-x*|≤δ,使对于任意x∈R成立.)()()()(