您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 《数值分析》课程设计报告范文
课程设计报告课程设计题目:非线性方程求解2011年11月27日题目:用二分法,简单迭代法、牛顿迭代法以及弦截法求非线性方程2sin02xx误差不超过10-4,输出迭代次数,初始值和根的近似值。一、摘要在matlab环境下运用熟悉的计算机编程语言结合二分法、简单迭代法、牛顿迭代法以及弦截法求解非线性方程,在运行完程序后,对运行结果做出了各方面的分析和比较。最终得出二分法迭代次数最多,需14次,而简单迭代法、牛顿迭代法以及弦截法的迭代次数都较少,只需4—5次。由于方程有多个解,所以当赋的初始值不同或给定的区间不同时,根的近似值也会有所不同。二、设计目的用熟悉的计算机语言编程,上机完成用二分法、简单迭代法、牛顿迭代法以及弦截法求解非线性方程,掌握各种方法的理论依据及求解思路,了解各种迭代方法的异同。三、理论基础二分法:二分法就是将方程根所在的区间平分为两个小区间,再判断根属于哪个小区间;把有根的小区间再平分为二,再判断根所在的更小的区间,对分;重复这一过程,最后求出所要的近似值。简单迭代法:简单迭代法是将方程()0fx化为一个等价的方程:()(1)xx从而构成序列:1()0,1,2...(2)kkxxk即给定一个初值0x,由(2)可算得10()xx,再将1x带入(2)的右端,又可得21()xx,…。我们{kx}为迭代序列,而称(1)式中的()x为迭代函数,(2)为迭代格式。如果()x连续,迭代序列{kx}收敛于*x,则*x就是方程(1)的解。事实上*1()()()limlimlimkkkkkkxxxx,又*1,kkxx,亦即:**()xx或*()0fx所以,如果迭代序列收敛,总能收敛于原方程的解。实际计算中,无穷过程不可能实现,只迭代到一定程度,取1kx作为原方程的近似根。牛顿迭代法:设已知方程()0fx的一个近似根0x,把()fx在0x处做泰勒展开,'''200000()()()()()()...02!fxfxfxfxxxxx若取前两项来近似代替()fx(称为()fx的线性化),则得近似的线性方程:'000()()()0fxfxxx设'0()0fx,解之得00'0()()fxxxfx。取x作为原方程()0fx的近似根1x,即010'0()()fxxxfx,一般地'0()0fx,再重复用上述方法得:121'1()()fxxxfx。一般地,有迭代公式1'()(0,1,2,...)()kkkkfxxxkfx上式称为求解()0fx的牛顿迭代公式。弦截法:假设方程()0fx在区间[a,b]上有唯一根*x,在区间[a,b]内的曲线()yfx上任取两点作弦,用此弦与x轴的交点横坐标作为方程根的近似值。按此方法进行迭代计算,直到满足精度要求为止。单点弦法:为避免导数的计算,用平均变化率00()()kkfxfxxx来替代迭代公式1'()(0,1,2,...)()kkkkfxxxkfx中的导数()kfx,于是得到:100()()(3)()()kkkkkfxxxxxfxfx按此公式进行迭代计算就称单点弦截法。按(3)式求得的1kx实际上是弦AB与x轴交点的横坐标,下一步再以点(11,()kkxfx)和(00,()xfx)作弦交x轴得2kx等等。每次作新的弦都以(00,()xfx)作为一个端点,只有一个端点不断更换,故名为单点弦截法。四、程序代码及运算结果functiony=f(x)y=sin(x)-x.^2/2;二分法:clear;clc;a=-2;b=1;chushizhi1=-2chushizhi2=1kg=10^(-4);fork=0:20iff(a)*f(b)0x=errorelseiff(a)*f(b)==0iff(a)==0a,k;elseb,k;endelsem=(a+b)/2;ifabs(a-b)kgjinsijie=mdiedaicishu=k-1breakelseiff(a)*f(m)0a=m;elseb=m;endk=k+1;endendendend运行结果chushizhi1=-2chushizhi2=1jinsijie=1.5259e-005diedaicishu=14简单迭代法:x(1)=1fork=1:12x(k+1)=asin((x(k).^2)/2);if(abs(x(k+1)-x(k)))0.0001x(k+1)kbreakendend运行结果jinsijie=9.9887e-010diedaicishu=5chushizhi=1牛顿迭代法:symsxy=diff(sin(x)-x.^2/2,x)y=cos(x)-xfunctiony=p(x)y=cos(x)-x;x(1)=-1;fork=1:20ifp(x(k))~=0x(k+1)=x(k)-f(x(k))./p(x(k));if(abs(x(k+1)-x(k)))0.0001jinsijie=x(k+1)diedaicishu=kbreakendendendchushizhi=x(1)运行结果Jinsijie=-2.6055e-010diedaicishu=4chushizhi=-1弦解法:x(1)=-0.1;x(2)=0.2;fork=1:7if(f(x(k))-f(x(1)))~=0x(k+1)=x(k)-f(x(k))*(x(k)-x(1))/(f(x(k))-f(x(1)));f(x(k+1))if(abs(x(k+1)-x(k)))0.0001jinsijie=x(k+1)diedaicishu=kbreakendendendchushizhi1=x(1)chushizhi2=x(2)运行结果jinsijie=1.0816e-006diedaicishu=5chushizhi1=-0.1000chushizhi2=0.2000五、结果分析根据二分法求解非线性方程根的原理,将所求方程根所在的区间平分为两个小区间,在判断根属于哪个小区间;把有根的小区间再平分为二,再判断根所在的更小的区间,对分;重复这一过程,最后求出所要的近似值。当所分的小区间的间距越小的时候,得出的方程根结果就越精确,其原因就是所分的小区间间距越小,则就越接近方程等于0的根。所以最后的结果的精度越高,得到的误差越小;而对于简单迭代法,只有在满足一定条件的情况下,才能求解出)(xx在区间上有唯一根*x,使迭代序列,...)1,0(),(1kxxkk收敛于*x。根据牛顿迭代法的原理,求解出非线性方程根的结果可以看出,牛顿迭代法具有平方收敛的速度,所以在迭代过程中只要迭代几次就会得到比较精确的解,并不像简单迭代法,需要迭代多次才能解出较为精确的结果,但是用牛顿迭代法求解时选定的初值要接近方程的解,否则可能得不到收敛的结果。同时,牛顿迭代法计算量也会相对较大些。单点弦截法,用选定的两个初值点所对应的函数值连接作弦,用此弦与x轴的交点横坐标作为方程根的近似值。按此方法进行迭代计算,直到满足精度要求为止。六、设计心得这次数值分析课程设计我们虽然只经历了一周,但是受益匪浅。在刚开始拿到题目时,我们提出很多问题,3个人各有自己的想法,产生了分歧。但经过这一周的时间和体验下来,我们学到的不仅是课本知识,还有团队和合作精神。现在想来,也许学校安排的课程设计有着它更深层的意义,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起是所能发挥出的巨大潜能!在这次课程设计中,我们运用到了以前所学的专业课知识,如:用二分法、牛顿迭代法、弦截法、matlab汇编语言等。虽然过去都将这些知识用于解题中,未有独立应用过它们,但在学习的过程中带着问题去学我发现效率很高。设计过程,好比我们的成长历程,常有一些不如意,难免会遇到各种各样的问题。这也激发了我今后努力学习的兴趣,通过这次设计,我懂得了学习的重要性,了解到理论知识与实践结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作打下基础。七、参考文献[1]奚梅成。数值分析方法【M】。合肥:中国科技技术大学出版社,2007.[2]薛毅。数值分析与实验【M】。北京:北京理工大学出版社,2005.[3]汪卉琴,刘目楼。数值分析【M】。北京:冶金工业出版社,2004.[4]丁丽娟,程杞元。数值计算方法【M】。北京:北京理工大学出版社,2005.[5]李庆扬,易大义,王能超。现代数值分析。北京:高等教育出版社,1995.[6]薛定宇,陈阳泉。高等应用数学问题的MATLAB求解。北京:清华大学出版社,2008.
本文标题:《数值分析》课程设计报告范文
链接地址:https://www.777doc.com/doc-2838622 .html