第七章 非线性方程求根 习题七 1 用二分法求方程 的正 …
- 格式:pdf
- 大小:74.52 KB
- 文档页数:5
第七章非线性方程解法⒈二分法考察有根区间[a, b],取中点x0=(b+a)/2 将它分为两半,假设中点x0不是f(x)的零点,然后进行根的搜索,即查找f(x0)与f(a)是否同号,如果确系同号,说明所求的根x*在x0的右侧,这是令a1= x0,b1=b;否则x*必在x0的左侧,这是令a1=a,b1=x0,不管出现哪一种情况,新的有根区间[a1, b1]的长度仅为[a, b]的一半。
.重复以上做法得新近似根x1,…这样不断将区间分半,得到一系列区间[an , bn],和近似根(区间中点)nx,n=0,1,2,3…,nx误差为(b-a)/2n+1.这样的方法称为二分法。
下面是一个关于二分法的例子。
例1求f(x)=x3- x-1=0在区间[1,1.5]内的一个实根,要求准确到小数点后的第二位.这里a=1,b=1.5,而f(a)<0,f(b)>0。
取[a,b]的中点x0=1.25,将区间二等分,由于f(x0 )<0, 既f(x0 )与f(a)同号,故所求的根x*必在x0 右侧,这是应令a1=x0 =1.25, b1=b=1.5,而得到新的有根区间[a1,b1],这样继续结果如下表:x6.实际上x5就有三位有效数字了.二分法实验(1)上机题目:二分法的应用实验目的:熟悉二分法并在计算机上实现实验要求:①上机前充分准备,复习有关内容,写出计算步骤,查对程序;②完成实验后写出完整的实验报告,内容应该包括:所用的算法语言,算法步骤陈述,变量说明,程序清单,输出计算结果,结果分析等等;③用编好的程序在Matlab环境中执行。
算法说明:①找出计算f(x)在有限根区间[a, b]端点的值,f(a),f(b)②计算计算f(x)在区间中点(2ba+)处的值f(2ba+) .③判断若f(2ba+)=0,则2ba+即是根,计算过程结束,否则检验若f(2ba+)f(a)<0,则以2ba+代替b,否则以2ba+代替a.反复执行步骤②和步骤③,直到区间[a, b]长度小于允许误差ξ,此时中点2ba+即为所求近似根。
第7章 非线性方程求根本章主要内容:1.区间二分法. 2切线法. 3.弦位法. 4.一般迭代法.重点、难点一、区间二分法区间二分法是求方程f(x)=0根的近似值的常用方法。
基本思想:利用有根区间的判别方法确定方程根的区间[a,b] ,将有根区间平分为二;再利用有根区间的判别方法判断那一个区间是有根区间;重复上述步骤,直到小区间端点差的绝对值小于等于精度要求的数值,则用将上一区间的分半值作为方程的根的近似值。
区间二分法的计算步骤如下: 1.计算区间端点的函数值f(a) , f(b)(不妨设f(a)<0,f(b)>0);确定初始有根区间[a,b]. 2.二分有根区间[a,b],并计算)2(ba f + 取21b a x +=3.判断: 若0)(1=x f ,则方程的根为1x x =*;若 0)(1>x f ,则有根区间为[]1,x a x ∈*;令[]],[,111b a x a =若 0)(1<x f ,则有根区间为[]b x x ,1∈*;令 []],[,111b a b x =4. 如果│b-a │<ε(ε为误差限),则方程的根为2ba x +=*;否则转向步骤2,继续二分有根区间[a 1,b 1],并计算中点值,继续有根区间的判断,直到满足精度要求为止,即│b n -a n │<ε二分次数的确定:如果给定误差限ε,则需要二分的次数可由公式12ln ln )ln(---≥εa b n 确定应二分的次数。
例1 用区间二分法求方程0353=+-x x 在某区间内实根的近似值(精确到0.001)【思路】参见上述区间二分法的计算步骤解 ∵f(1.8)=-0.168<0, f(1.9)=0.359>0 ∴f(x)在区间[1.8 ,1.9]内有一个根。
由公式 644.512ln 001.0ln 1.0ln 12ln ln )ln(=--=---≥εa b n取n=6, 计算结果列表如下:则方程在区间[1.8,1.9]内所求近似值为x *≈ x = 1.8328125区间二分法的优点是计算程序简单,只要f (x )在区间[a,b]上连续,区间二分法就可使用,但区间二分法不能用来求偶次重根,由于区间二分法收敛比较慢,在实际计算中,区间二分法常用来求比较好的含根区间和初始近似值,以便进一步使用收敛更快的迭代法求出更精确的近似值。
第七章非线性方程求根一、重点内容提要 (一)问题简介 求单变量函数方程(7.1) 的根是指求(实数或复数),使得.称为方程(7.1)的根,也称为函数的零点.若可以分解为其中m 为正整数,满足,则是方程(7.1)的根.当m=1时,称为单根;当m>1时,称为m 重根.若充分光滑,是方程(7.1)的m 重根,则有(1)()(*)'(*)...(*)0,(*)0m m f x f x f x f x -====≠ 若在[a,b]上连续且,则方程(7.1)在(a,b)内至少有一个实根,称[a,b]为方程(7.1)的有根区间.有根区间可通过函数作图法或逐次搜索法求得. (二)方程求根的几种常用方法 1.二分法设在[a,b]上连续,,则在(a,b)内有根.再设在(a,b)内仅有一个根.令,计算和.若则,结束计算;若,则令,得新的有根区间;若,则令,得新的有根区间.,.再令计算,同上法得出新的有根区间,如此反复进行,可得一有根区间套且110011*,0,1,2,...,()...()22n n n n n n a x b n b a b a b a --<<=-=-==-.故因此,可作为的近似根,且有误差估计 (7.2) 2.迭代法将方程式(7.1)等价变形为 (7.3)若要求满足则;反之亦然.称为函数的一个不动点.求方程(7.1)的根等价于求的不动点由式(7.3)产生的不动点迭代关系式(也称简单迭代法)为 (7.4)函数称为迭代函数.如果对任意,由式(7.4)产生的序列有极限 则称不动点迭代法(7.4)收敛.定理7.1(不动点存在性定理)设满足以下两个条件: 1.对任意有2.存在正常数,使对任意,都有 (7.5) 则在上存在惟一的不动点.定理7.2(不动点迭代法的全局收敛性定理)设满足定理7.1中的两个条件,则对任意,由(7.4)式得到的迭代序列收敛.到的不动点,并有误差估计式 (7.6) 和 (7.7)定理7.3(不动点迭代法的局部收敛性定理)设为的不动点,在的某个邻域连续,且,则迭代法(7.4)局部收敛.收敛阶的概念 设迭代过程(7.4)收敛于方程的根,如果迭代误差当时成产下列渐近关系式(7.8)则称该迭代过程是p 阶收敛的.特别地,p=1时称线性收敛,p>1时称超线性收敛,p=2时称平方收敛.定理7.4(收敛阶定理)对于迭代过程(7.4),如果在所求根的邻近连续,并且 (7.9)则该迭代过程在点的邻近是收敛的,并有(7.10)斯蒂芬森(Steffensen)迭代法 当不动点迭代法(7.4)只有线性收敛阶,甚至于不收敛时,可用斯蒂芬森迭代法进行加速.具体公式为 (7.11) 此法也可写成如下不动点迭代式(7.12)定理7.5(斯蒂芬森迭代收敛定理) 设为式(7.12)中的不动点,则是的不动点;设存在,,则是的不动点,则斯蒂芬森迭代法(7.11)是2阶收敛的. 3.牛顿迭代法牛顿迭代法是一种特殊的不动点迭代法,其计算公式为 其迭代函数为 (7.13)牛顿迭代法的收敛速度 当时,容易证明,,,由定理7.4知,牛顿迭代法是平方收敛的,且(7.14)重根情形的牛顿迭代法 当是的m 重根时,迭代函数在处的导数,且.所以牛顿迭代法求重根只是线性收敛.若的重数m 知道,则迭代式 (7.15)求重根二阶收敛.当m 未知时,一定是函数的单重零点,此时迭代式1()()'()'()['()]()''()0,1,2,...k k k k k k k k k k x f x f x x x x x f x f x f x k μμ+=-=--= (7.16)也是二阶收敛的.简化牛顿法 如下迭代法 称为简化牛顿法或平行弦法.牛顿下山法 为防止迭代不收敛,可采用牛顿下山法.具体方法见教材. 4.弦截法将牛顿迭代法(7.13)中的用在,处的一阶差商来代替,即可得弦截法 (7.17)定理7.6假设在其零点的邻域内具有二阶连续导数,且对任意有,又初值,,则当邻域充分小时,弦截法(7.17)将按阶收敛到.这里p 是方程的正根. 5.抛物线法弦截法可以理解为用过两点的直线方程的根近似替的根.若已知的三个近似根,,用过的抛物线方程的根近似代替的根,所得的迭代法称为抛物线法,也称密勒(Muller)法.当在的邻近有三阶连续导数,,则抛物线法局部收敛,且收敛阶为.二、知识结构图10[1,2]1x x --=≤≤--∈3-3-6k k 32三、常考题型及典型题精解例7-1 证明方程x 在上有一个实根x*,并用二分法求这个根,要求|x -x*|10.若要求|x -x*|10,需二分区间[1,2]多少次?解 设f(x)=x ,则f(1)=-1<0,f(2)=5>0,故方程f(x)=0在[1,2]上有根x*.又因f'(x)=3x -1,所以当x [1,2]时,f'(x)>0,即f (x)=0在[1,2]上有惟一实根x*.用二分法计算结果如表7-1所示.k 0 1 2 3 4 5 6 7 8 9 1 1 1.25 1.25 1.3125 1.3125 1.3125 1.3204 1.3243 1.3243 2 1.5 1.5 1.375 1.375 1.13438 1.3282 1.3282 1.3282 1.32631.5 1.25 1.375 1.3125 1.3438 1.3282 1.3204 1.3243 1.3263 1.3253+ - + - + + - - + +610x e -≤≤⨯≤≤≤≤≥∈-3-39910-6k k k+101此时x =1.3253满足|x -x*|0.9771010,可以作为x*的近2似值.1若要求|x -x*|,只需|x -x*|10即可,解得k+119.932,2即只需把[1,2]二分20次就能满足精度要求.例7-2 已知函数方程(x-2)=1,(1)确定有根区间[a,b];(2)构造不动点迭代公式使之对任意初始近似x [a,b],31|10.k x ---<k 迭代方法均收敛;(3)用所构造的公式计算根的近似值,要求|x1lim lim x x x x x e e e e →+∞→-∞∞∞∞∈解 (1)令f(x)=(x-2)-1,由于f(2)=-1<0,f(3)=-1>0,因此区间[2,3]是方程f(x)=0的一个有根区间.又因f'(x)=(x-1),f(x)=+,f(x)=-1,f'(1)=--1<0,当x>1时f(x)单增,x<1时f(x)单减,故f(x)=0在(-,+)内有且仅有一根x*,即x*[2,3].2'k k x x x x x x e e e e e e e ϕϕϕ-----∈∈≤≤≤∀∈k+100k+1(2)将(x-2)=1等价变形为x=2+,x [2,3].则(x)=2+.由于当x [2,3]时2(x)3,|(x)|=|-|<1故不动点迭代法x =2+,k=0,1,2,...,对x [2,3]均收敛.(3)取x =2.5,利用x =2+进行迭代计算,结果如表7-2所示.473cos 3120cos c k x x x ϕ--+=∈≤4k+10-30k+1k+1k 例 考虑求解方程2的迭代公式2x =4+,k=0,1,2,...3(1)试证:对任意初始近似x R,该方法收敛;(2)取x =4,求根的近似值x ,要求|x -x |10;(3)所给方法的收敛阶是多少?2解 (1)由迭代公式知,迭代函数(x)=4+3{}os ,(,).|'sin |1(,)x x x ϕϕϕ∈-∞+∞≤<-∞+∞∀∈0k 022由于(x)的值域介于(4-)与(4+)之间,且3322(x)|=|-33故根据定理7.1,7.2知,(x)在内存在惟一的不动点x*,且对x R,迭代公式得到的序列x 收敛于x*.(2) 取x =4,迭代计算结果如表7-3所示.此时已满足误差要求,即(3)由于,故根据定理7 .4知方法是线性收敛的,并且有。
第一章 绪论习题主要考察点:有效数字的计算、计算方法的比较选择、误差和误差限的计算。
1 若误差限为5105.0-⨯,那么近似数0.003400有几位有效数字?(有效数字的计算) 2 14159.3=π具有4位有效数字的近似值是多少?(有效数字的计算)3 已知2031.1=a ,978.0=b 是经过四舍五入后得到的近似值,问b a +,b a ⨯有几位有效数字?(有效数字的计算)4 设0>x ,x 的相对误差为δ,求x ln 的误差和相对误差?(误差的计算)5测得某圆柱体高度h 的值为cm h 20*=,底面半径r 的值为cm r 5*=,已知cm h h 2.0||*≤-,cm r r 1.0||*≤-,求圆柱体体积h r v2π=的绝对误差限与相对误差限。
(误差限的计算)6 设x 的相对误差为%a ,求nx y =的相对误差。
(函数误差的计算)7计算球的体积,为了使体积的相对误差限为%1,问度量半径r 时允许的相对误差限为多大?(函数误差的计算)8 设⎰-=11dx e x eI x n n ,求证: (1))2,1,0(11 =-=-n nI I n n(2)利用(1)中的公式正向递推计算时误差逐步增大;反向递推计算时误差逐步减小。
(计算方法的比较选择)第二章 插值法习题主要考察点:拉格朗日插值法的构造,均差的计算,牛顿插值和埃尔米特插值构造,插值余项的计算和应用。
1 已知1)2(,1)1(,2)1(===-f f f ,求)(x f 的拉氏插值多项式。
(拉格朗日插值)2 已知9,4,10===x x x y ,用线性插值求7的近似值。
(拉格朗日线性插值)3 若),...1,0(n j x j =为互异节点,且有)())(())(()())(())(()(11101110n j j j j j j j n j j j x x x x x x x x x x x x x x x x x x x x x l ----------=+-+-试证明),...1,0()(0n k x x l xnj k jk j =≡∑=。
计算机学院上机实践报告一、目的1.通过本实验,帮助加深对非线性方程求根方法的构造过程的理解;2.能将各种方法编写为程序并上机实现;3.比较各种方法在求解同一非线性方程根时,在收敛情况上的差异。
二、内容与设计思想1.用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]内的根。
2.方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,试写出其三种不同的等价形式以构成三种不同的迭代格式,再用简单迭代法求根,观察这三种迭代是否收敛。
三、使用环境1. 硬件环境微型计算机(Intel x86系列CPU)一台2. 软件环境Windows2000/XP操作系统VC++6.0或其它的开发工具。
四、核心代码及调试过程1.用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]内的根主要代码:void bisect(double a,double b,int max_B){ double root, ya,yb,yroot;int i,actual_B;ya=f(a);yb=f(b);if(ya*yb>0){ printf("method failed!\n");exit(0); }for(i=1;i<=max_B;i++){ root=(a+b)/2;yroot=f(root); //取当前含根区间的中点if(yroot==0){ a=root;b=root;}else if(yb*yroot>0) //取含根区间为[a,(a+b)/2]{ b=root;yb=yroot;}Else //取含根区间为[(a+b)/2,b]{ a=root;ya=yroot;}if(fabs(b-a)<EPS) break;}root=(a+b)/2; yroot=f(root); actual_B=i;printf("root=%10.6lf\tf(root)=%10.6e\tatual_B=%d\n",root,yroot,actual_B); }结果:2.迭代格式分别为:x=2/19*x*x*x-5/19*x*x+42/19x=sqrt(2/5*x*x*x-19/5*x+42/5);x=(5/2*x*x+19/2*x-21)^(1/3)主要代码:double g(double x){return(pow((2.0/19.0*x*x*x-5/19*x*x+42/19),1.0)); /*定义迭代函数*/}void iterate(double a,double b,double x0,int max_D){int k=1;double x1;while(k<=max_D){x1=g(x0); /*迭代计算*/if((x1<a)||(x1>b)){printf("re_select a proper initial value x0!\n");exit(0);}if(fabs(x1-x0)<EPS) /*迭代成功并达到精度要求*/{printf("method succeed!\n");printf("root=%10.6lf\n",x1);break;}x0=x1;k++; /*x0的值被更新,累加迭代次数*/}printf("iteration times=%d\n",k); /*输出实际迭代次数*/if(k>max_D)printf("method failed!\n");}int main(){ double a=2.0,b=3.0,x0=(a+b)/2.0;int max_D=50;iterate(a,b,x0,max_D);}前两种迭代结果:第三种:输入数据时应注意数据的类型,否则程序会报错。
数值分析引论课后习题与答案易大义版第一章绪论习题一1.设x>0,x*的相对误差为δ,求f(x)=ln x的误差限。
解:求lnx的误差极限就是求f(x)=lnx的误差限,由公式(1.2.4)有已知x*的相对误差满足,而,故即2.下列各数都是经过四舍五入得到的近似值,试指出它们有几位有效数字,并给出其误差限与相对误差限。
解:直接根据定义和式(1.2.2)(1.2.3)则得有5位有效数字,其误差限,相对误差限有2位有效数字,有5位有效数字,3.下列公式如何才比较准确?(1)(2)解:要使计算较准确,主要是避免两相近数相减,故应变换所给公式。
(1)(2)4.近似数x*=0.0310,是 3 位有数数字。
5.计算取,利用:式计算误差最小。
四个选项:第二、三章插值与函数逼近习题二、三1. 给定的数值表用线性插值与二次插值计算ln0.54的近似值并估计误差限.解:仍可使用n=1及n=2的Lagrange插值或Newton插值,并应用误差估计(5.8)。
线性插值时,用0.5及0.6两点,用Newton插值误差限,因,故二次插值时,用0.5,0.6,0.7三点,作二次Newton插值误差限,故2. 在-4≤x≤4上给出的等距节点函数表,若用二次插值法求的近似值,要使误差不超过,函数表的步长h应取多少?解:用误差估计式(5.8),令因得3. 若,求和.解:由均差与导数关系于是4. 若互异,求的值,这里p≤n+1.解:,由均差对称性可知当有而当P=n+1时于是得5. 求证.解:解:只要按差分定义直接展开得6. 已知的函数表求出三次Newton均差插值多项式,计算f(0.23)的近似值并用均差的余项表达式估计误差.解:根据给定函数表构造均差表由式(5.14)当n=3时得Newton均差插值多项式N3(x)=1.0067x+0.08367x(x-0.2)+0.17400x(x-0.2)(x-0.3)由此可得f(0.23) N3(0.23)=0.23203由余项表达式(5.15)可得由于7. 给定f(x)=cosx的函数表用Newton等距插值公式计算cos 0.048及cos 0.566的近似值并估计误差解:先构造差分表计算,用n=4得Newton前插公式误差估计由公式(5.17)得其中计算时用Newton后插公式(5.18)误差估计由公式(5.19)得这里仍为0.5658.求一个次数不高于四次的多项式p(x),使它满足解:这种题目可以有很多方法去做,但应以简单为宜。
第7章 非线性方程求根本章主要内容:1.区间二分法. 2切线法. 3.弦位法. 4.一般迭代法.重点、难点一、区间二分法区间二分法是求方程f(x)=0根的近似值的常用方法。
基本思想:利用有根区间的判别方法确定方程根的区间[a,b] ,将有根区间平分为二;再利用有根区间的判别方法判断那一个区间是有根区间;重复上述步骤,直到小区间端点差的绝对值小于等于精度要求的数值,则用将上一区间的分半值作为方程的根的近似值。
区间二分法的计算步骤如下: 1.计算区间端点的函数值f(a) , f(b)(不妨设f(a)<0,f(b)>0);确定初始有根区间[a,b]. 2.二分有根区间[a,b],并计算)2(ba f + 取21b a x +=3.判断: 若0)(1=x f ,则方程的根为1x x =*;若 0)(1>x f ,则有根区间为[]1,x a x ∈*;令[]],[,111b a x a =若 0)(1<x f ,则有根区间为[]b x x ,1∈*;令 []],[,111b a b x =4. 如果│b-a │<ε(ε为误差限),则方程的根为2ba x +=*;否则转向步骤2,继续二分有根区间[a 1,b 1],并计算中点值,继续有根区间的判断,直到满足精度要求为止,即│b n -a n │<ε二分次数的确定:如果给定误差限ε,则需要二分的次数可由公式12ln ln )ln(---≥εa b n 确定应二分的次数。
例1 用区间二分法求方程0353=+-x x 在某区间内实根的近似值(精确到0.001)【思路】参见上述区间二分法的计算步骤解 ∵f(1.8)=-0.168<0, f(1.9)=0.359>0 ∴f(x)在区间[1.8 ,1.9]内有一个根。
由公式 644.512ln 001.0ln 1.0ln 12ln ln )ln(=--=---≥εa b n取n=6, 计算结果列表如下:则方程在区间[1.8,1.9]内所求近似值为x *≈ x = 1.8328125区间二分法的优点是计算程序简单,只要f (x )在区间[a,b]上连续,区间二分法就可使用,但区间二分法不能用来求偶次重根,由于区间二分法收敛比较慢,在实际计算中,区间二分法常用来求比较好的含根区间和初始近似值,以便进一步使用收敛更快的迭代法求出更精确的近似值。