1、第第5章章 非线性方程的数值解法非线性方程的数值解法5.1问题背景问题背景人口增长问题人口增长问题 设N(t)表示t 时刻人口数量,而表示人口固定出生率,那么人口满足下列微分方程:)()(tNdttdN(5.11)上述方程的解为:teNtN0)(5.12)其中N0表示初始人口数量。(5.12)式表示的人口指数模型只有当人口是封闭没有迁移时是有效的。如果允许以固定速率 迁移,那么微分方程应改为:vvtNdttdN)()(5.13)该微分方程的解为:)1()(0tteveNtN(5.14)假设最初人口为1000万,即N0=1000万,第一年有435万人迁入,而在当年末时人口为1564万人,为了确定
2、人口出生率,我们必须要求解下面关于的方程:)1(43510001564ee(5.15),令)1(4351000)(eeP则式(5.15)改为:01564)(1564)(PP或如图5.11所示。方程(5.15)表明要求解当年的出生率0,使满足1564)(0P 很显然,方程(5.14)是非线性方程,其解析解求解困难,只能求其近似解。本章讨论的数值计算方法就是当精确解无法通过代数方法获得时用于求该类非线性方程的近似解。一般而言,讨论非线性问题的数值方法,与线性问题相比,无论从理论上还是计算方法上都要复杂的多。非线性方程0)(xf(5.16)的解通常称为方程的根,或称之为函数f(x)的零点。代数方程代
3、数方程如果f(x)是多项式,即)0(,)(0111nnnnnaaxaxaxaxf则称方程(5.16)为代数方程。2.超越方程超越方程 如果f(x)中含有三角函数,指数函数或其它超越函数,则称方程(5.16)为超越方程超越方程。例如:062 xx(5.17)0332xxxe(5.18)方程(5.17)是一个二次代数方程,它的两个根可以表示为有限形式 2521x,即 3,221xx 方程(5.18)是一个超越方程,一般而言,必须用数值方法求它的解。方程的根可能是实数,也可能是复数,相应的称之为实根和复根。3.单根单根如果对于xk有0)(0)(kkxfxf,但则称xk为方程f(x)=0的单根单根。4
4、.重根重根如果有 0)()()()(kmkkxfxfxf0)()!(kmxf但则称xk为f(x)=0的m+1次重根重根。对于代数方程,由代数学基本定理可知(实根或复根)的个数与其次数相同,但对于超越方程却复杂的多,如果有解,其解可能有一个或几个,也可能有无穷多个。在大多数情况下,对于高于四次的代数方程及超越方程没有精确精确的求根公式。其实,在实际应用中并非一定要得到精确的根,只要得到满足一定精度要求的根的近似值就可以了,就象导弹击中飞机一样,击中飞机的各个部位都可以,并非一定要击中飞机的发动机。下面将介绍几种求解一般非线性方程的常用数值计算方法。5.2 二分法(二分法(the bisectio
5、n method)设f(x)在区间a,b上连续,且f(a)f(b)0,那么根据连续函数的零点定理,方程f(x)=0在(a,b)内至少有一个实根。为简便起见,不妨设f(x)=0在(a,b)内只有一个实根p。二分法基本思想二分法基本思想 用二分法求实根p的近似值的基本思路就是:逐步将包含有根p的区间二分,通过判断函数值的符号,逐步对半缩小有根区间,直到区间缩小到容许误差范围之内,然后取区间的中点为根p的近似值。具体方法如下:为讨论方便,不妨设 0)(,0)(bfaf如图5.21所示。Step1:,记bbaa11,区间a,b的中点)(211bap,再计算函数值)(1pf如果正好 0)(1pf则表示待
6、求的根就是)(211bapp否则判断)(1pf异号。还是与)()(bfafStep2:,如果0)(1pf1212,pbaa则记(即取原来区间的左半部分);,若0)(1pf1212,bbpa则记(即取原来区间的右半部);这样二分的区间a2,b2是方程新的有根区间,它被包含在旧的有根区间a1,b1即a,b之内,而且其长度仅是a1,b1的一半。对缩小了的区间a2,b2再计算其中点)(21222bap与判断)(2pf异号。还是)()(22bfafStep3:异号,与如果)()(22afpf2323,pbaa则记(即取区间a2,b2的左半部);异号,与若)()(22bfpf。则记2323,bbpa这样就
7、把有根p的区间缩小到更小的范围a3,b3,再计算其中点)(21333bap的二分以后求得的有根p区间ak,bk的中点为 如此反复重复上述的计算过程,经过k次这样)(21kkkbap而且 2121111abababkkkkk(5.21)很显然,如果无限二分下去,则有0)(21)(limlimababkkkkk,即kkkkablimlim因而零点p(根)为 kkkkkkkkkbabapplimlimlimlim)(21(5.22)但在实际计算时,不可能也完全没有必要进行这样的无限计算过程,只要有根区间的长度满足要求的精度即可停止计算,即满足:)(21)(21ababapkkkkk(5.23)则pk
8、就是方程f(x)=0的一个满足给定精度的近似根了。其中是预先给定的一个任意小正实数,如10-6,或者满足)(kpf(5.24)则表示pk是方程f(x)=0的一个满足给定精度要求的近似根。2.二分法算法的源程序(二分法算法的源程序(bisection.m)clear;format longa=input(a=?);b=input(b=?);tol=input(tol=?);N=input(N=?);n=1;fa=f(a);flag=0;while(n=N)p=(a+b)./2;fp=f(p);if(fp=0|(b-a)./20)a=p;fa=fp;else b=p end end if(flag
9、=1)P=,P else Method failed after N iterations,N=,N end说明说明:程序中函数f(x)应预先自定义,并取函数名存盘。以方程 052)(3xxxf为例,自定义一个名cubicf.m的函数,源程序如下:function y=cubicf(x)y=x.3-2*x-5经过上述函数定义以后,将bisection.m源程序中的f(a)改为cubicf(a),f(p)改为cubicf(p),那么就可运行bisection.m程序计算方程 052)(3xxxf的根了。3.总总 结结 二分法的优点是方法简单,编程容易,且对函数性质要求不高,仅仅要求它连续且在区间
10、两端点的函数值异号即可。其收敛速度与公比为1/2的等比数列相同。但是,二分法只能用于求实函数的实根,不能用于求复根及偶数重根。例例5.1 用二分法计算方程(5.15)中的人口出生率。解解:经编程计算,人口出生率为0.10099887847900。源程序如下(ex51.m):clear;format longa=0;b=1;tol=input(tol=?);N=input(N=?);n=1;fa=popu(a);flag=0;while(n=N)p=(a+b)./2;fp=popu(p);if(fp=0|(b-a)./20)a=p;fa=fp;else b=p;endif(flag=1)P=,p
11、 else Method failed after N iterations,N=,N endend其中使用的自定义函数(popu.m)为:function y=popu(x)if x=0y=-129;elsey=1000*exp(x)+435*(exp(x)-1)./x-1564;end5.3迭代法迭代法 迭代法是数值计算中的一类重要方法,是求解方程或方程组的一类基本方法。在科学计算和工程实际中经常使用,特别是随着计算机的普遍使用,使迭代法的应用更加广泛。迭代法的基本思路迭代法的基本思路 迭代法是一种逐次逼近的方法,其基本思想是使用某个固定公式反复校正根的近似值,从而得到一个近似根序列xk,
12、使得该序列的极限就是方程f(x)=0的根。(1)对于非线性方程f(x)=0,用迭代法求根的具体方法是:先将方程改写为便于迭代的等价形式:)(xx (5.31)式中 称为迭代函数。由于(5.31)式是隐式方程,其右端含有未知的x,因而不能直接求解,但如果用根的某个猜测值x0代入式(5.31)的右端,即可将它转化为显式的计算公式:)(x)(01xx若再取x1作为新的猜测值,又有)(12xx如此反复计算,其计算公式为 2,1,0,k,)(1kkxx(5.32)(5.32)式被称为迭代公式。如果迭代值xk有限,则称迭代收敛迭代收敛,这时极限值 kkxplim显然就是方程(5.31)亦即原方程f(x)=
13、0的根。将方程f(x)=0等价转化为隐式方程)(xx,其实质就是求y=x)(xy与的交点p,即,)(pp如果p是f(x)=0的根,即f(p)=0,那么有,或)()()()(pfpppfpp据此有)()(xfxx(5.33)(5.33)就是根据f(x)构造)(x的依据,从而得到(5.31)的等价迭代形式。如果p是 y=x)(xy与的交点p,那末,p一定是方程f(x)=0的根,反之亦然。由此可知,迭代公式(5.32)也称定点定点迭代公式迭代公式。2.线性迭代函数的启示线性迭代函数的启示 为了使迭代有效,必须保证它的收敛性。一个发散(即不收敛)的迭代过程,即使进行千百次迭代,其结果也毫无可用价值。为
14、了保证迭代过程的收敛性,迭代函数)(x的构造十分关键。以最简单的线性迭代函数dkxx)(为例可以容易验证 1)(kx)(xx时,的迭代才是收敛的,即 11k是保证迭代收敛的线性 迭代函数的基本特性(由作图法很容易验证这一特性)。3.压缩映像原理压缩映像原理对于迭代函数)(x的一般情形,设p为方程)(xx的根,则由微分中值定理有)()()(1kkkxpxpxp式中 是p与xk之间的某一点,即。),(kxp由此可知,如果存在 10 L,使得对于任意 bax,成立:Lx)(则有 1kkxpLxp(5.34)如此反复递推,对迭代误差 有kkxpe0eLekk,由于10 L,因而0limkke即迭代收敛
15、。需要指出的是,在上述论证过程中,应当保证一切迭代值xk全落在区间a,b内,为此要求对任意 总有,baxbax,)(综上所述有如下压缩映像原理压缩映像原理:定理定理5.1 设)(x在a,b上具有连续的一阶导数,且满足以下两个条件:,)对任意的(bax,1;总有bax,)(102 L)存在(使得对于任意 bax,成立 Lx)((5.35)则迭代过程)(1kkxx对任意初值 bax,0均收敛于方程)(xx的根p,且有下列误差公式:kkkxxLxp111(5.36)011xxLLxpkk(5.37)n=n+1;p0=p;%更新p0endif flag=1p=,p%The procedure was
16、successful.elseThe method failed after N iterations N=,Nend4.定点迭代法源程序(定点迭代法源程序(fixedp.m)clear;format long p0=input(p0=?);Tol=input(tolerance Tol=?);N=input(maximum number of iterations N=?);n=1;flag=0;While n=N p=f(P0);if abs(p-p0)tolflag=1;break;end例例5.2 求方程 013 xx的唯一正根。解解:因为f(1)=-1,f(2)=5,所以区间1,2含
17、有所求的根。为使用迭代,将所给方程改写为:31)1(xx这时迭代函数 31)1()(xx,而32)1(31)(xx在1,2上恒有 31)(x,由定理5.1可知,迭代公式 31)1(xx对任意初始值 2,1x均收敛。取初值x0=1.5,迭代结果如表5.1所示。表5.1 迭代结果k012345678xk1.51.357211.330861.325881.324941.324761.324731.324721.32472例例5.3用迭代法求解方程 016)(2xxxf的根(已知方程的一个根为)。5311289.3p解解:把方程改写为下列三种等价的迭代形式:16 12;)(xx 1162;)(xx12
18、1632xxxxx)(对于(对于(1):):,216xx,而42xx所以用 216xx作迭代函数时,无法收敛。对于(对于(2):):,而9161162xx 116xx所以用 116xx作迭代函数也无法收敛。对于(对于(3):):12162xxxxx 54)12(3322122xxxx而所以可用其作迭代函数。以x0=3为初值,迭代结果如下:5311289.3,5313283.3,5714286.3,33210 xxxx经过2次迭代即可达到3位有效数字精度。若将f(x)=0改为),(16xxx,因为114211621xx所以用 xx16为迭代函数时也收敛,结果如下:,5309173.3,53262
19、30.3,5205751.3,6055513.3,343210 xxxxx53112446.3,5311588.365xx由以上计算结果可知,两种迭代函数都可收敛,但收敛速度却不相同,前者很快收敛,而后者却收敛较慢,因此,构造出合适的迭代函数 十分重要。x5.迭代过程的收敛速度迭代过程的收敛速度 一种迭代法要具有实用价值,不仅需要肯定它是收敛的,而且还要求它收敛快。所谓收敛速度收敛速度是指在接近收敛时迭代误差的下降速度。具体而言就是,如果迭代误差 kkxpek当时成立:)0(1的常数cceepkk则称迭代过程是p阶收敛的。当p=1时称线性收敛;p=2时称平方收敛定理定理5.2 设 x xx在的
20、根p邻近有连续的二阶导数,且 1p 0p则时迭代过程 kkxx1为线性收敛;而当 ,0p 0 p时为平方收敛。5.4迭代过程的加速收敛方法迭代过程的加速收敛方法迭代公式的加工迭代公式的加工 对于收敛的迭代过程,只要迭代足够多次,就可以使迭代结果达到任意精度,但有时迭代过程收敛较慢,从而大大增加了计算量,因此,迭代过程的加速是个重要的研究课题。设xk是根p的某个近似值,用迭代公式校正一次得kkxx1kx假如在所考虑的范围内变化不大,其估值为L,则由微分中值定理有kkxpLxp1(5.41)从而得kkxLLxLp1111这表明,如果将迭代值 1kx与xk加权平均,可望所得到的 kkkxLLxLx1
21、1111是比 更好的近似根。其加速计算过程是:1kx迭代迭代:kkxx1加工加工:kkkxLLxLx11111它们合并为:kkkLxxLx111(5.42)例例5.4用迭代法和加速迭代法求方程 5.0 xexx在附近的一个根p,要求精度为10-5。解解:设迭代函数为 xxexex,,由于6.05.0p 1x即所以迭代方程 kxkex1是收敛的。(1)使用非加速迭代时,经过18次迭代即得到满足精度要求的根0.567141(准确值为0.56713)结果如表5.2所示。k01234567xk0.5000000.6065310.5452390.5797030.5600650.5711720.56486
22、30.568438k89101112131415xk0.5664090.5675600.5669070.5672770.5670670.5671860.5671190.567157k161718xk0.5671350.5671480.567141(2)使用加速迭代公式(5.42)时,而xex6.05.05.0e故取L=-0.6,此时加速迭代公式为:kxkkkxeLxxLxk6.06.11111计算结果如下:56714.0,56712.0,56658.0,5.03210 xxxx即只要迭代3次即可得到满足精度要求的结果,显然加速的效果显著的。2.埃特金算法埃特金算法 上述加速方案的缺点是,由于其
23、中含有导数 的有关信息而不便于实际应用。同样假定 在所考虑的范围内变化不大,其估值为L,将迭代值 x xkkxx1再迭代一次,即得到)(11kkxx由微分中值定理得)()()(111kkkxpLxpxp利用式(5.41):kkxpLxp1联立消去L得111kkkkxpxpxpxp从而得kkkkkkxxxxxxp1121112)(若以上式右端得出的结果作为新的改进值,那末这样构造出的加速公式不再含有关于导数的信息但是,它需要两次迭代值 11kkxx和进行加工,具体算法如下:迭代迭代:kkxx1再迭代再迭代:)(11kkxx加工加工:kkkkkkkxxxxxxx11211112)(5.43)上述方
24、法称之为埃特金(埃特金(Aitken)加速方法)加速方法。3.埃特金加速算法的源程序埃特金加速算法的源程序(aitken.m)clear;format long x0=input(x0=?);N=input(N=?);Tol=input(Tol=?);n=1;flag=0;While n=N x1=(x0);x2=(x1);x2=x2(x2x1).2./(x2-2*x1+x0);if abs(x2-x0)Tolflag=1;breakend n=n+1;x0=x2;end if flag=1 x2=,x,The procedure was successful else The method
25、failed after N iterations,N=,Nend 5.5 牛顿迭代法牛顿迭代法 牛顿迭代法是求解非线性方程f(x)=0的一种重要和常用的迭代方法,其基本思想是将非线性函数f(x)=0逐步线性化,从而将非线性方程f(x)=0近似地转化为线性方程的求解。牛顿迭代公式的导出牛顿迭代公式的导出对于方程f(x)=0设已知它的近似根为xk,则函数f(x)=0在点xk处作泰勒展开:2!2kkkkxxfxxxfxfxf取其前两项近似代替f(x)(称为f(x)的线性化),即用线性方程0kkkxxxfxf(5.51)来近似方程f(x)=0。很显然,方程(5.51)是线性方程,它的求根是很容易的。
26、,若0kxf则用线性方程(5.51)的根作为非线性方程f(x)=0的新近似根,记为xk+1,则有牛顿迭代公式牛顿迭代公式:)2,1,0,(k ,1kkkkxfxfxx(5.52)这就是著名的牛顿迭代公式牛顿迭代公式,相应的迭代函数是:)0(,xfxfxfxx(5.53)2)(xfxfxfx而如果p是方程f(x)=0的一个单根,即f(p)=0,而0pf,则0p 由此可见,在单根p的附近,对于任意的初值x0,由收敛性定理5.1可知,由迭代公式(5.52)得到的迭代序列都收敛于根p,而且收敛的速度很快(由定理5.2知)。牛顿法有明显的几何意义。方程f(x)=0的根p在几何上表示曲线y=f(x)与x轴
27、的交点p。当求得p的近似值xk以后,过曲线y=f(x)上的对应点(xk,f(xk)作f(x)的切线,其切线方程为:kkkxxxfxfy则该切线与x轴的交点横坐标正好是,kkkxfxfx 这就是牛顿迭代公式(5.52)的计算结果xk+1。继续取点(xk+1,f(xk+1),再作曲线y=f(x)的切线与x轴相交,又可得xk+2,由图5.51可知,只要初值x取得充分靠近根p,序列xk就会很快收敛于p。正因为牛顿法有这一明显的几何意义,所以牛顿法牛顿法也常称之为切线法切线法。02.牛顿法的收敛性牛顿法的收敛性 对于方程f(x)=0,如果f(x)在根p邻近具有连续的二阶导数,且p是f(x)=0的一个单根
28、,则在跟p的附近,对于任意的初始值x0,由牛顿迭代法产生的序列xk收敛于p,所以牛顿法具有局部收敛性,并且可进一步证明牛顿迭代法在单根p附近是平方收敛的,即具有二阶收敛速度。但是,如果p是f(x)=0的重根时,则可证明牛顿法仅有线性收敛速度,且重数越高收敛越慢。牛顿迭代法对初值x0的选取要求比较高,即x0必须充分靠近p才能保证局部收敛。为了保证牛顿法具有非局部收敛性,下面不加证明地给出一个判断牛顿非局部收敛的充分定理:定理定理5.3 设函数f(x)在区间a,b上存在二阶导数,且满足下列条件:0)()1(bfaf xf)2(在a,b上不为零;xf)3(在a,b上不变号;(4)在a,b上任意选取满
29、足条件 00 0 xfxf的初始近似值x0。则有牛顿法产生的序列xk单调收敛于方程f(x)=0在a,b上的唯一根3 牛顿迭代法源程序(牛顿迭代法源程序(newtoniter.m)clear;format longx0=input(x0=?);N=input(N=?);TOL=input(TOL=?);k=1;flag=0;While n=Nfdot=f(x0);if fdot=0 flag=0;breakendx1=x0f(x0)./fdot;if abs(x1x0)tolflag=1;breakendif n=Nflag=2;breakendn=n+1;x0=x1;endif flag=0
30、This equation has no solution;else if flag=1 p=,x1else This method failed after N iterations,N=,Nend例例 5.5 用牛顿法求解非线性方程 01xxexf解解:牛顿迭代公式为:kxkkkkkkxexxxfxfxxk11 ,因为011,10eff所以方程 01xxexf在0,1内有解。取初始值x=0.5,计算结果如下:57102.01x56716.02x56714.03x与例例5.4相比可知,牛顿迭代法的收敛速度与加速迭代法一样快。例例5.6用牛顿迭代法(5.52)式计算的 近似值。6解解 的精确值
31、为2.4494897。6,设62 xxf则方程 062x的解就是 的近似值。6 ,因为33,22ff所以方程 062x在2,3内有解。牛顿迭代公式如下:kkkkkkxxxfxfxx3211取初值x0=2.5,计算结果如下:450000021.x449489822.x449489723.x 由牛顿法的收敛性定理5.3可知,牛顿法对初始值的选取要求是很高的。一般而言,牛顿法只有局部收敛性。当初始值取得离根p太远时,迭代将发散,而一旦xk进入收敛域内,牛顿法就有平方收敛的速度。为了扬长避短,扩大初始值x0的选择范围,下面介绍牛顿法的一种改进方法牛顿下山法牛顿下山法。4.牛顿下山法牛顿下山法将牛顿迭代
32、公式(5.52)修改为:),1,0(,1kxfxfxxkkkk(5.54)其中,是一个参数,且,10称为下山因子下山因子。适当选取下山因子可以使单调性条件kkxfxf1(5.55)成立。下山因子的选择是个逐步探索的过程,从=1开始反复将因子的值减半进行计算,一旦单调性条件(5.55)成立,则称“下下山成功山成功”;否则,如果在上述过程中找不到使条件(5.55)成立的下山因子,则称“下山失败下山失败”,这时需要另选初值x0重新计算。例例5.7 已知非线性方程 013xxxf的一个根为p=1.32472。若取初值x0=0.6,用牛顿法 kkkkxfxfxx1计算得到的第一次近似值为x1=17.9,
33、反而比x0=0.6更偏离了根p。若改用牛顿下山法:11kkkkxfxfxx计算,仍取x0=0.6,从=1开始逐次搜索,当搜索到下山因子时,321215由牛顿下山公式(5.54)得到的计算值1406313210001.xfxfxx已满足条件(5.55),即 ,01xfxf因而牛顿下山法修正了原来x1=17.9的严重偏差,使迭代收敛。计算结果如表5.3所示:k0123411/32111xk0.61.140631.366811.326281.32472由例例5.7的分析可以知道,如果初值x0的选取偏离根p太远,从而使迭代计算的值x1偏离根p更远,那末就可采用牛顿下山法采用牛顿下山法,逐次将下山因子减
34、半,重新计算x1的值,即0001xfxfxx并判断单调性条件 01xfxf是否成立。若条件仍不成立,再将减半,重新计算x1,直到单调性条件成立为止,这样即可将第一次迭代计算的值x1出现的偏差得到修正,使之进入根p的收敛区域之内 pp,,以后的迭代过程,下山因子恒定为1。5.6弦截法弦截法 牛顿法的突出优点是收敛速度快,但也有明显的缺点,这就是需要提供导数值f(xk)。如果函数f(x)=0比较复杂,致使导数的计算困难,那末用牛顿法公式是很不方便的。1.为了避开导数的计算,可以改用差商 00 xxxfxfkk来代替牛顿公式(5.52)中的导数,从而得到下列的离散形式:001xxxfxfxfxxkk
35、kkk (5.61)这个公式是根据f(x)=0的等价形式:00 xxxfxfxfxx (5.62)建立的迭代公式,迭代函数为:00 xxxfxfxfxx(5.63)迭代公式(5.61)的几何解释如图5.61所示,曲线y=f(x)上横坐标为xk的点记为pk,则差商 00 xxxfxfkk表示弦线 kpp0的斜率,由公式(5.61)计算得到的xk+1,实际上就是弦线 kpp0与x轴的 交点,因而这种方法称为弦截法弦截法。图5.61 弦截法示意图2.弦截法的收敛性弦截法的收敛性为提高收敛速度,改用差商 11kkkkxxxfxf(5.52)中的导数f(xk),从而导出下列的迭代公式:来代替牛顿公式11
36、1kkkkkkkxxxfxfxfxx(5.64)这种迭代法称为快速弦截法快速弦截法 快速弦截法也称两步法两步法,这是因为在计算xk+1时,要用到前面两步的信息xk-1和xk,因此在使用快速弦截法时,在计算之前必须预先提供两初始值x0和x1。例例5.8 用快速弦截法求解非线性方程01)(xxexf解解:,因为01)1(,1)0(eff所以方程 01)(xxexf取初值 60,50 x10.x用快速弦截法求得的结果如下:567140,567150,567540432.xxx很显然,快速弦截法的收敛速度是很快的,与牛顿下山法(例例5.7)和加速迭代法(例例5.4)的收敛速度相当。例例5.9 编程计算
37、下列方程(见(5.11)式)0156414351000eef的根。解解:因为 01564)1(43510001,1290eeff所以方程f(x)=0在0,1内有解。采用快速弦截法计算,程序如下:(1)f()函数定义(population2.m)function y=popu(x)n=length(x);for j=1:n if x(j)=0 y(j)=-129;else y(j)=1000*exp(x(j)+435*(exp(x(j)-1)./x(j)-1564;endend(2)求方程f()=0的解的源程序(secant.m)clear;format longx0=input(x0=?);x
38、1=input(x1=?);N=input(N=?);Tol=input(Tol=?);n=2;flag=0;y0=population2(x0);y1=population2(x1);while n=N x=x1-y1.*(x1-x0)./(y1-y0);if abs(x-x1)Tol flag=1;break end n=n+1;x0=x1;x1=x;y0=y1;y1=population2(x1);endif flag=0 The method failed after N iterations,N=,Nelse x=,xend取初值 50,2010.xx精度Tol10-6时,经六次迭代计算,计算结果为:0.1009979。