牛顿迭代法一、 牛顿迭代法牛顿迭代法也称为牛顿-拉夫森(Newton-Raphson)迭代法,它是数值分析中最重要的方法之一,它不仅适用于方程或方程组的求解,还常用于微分方程和积分方程求解。
二、 迭代公式,...2,1,0,)()(1='-=+k x f x f x x k k k k用迭代法解非线性方程时,如何构造迭代函数是非常重要的,那么怎样构造的迭代函数才能保证迭代法收敛呢?牛顿迭代法就是常用的方法之一,其迭代格式的来源大概有以下几种方式(主要是第一种):1、设],[)(2b a C x f ∈,对)(x f 在点],[0b a x ∈作泰勒展开: !2))((''))((')()(20000x x f x x x f x f x f -+-+=ξ略去二次项,得到)(x f 的线性近似式:))((')()(000x x x f x f x f -+≈。
由此得到方程=)(x f 0的近似根(假定≠)('0x f 0),)(')(000x f x f x x -=即可构造出迭代格式(假定≠)('k x f 0):)(')(1k k k k x f x f x x -=+ 公式(1)这就是牛顿迭代公式,若得到的序列{k x }收敛于α,则α就是非线性方程的根。
2、 牛顿迭代法也称为牛顿切线法,这是由于)(x f 的线性化近似函数)(x l =))((')(000x x x f x f -+是曲线y =)(x f 过点))(,(00x f x 的切线而得名的,求)(x f 的零点代之以求)(x l 的零点,即切线)(x l 与x 轴交点的横坐标,如右图所示,这就是牛顿切线法的几何解释。
实际上,牛顿迭代法也可以从几何意义上推出。
利用牛顿迭代公式,由k x 得到1+k x ,从几何图形上看,就是过点))(,(k k x f x 作函数)(x f 的切线k l ,切线k l 与x 轴的交点就是1+k x ,所以有1)()('+-=k k k k x x x f x f ,整理后也能得出牛顿迭代公式:)(')(1k k k k x f x f x x -=+。
3、 要保证迭代法收敛,不管非线性方程=)(x f 0的形式如何,总可以构造:)()()(x f x k x x x -==ϕ )0)((≠x k作为方程求解的迭代函数。
因为:)(')()()('1)('x f x k x f x k x --=ϕ 而且)('x ϕ在根α附近越小,其局部收敛速度越快,故可令:0)('=αϕ 若≠)('αf 0(即根α不是=)(x f 0的重根),则由0)('=αϕ得:)('1)(ααf k =,因此可令)('1)(x f x k =,则也可以得出迭代公式:)(')(1k k k k x f x f x x -=+。
4、 迭代法的基本思想是将方程0)(=x f改写成等价的迭代形式)(x x ϕ=,但随之而来的问题却是迭代公式不一定收敛,或者收敛的速度较慢。
运用前述加速技巧,对于简单迭代过程)(1n n n x f x x +=+,其加速公式具有形式:θθϕ--=+1)(1nn n x x x )(111n n n x x x --+=++θθ,其中)(1n n x x ϕ=+记1-=θL ,上面两式可以合并写成:L x f x x n n n )(1-=+这种迭代公式称作简单的牛顿公式,其相应的迭代函数是:L x f x x )()(-=ϕ。
需要注意的是,由于L 是)('x ϕ的估计值,若取)()(x f x x +=ϕ,则)('x ϕ实际上便是)('x f 的估计值。
假设0)('≠x f ,则可以用)('x f 代替上式中的L ,就可得到牛顿法的迭代公式:)(')(1n n n n x f x f x x -=+。
牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程逐步归结为某种线性方程来求解。
三、算法描述用Newton 法求方程f (x )=0的一个解输入 初始值x0;误差容限TOL ;最大迭代次数m 输出 近似解p 或失败信息 Step1 00x p ←Step2 对i=1,2,...,m 做setp3~4Setp3)()(000p f p f p p '-←Setp4若TOL p p <-0,则输出(p ),停机,否则p p ←0Setp5输出失败信息;停机注:在第4步中的迭代终止准则可用:TOLp f TOL pp p TOLpp p <<-<-)(0且或者四、C 语言代码求一元四次方程045.13234=-+-x x x 的解 double func(double x) //函数{ return x*x*x*x-3*x*x*x+1.5*x*x-4.0; } double func1(double x) //导函数 { return 4*x*x*x-9*x*x+3*x; } int Newton(double *x,double precision,int maxcyc)//初始值, 精度, 迭代次数{double x1,x0; int k; x0=*x;for(k=0;k<maxcyc;k++) {if(func1(x0)==0.0)//若通过初值,函数返回值为0{printf("迭代过程中导数为0!\n");return 0;}x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算if(fabs(x1-x0)<precision || fabs(func(x1))<precision) //达到结束条件{ *x=x1; //返回结果return 1; }else //未达到结束条件x0=x1; //准备下一次迭代}printf("迭代次数超过预期!\n"); //达到迭代次数,仍没有达到精度return 0;}int main(){double x,precision;int maxcyc;printf("输入初始迭代值x0:");scanf("%lf",&x);printf("输入最大迭代次数:");scanf("%d",&maxcyc);printf("迭代要求的精度:"); scanf("%lf",&precision); if(Newton(&x,precision,maxcyc)==1) //若函数返回值为1printf("该值附近的根为:%lf\n",x);else //若函数返回值为0 printf("迭代失败!\n"); getch(); return 0;}五、二元函数的牛顿迭代法设z=f (x ,y )在点(x0,y0)的某一邻域内连续且有直到2阶的连续偏导数,(x0+h ,y0+k )为此邻域内任意一点,则有⎥⎦⎤⎢⎣⎡∂∂+∂∂+≈++==00),(),(),(),(0000y y x x y x f y k y x f xh y x f k y h x f 其中00,y y k x x h -=-=于是方程f (x ,y)=0可近似表示为0),(),(),(=⎥⎦⎤⎢⎣⎡∂∂+∂∂+==k k y y x x k k y x f y k y x f x h y x f 即0),()(),()(),(=-+-+k k y k k k x k k k y x f y y y x f x x y x f同理,设z=g (x ,y )在点(x0,y0)的某一邻域内连续且有直到2阶的连续偏导数,(x0+h ,y0+k )为此邻域内任意一点,则同样有⎥⎦⎤⎢⎣⎡∂∂+∂∂+≈++==00),(),(),(),(0000y y x x y x g y k y x g xh y x g k y h x g其中00,y y k x x h -=-=于是方程g (x ,y)=0可近似表示为0),(),(),(=⎥⎦⎤⎢⎣⎡∂∂+∂∂+==k k y y x x k k y x g y k y x g x h y x g 即0),()(),()(),(=-+-+k k y k k k x k k k y x g y y y x g x x y x g 于是得到方程组:⎪⎩⎪⎨⎧=-+-+=-+-+0),()(),()(),(0),()(),()(),(k k y k k k x k k k k k y k k k x k k k y x g y y y x g x x y x g y x f y y y x f x x y x f 求解这个方程组:当0),(),(),(),(≠-k k y k k x k k y k k x y x g y x f y x f y x g 时⎪⎪⎩⎪⎪⎨⎧--+=--+=),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(k k y k k x k k y k k x k k x k k k k x k k kk k y k k x k k y k k x k k y k k k k y k k k y x g y x f y x f y x g y x f y x f y x f y x g y y y x g y x f y x f y x g y x f y x g y x g y x f x x 雅可比行列式:),(),(),(),(1),(),(),(),(1),(),(),(),(k k x k k k k x k k y k k k k y k k k k y x k k y k k x k k y k k x y x g y x g y x f y x f J J y x g y x g y x f y x f J J y x g y x g y x f y x f J ===所以,解可改写为:⎩⎨⎧+=+=y k x k J y y J x x迭代公式为:⎩⎨⎧+=+=++y k k x k k J y y J x x 11Welcome To Download !!!欢迎您的下载,资料仅供参考!。