牛顿迭代法的MATLAB实现
云 磊
(襄樊学院,湖北 襄阳 441053)
摘要:牛顿迭代法是方程求根中的一种较快捷的迭代方法,但遇到较复杂的方程时计算量较大。文章采用了MATLAB 编程
来实现牛顿迭代法,并给出了具体的计算例子。关键词:牛顿迭代法;MATLAB ;方程求根中图分类号:O242.23 文献标识码:A 文章编号:1673-1131(2011)06-0020-2
Abstract: Newton's method is a good way to ?
nd a root for an equation,however, when it comes to a complex equation,the calculation is a hardwork. In this paper, by using matlab, Newton's method is easily realized,and it also gives some demonstration.
Keywords:
Newton's method ; MATLAB ;root a.选定初始值。
在MATLAB中输入如下程序:x=-1:0.01:1;y=x.^2+2*x.*exp(x)+exp(2*x);plot(x,y),grid on 得到下图
由图知,该方程的根在-1~0之间,可设迭代初始值为0。b.求出迭代函数
用MATLAB求出f'(x ): syms x
diff(x ^2+2*x*exp(x)+exp(2*x),x,1)ans =
2*x+2*exp(x)+2*x*exp(x)+2*exp(2*x)故迭代函数为y=x-(x.^2+2*x.*exp(x)+exp(2*x))/(2*x+2*exp(x)+2*x.*exp(x)+2*exp(2*x))
c.用MATLAB实施迭代,程序为:clear; x=0.0;for i=1:20x=x-(x.^2+2*x.*exp(x)+exp(2*x))/(2*x+2*exp(x)+2*x.*exp(x)+2*exp(2*x))
end
可算得迭代数列的前20项为-0.2500,-0.3986,-0.4802, -0.5230,-0.5449,-0.5560,-0.5615,-0.5643,-0.5657,-0.5664,-0.5668,-0.5670,-0.5671,-0.5671,-0.5671,说明迭代是收敛的,
且第五次迭代时误差就不超过10-3
。
牛顿迭代法是方程求根中的一种重要方法,适用范围广
泛,步骤简单。但如同所有的迭代法一样,它需要大量计算。而MATLAB是一种强大的计算工具,利用MATLAB来实施牛顿法的计算可以大大节省时间。
1 牛顿迭代法原理及收敛性
(1)设已知方程f (x )=0,要求其根,现考虑用迭代法。将
其化为等价方程x =g (x ),令g(x)=x +h (x )f (x ),
h (x )≠0为待定函数。x =g (x )和f (x )=0应有共同的根,设此根为s ,利用条
件g'(x )=0来确定h (x ),有g'(x )=1+h'(x )f (x )+h (x )f'(x )=1+h (x )f'(x )=0,由此知h (x )应该满足,显然取就可
以满足此条件且有h (s )≠0。于是g (x )确定为
,它满足g'(s )=0。
由此得到迭代格式x n+1=
n =0,1,2...这就是著名的牛顿迭代公式。
(2)计算可得
,设x *是f (x )=0的单根,有
f (x*)=0,f'(x*)≠0,则 ,故在x*附近,有
。根据不 。
2 牛顿迭代法的几何解析
设方程f (x )=0的根s ,为求出s ,先估取一个靠近的s 实根x n ,在x n 处作曲线的切线,切线方程为y =f (x n )+f'(x n )(x -x n )。令y =0,可得切线与x轴的交点坐标x n +1=x n -f(x n )/f'(x n ),由图知x n+1比x n 更靠近S 。因为这种几何背景,牛顿法又称“切线法”。
3 用MATLAB 实现牛顿迭代实例
(1)用牛顿迭代法求方程x 2+2xe x +e 2x =0的根。
动点原理知牛顿迭代法收敛。2011 年第 6 期(总第 116 期)
信 息 通 信
INFORMATION & COMMUNICATIONS
2011
(Sum. No 116)
(下转第22页)