《不动点迭代法非线性方程求解.docx》由会员分享,可在线阅读,更多相关《不动点迭代法非线性方程求解.docx(2页珍藏版)》请在三一办公上搜索。
1、不动点迭代法非线性方程求解不动点迭代法非线性方程求解 求方程f(x)=0的根,可以先把方程组改写成如下形式: x=f(x)+x 于是得到不动点迭代法的一种迭代公式: Xn=f(Xn-1)+Xn-1 此种不动点迭代法很可能不收敛,因为它的本质是求函数y=f(x)+x与直线y=x的交点,而他们不一定存在交点。即使收敛,其速度也十分慢,因此有了艾肯特加速迭代与斯蒂芬森加速迭代。 在MATLAB中编程时显得不动点迭代法的函数为:StablePoint。 功能:用不动点迭代法求函数的一个零点。 调用格式:root,n=StablePoint。 其中,f为函数名: x0为初始迭代向量: eps为根的精度:
2、 root为求出的函数零点: n为迭代步数。 不动点迭代法的MATLAB程序代码如下: Function root,n=StablePoint(f,x0,eps) %用不动点迭代法求函数的一个零点 %初始迭代向量:x0 %根的精度:eps %求出的函数零点:root %迭代步数:n If(nargin=2) eps=1.0e-4; end tol=1; root=x0; n=o; while(toleps) r1=root; n=n+1; root=subs(sym(f),findsym(sym(f),r1)+r1; tol=abs(root-r1); end 例7-6不动点迭代法求解非线性方程应用时实例。采用不动点迭代法求方程1x+x-2=0的一个根。 解:在MATLAB窗口命令中输入: r,n=StablePoint(1/sqrt(x)+x-2,0.5) R= 0.3820 从计算结果中可以看出,经过四步碟算得出方程x=0.3820 1x+x-2=0的一个根为