标题 | 简化的牛顿迭代法的MATLAB实现 |
范文 | 燕必成 高永祥 陈小红 摘要:牛顿迭代法是方程求根中的一种较快捷的迭代方法,但遇到较复杂的方程时计算量较大。本文采用了MATLAB编程来实现牛顿迭代法,并给出了具体的计算例子。 关键词:牛顿迭代法 MATLAB编程 算法思想 1 问题的提出 牛顿迭代法收敛速度快,但每次都要求导,求逆,计算量相当大。为了减少计算量,引入简化的牛顿迭代法。 2 算法思想 以前我们解一元方程f(x)=0时采用过牛顿法,其几何意义是在根x*的附近取点x0作为方程的近似值,如图1-1所示,过曲线y=f(x)上的点(x0,f(x0))作切线,以它作为 y=f(x)的近似。切线与x轴的的交点x1作为根x*的第二次近似,不断作下去,便得到迭代公式 xk+1=xk-■ k=0,1,2… 当f(x)满足一定条件下,迭代序列{xk}收敛到x*。 解一元方程f(x)=0的牛顿法的主要思想是将非线性函数线性化。因此仿照一元方程的情形,就得到非线性方程组的牛顿迭代法。 令 则方程组 设(x1(k),x2(k),…,xn(k))是方程组(2-1)的一组近似解,把它的左端在(x1(k),x2(k),…,xn(k))处用多元函数的泰勒展式展开,然后取线性部分,便得方程组(2-1)的近似方程组: 这是关于Δxi(k)=xi-xi(k)(i=1,2,…,n)的线性方程组,如果它的系数矩阵(见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('请以行的形式输入未知变量的初始值x0='); n=length(x);%确定未知变量的个数 g=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). |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。