数值分析课程设计(4)

2019-04-22 14:20

end

f1=subs(sym(f),findsym(sym(f)),a); f2=subs(sym(f),findsym(sym(f)),b); if(f1==0) root=a; end if(f2==0) root=b; end if(f1*f2>0)

disp('两端点函数值乘积大于0!'); return; else tol=1;

fa=subs(sym(f),findsym(sym(f)),a); fb=subs(sym(f),findsym(sym(f)),b); fx=subs(sym(f),findsym(sym(f)),x); d1=(fb-fa)/(b-a); d2=(fx-fb)/(x-b); d3=(d2-d1)/(x-a); B=d2+d3*(x-b);

root=x-2*fx/(B+sign(B)*sqrt(B^2-4*fx*d3)); t=zeros(3); t(1)=a; t(2)=b; t(3)=x; while(tol>eps) t(1)=t(2); t(2)=t(3); t(3)=root;

16

f1=subs(sym(f),findsym(sym(f)),t(1)); f2=subs(sym(f),findsym(sym(f)),t(2)); f3=subs(sym(f),findsym(sym(f)),t(3)); d1=(f2-f1)/(t(2)-t(1)); d2=(f3-f2)/(t(3)-t(2)); d3=(d2-d1)/(t(3)-t(1)); B=d2+d3*(t(3)-t(2));

root=t(3)-2*f3/(B+sign(B)*sqrt(B^2-4*f3*d3)); tol=abs(root-t(3)); end end 解:

在Matlab命令窗口输入: root=Parabola ('f',-1,1,0.5) 回车运行得 ans =

0.56714

总 结

综合分析上述可得出各个算法的优缺点:

二分法是电子计算机上一种常用的算法,它的具有简单和易操作的优点,缺点是收敛较慢且不能求重根。牛顿迭代法具有至少平方收敛的速度,所以在迭代过程中只要迭代几次就会得到很精确的解,这是牛顿迭代法比简单迭代法优越的地方特别是当迭代点充分靠近精确解时,但选定的初值要接近方程的解,否则有可能得不到收敛的结果。再者, 牛顿迭代法计算量比较大,每次迭代要计算一次导数值,当表达式复杂,或无明显表达式时求解困难。对重根收敛速度较慢(线性收敛)。牛顿法是现在最常用的迭代方法。弦截法的收敛阶虽然低于Newton法,但是迭代一次只要计算一次,不需要计算导数值,所以效率高,实际问题中经常使用。弦截法比牛顿迭代法收敛速度稍慢,但它的计算量比牛顿迭代法小,

17

特别当都函数的导数的计算比较复杂时,弦截法更显示了它的优越性。

综上所述,以上求解非线性方程的几种方法各有优缺点,通过Matlab程序的实现可帮助我们更好理解它们的思想,在解决实际时,我们要根据实际情况选取适当的方法求解。

参考文献

[1] 李庆阳, 王能超,易大义. 数值分析. 第五版, 清华大学出版社,2008.12 [2] 张丰德.MATLAB 数值计算方法. 机械工业出版社, 2009. [3] 徐士良,数值方法与计算机实现北京:清华大学出版社.2006年.

18


数值分析课程设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:道路桥梁施工常识问与答286条

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: