1、1简化的牛顿迭代法的 MATLAB 实现摘要:牛顿迭代法是方程求根中的一种较快捷的迭代方法,但遇到较复杂的方程时计算量较大。本文采用了 MATLAB 编程来实现牛顿迭代法,并给出了具体的计算例子。 关键词:牛顿迭代法 MATLAB 编程 算法思想 1 问题的提出 牛顿迭代法收敛速度快,但每次都要求导,求逆,计算量相当大。为了减少计算量,引入简化的牛顿迭代法。 2 算法思想 以前我们解一元方程 f(x)=0 时采用过牛顿法,其几何意义是在根x*的附近取点 x0 作为方程的近似值,如图 1-1 所示,过曲线 y=f(x)上的点(x0,f(x0) )作切线,以它作为 y=f(x)的近似。切线与 x
2、轴的的交点 x1 作为根 x*的第二次近似,不断作下去,便得到迭代公式 xk+1=xk- k=0,1,2 当 f(x)满足一定条件下,迭代序列xk收敛到 x*。 解一元方程 f(x)=0 的牛顿法的主要思想是将非线性函数线性化。因此仿照一元方程的情形,就得到非线性方程组的牛顿迭代法。 令 则方程组 设(x1(k) ,x2(k) ,xn(k) )是方程组(2-1)的一组近似解,2把它的左端在(x1(k) ,x2(k) ,xn(k) )处用多元函数的泰勒展式展开,然后取线性部分,便得方程组(2-1)的近似方程组: 这是关于 xi(k)=xi-xi(k) (i=1,2,n)的线性方程组,如果它的系数
3、矩阵(见 2-3): 非奇异,则可解得(见 2-4): 矩阵(2-3)称为向量函数 F(x)的雅可比矩阵,记作 F(x) 。又记 x=xi+xi(k) 。 3 算法程序 其程序为: %ndf.m function ndf=ndf(x) clc; disp( MATLAB 编的简化牛顿迭代法程序 ) disp( 浙江机电职业技术学院机械工程学院 ) disp( - ) syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x=input(请以x1,x2,.的形式输入未知变量 x=) ; F=input(请以 ; ;.的形式输入非线形方程组的矩阵 F(x)=) ; x0=input(请以
4、行的形式输入未知变量的初始值 x0=) ; n=length(x) ;%确定未知变量的个数 3g=jacobian(F,x) ;%产生雅可比矩阵 F0=subs(F,x,x0) ;%给方程组的矩阵置初值 g0=subs(g,x,x0) ;%给雅可比矩阵置初值 if det(g0)=0; disp( 不符牛顿迭代法的条件!) break end 4 总结 牛顿迭代法收敛速度快,但要求导,求逆。计算的结果受初值,迭代次数(或精度要求)的影响比较大,如果求导后代入初值,如结果为零,则无法迭代。因而当求导后结果为零时,必须寻求另外的方法来计算。 参考文献: 1云磊.牛顿迭代法的 MATLAB 实现J.信息通信,2011(6). 2倪健,马昌凤.解非线性方程牛顿迭代法的一种新的加速技巧J.广西科学院学报,2010(1). 3王霞,张启虎.数值分析中牛顿迭代法的引入方法探讨J.天中学刊,2010(5).