浅析牛顿迭代法及其延伸
盐城师范学院课程考察论文
课程名称:《计算方法》
学院:数学科学学院
专业:数学与应用数学
班级:数学09(4)
姓名:陈玉婷
学号:09211428
论文题目:浅析牛顿迭代法及其延伸
成 绩
浅析牛顿迭代法及其延伸
数学学科中,代数方程求根问题是一个古老的问题,早在十六世纪就找到了三次、四次方程的求根公式。但是直到十九世纪才证明n>=5次的一般代数方程式不能用代数公式求解。因此,需要研究用数值方法求得满足一定精度的代数方程式的近似解。
在工程和科学技术中许多问题常常归结为求解非线性方程式问题。现主要被运用的是二分法,迭代法,牛顿法,后经过一系列的改进,又产生了正割法和抛物线法等更加实用的方法。
内容摘要:
本篇文章浅析牛顿迭代法。对牛顿迭代法以及其基本原理进行基本阐述,介绍几个牛顿法变形,对其局部收敛性质进行分析。并列举相关例题进行解答,包括过程图以及编程代码。
关键字:迭代法 牛顿迭代法
问题背景:
牛顿迭代法(Newton's method)又称为牛顿-雷扶生法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。基本阐述:方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。方法的基本思路是利用一个根的猜测值x0做初始近似值,使用函数f(x)在x0处的泰勒级数展式的前两项做为函数f(x)的近似表达式。由于该表达式是一个线性函数,通过线性表达式替代方程f(x) = 0中的f(x)求得近似解x1。即将方程f(x) = 0在x0处局部线性化计算出近似解x1,重复这一过程,将方程f(x) = 0在x1处局部线性化计算出x2,求得近似解x2,……。详细叙述如下:假设方程的解x*在x0附近(x0是方程解x*的近似),函数f(x)在点x0处的局部线化表达式为
由此得一次方程求解,得x1=x0-f(x0)/f’(x0)
如图1所示,x1比x0更接近于x*。该方法的几何意义是:用曲线上某点(x0,y0)的切线代替曲线,以该切线与x轴的交点(x1,0)作为曲线与x轴的交点(x*,0)的近似(所以牛顿迭代法又称为切线法)。设xn是方程解x*的近似,迭代格式xn+1=xn-f(x0)/f’(x0) ( n = 0,1,2,……) 就是著名的牛顿迭代公式,通过迭代计算实现逐次逼近方程的解。牛顿迭代法的最大优点是收敛速度快,具有二阶收敛。以著名的平方根算法为例,说明二阶收敛速度的意义。
题:已知 ,求 等价于求方程f(x) = x2 – 2 = 0的解。由于 。应用牛顿迭代法,得迭代计算格式
,(n = 0,1,2,……)
取x0= 1.4为初值,迭代计算3次的数据列表如下
表1 牛顿迭代法数值实验
观察表中数据,第一次迭代数据准确到小数点后四位,第二次迭代数据准确到小数点后八位,……。二阶收敛速度可解释为,每迭代一次,近似值的有效数位以二倍速度递增。对于计算任意正数C的平方根,牛顿迭代法计算同样具有快速逼近的性质。
牛顿迭代法的收敛性
牛顿迭代法在使用受条件限制,这个限制就是通常所说的牛顿迭代法的局部收敛性。
定理 假设f(x)在x*的某邻域内具有连续的二阶导数,且设f(x*)=0, ,则对充分靠近x*的初始值x0,牛顿迭代法产生的序列{xn}收敛于x*。
下面例子是牛顿迭代法不收敛的反例。反例说明,牛顿迭代法局部收敛性要求初始点要取得合适,否则导致错误结果。
题:用牛顿迭代法解方程 f(x) = x3 – x – 3 = 0。
表2 三次方程的三个根
显然,三次方程有一个实根r1。
为了使用牛顿迭代法计算,对于 f(x) = x3 – x – 3 ,首先求导数,得 。取x0 = 0和x0 = 1取分别用牛顿迭代法计算,得
表3 不同初始值的迭代计算结果
对于迭代初值取x0=0,迭代数列中的第四项又回到初始点x0 = 0附近,算法将陷入死循环。
图2 牛顿迭代法初值不收敛示意图
而迭代初值取x0=1,可以使牛顿迭代法得到收敛。将牛顿迭代法用于求解高阶代数方程时,首先回顾一个代数基本定理,即“一个n阶多项式在复数域内有n个根”。根据牛顿迭代法的局部收敛性质,任意取一个数据做为牛顿迭代的初值,可能导致迭代不收敛,即使这一个初值可以使迭代法收敛。
具体实例:
用Newton法计算
解:f(x)= -a=0,其中a=
Xn+1=xn-=(xn+) n=0,1,……
取x0=1.5,则x1=1.41666667 x2=1.414215686,x3=1.414213562。与的精确值相比x3是已有十位有效数的近似值。
输入x0,,(2)F0=f(x0);f1=f’(x0);(3)While >做
x1=x0-f0/f1
x0=x1
转(x2) Endwhile (4)输出:x1
程序设计
Private Sub Command1_Click()
Dim x0 As Double, e As Double
x0 = Val(text1.Text)
e = Val(text2.Text)
m = f(x0)
n = f1(x0)
Do
X1 = x0 - m / n
x0 = X1
m = f(x0)
n = f1(x0)
While Abs(m) > e
End Sub
Public Function f(ByVal x0 As Double) As Double
f(x0) = x0 - x0 ^ 2 - Sqr(2) / 2 * x0
End Function
Public Function f1(ByVal x0 As Double) As Double
f1(x0) = 0.5 - Sqr(2) / (2 * x0 ^ 2)
End Function
程序运行如上
综合评判:
牛顿方法结合计算机编程,可以解决许多问题。牛顿雷扶生法不失为数学界的一个经典之作。除此之外,还有二分法,截弦法,抛物线法等一系列方法。二分法较为缓慢,虽然是个不会失败的方法。迭代法是个逐渐逼近的方法,一般具有线性收敛速度。牛顿法可以选做对导数能有效地求值,且导数在根的领域中连续的任何函数方程的求根方法。牛顿法在单根邻近收敛快,具有二阶收敛速度,但牛顿法对初值要求比较苛刻,即要求初值选取充分靠近方程的根,否则牛顿法可能不收敛。扩大初值的选取范围,可采用牛顿下山法。在求解非线性方程的方法中,牛顿迭代法是求非线性方程(非线性方程组)数值解的一种重要的方法。近几百年来,这种局部线性化方法取得了辉煌成功,大到行星轨道计算,小到机械部件设计。牛顿迭代法正是将局部线性化的方法用于求解方程。牛顿法值得每个人深入研究讨论,在于他的地位。数学领域的任何一个角落都值得去开发,作为自然科学的一种,数学学科是美好的。
浅析牛顿迭代法及其延伸.doc