文档详情

计算方法第2章_非线性方程求根.ppt

发布:2017-08-31约1.52万字共31页下载文档
文本预览下载声明
* 2.6 埃特金加速法 埃特金加速法的主要思想 埃特金(Aitken)加速法用来加快简单迭代法的收敛速度。 ① 令yn=φ(xn),(埃特金加速法的yn即加速前简单迭代法的xn+1。) ② 令zn=φ(yn),(埃特金加速法的zn即加速前简单迭代法的xn+2。) 若用简单迭代法求f(x)=0的单根x*,迭代公式为x=φ(x),迭代初值为x0,用埃特金加速法对简单迭代法x=φ(x)迭代过程加速得到的迭代序列记为 ,则由xn求出xn+1的步骤为: ③ xn+1=xn- (注:xn+1是用埃特金加速法一次迭代的结果。) 若迭代序列 收敛,则必收敛于x*。 * 2.7 牛顿迭代法 一、牛顿迭代法的主要思想 牛顿迭代法又称为切线法,是另一种有特色的求根方法。 ② 以x*附近的某一个值x0为迭代初值,代入迭代公式,反复迭代,得到序列x0,x1,x2,……。 用牛顿迭代法求f(x)=0的单根x*的主要步骤为: ① 牛顿迭代法的迭代公式为 ,(n=0,1,2,……)。 ③ 若此序列收敛,则必收敛于精确根x*,即 xn=x*。 * 2.7 牛顿迭代法 二、牛顿迭代法的算法 输入x的精度要求ε,迭代初值x1,迭代次数i的最大值maxi。 for(i=0;imaxi;i++) 把本次迭代初值x1暂存入x0中。 本次迭代结果x1=x0-f(x0)/f’(x0)。 |x1-x0|≤ε Y N break; imaxi Y N 输出方程f(x)=0的根x1。 迭代次数已超过上限,异常退出。 * 2.7 牛顿迭代法 牛顿迭代法对应的程序 #include stdio.h #include math.h double f(double x); double df(double x); void main(void) { double epsilon,x0,x1,fx0,dfx0; long i,maxi; printf(\n请输入x的精度要求:); scanf(%lf,epsilon); printf(\n请输入迭代初值:); scanf(%lf,x1); printf(\n请输入最大迭代次数:); scanf(%ld,maxi); for(i=0;imaxi;i++) { x0=x1; fx0=f(x0); dfx0=df(x0); x1=x0-fx0/dfx0; if(fabs(x1-x0)=epsilon) break; } if(imaxi) printf(\n方程f(x)=0的根x=%lf。,x1); else printf(\n迭代次数已超过上限。); } double f(double x) { return(……); /*计算并返回函数值f(x)*/ } double df(double x) { return(……); /*计算并返回函数值f’(x)*/ } * 2.7 牛顿迭代法 三、牛顿迭代法的收敛阶与收敛条件 定理 :若x*是f(x)=0的单根,f(x)在x*附近有连续的2阶导数,适当地选取迭代初值x0,则牛顿迭代产生的迭代序列收敛于x*,且收敛阶不小于2。 定理:若f(x)在[a,b]上连续,存在2阶导数,且满足下列条件: ① f(a)f(b)<0。② f”(x)不变号且f”(x)≠0。 ③ 选取初值x0,满足f(x0)f”(x)>0。 则f(x)=0在[a,b]内根唯一,且牛顿迭代序列收敛于此根。 牛顿迭代法是一种特殊的简单迭代法。把牛顿迭代法看作简单迭代法时,它的迭代函数 (x)=
显示全部
相似文档