1 / 16
文档名称:

【精品】数值分析实验报告.doc

格式:doc   大小:134KB   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

【精品】数值分析实验报告.doc

上传人:ttteee8 2020/7/8 文件大小:134 KB

下载得到文件列表

【精品】数值分析实验报告.doc

文档介绍

文档介绍:实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设北,力在la,b]±连续,只们x/W)vO且/⑴在(a,b)内仅有一实根,取中点一步步求得根的近似解,在满足精度要求时,即为所求的值。Newton法乃利用易+=叫-旦乂,由递推产生近似于真值的解,但Newton法的初值选择好坏f(叫)直接影响迭代的次数甚至迭代的收敛与发散。即若知偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收敛,但精度不够。熟悉Matlaft语言编程,学****编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。数学原理:对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在力]上连续,f(a)f(b)<0,且f(x)在[“力]内仅有一个实根/,取区间中点c,若,则。恰为其根,否则根据f(。V0是否成立判断根在区间[a,c]和[c,。]中的哪一个,从而得出新区间,仍称为[a力]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。Newton法通常预先要给出一个猜测初值x°,然后根据其迭代公式nr-冬E"f)产生逼近解『的迭代数列{林},这就是Newton法的思想。当为接近:时收敛很快,但是当为选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为fgX.+1= f(M)其中,•为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。程序设计:本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下functiony=f(x);y=-x*x-sin(x);写成如上形式即可,下俑给出主程序。二分法源程序:clear%%%给定求解区间h=;a=0;%%%误差R=l;k=0;%迭代次数初值while(R>5e-6);c=(a+b)/2;iffl2(a)^fl2(c)>0;a=c;elseb-c;endR=;%求出误差k=k+l;endJC*%给出解Newton法及改进的Newton法源程序:clear%%%%输入函数f=input(1请输入需要求解函数>>;'s')%%%求解f(x)的导数df=diff(f);%%%改进常数或重根数miu=2;%%%初始值xOxO=input('inputinitialvaluex0>>f);k=0\%迭代次数max=100',%最大迭代次数R=eval(suhs(f/xO\fx,));%求解f(xO),以确定初值xO时否就是解while(abs(R)>le-8)xl=xO-miu*eval(subs(ft'xO\,x,))/eval(subs(df>'x0\'xr));R=xl-xO;xO=xl;k=k+1;if(eval(subs(f/x0\,x,))<le-10);breakendifk>max-%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input(,y/n?>>\9s9);ifstrcmp(ss,fyr)xO=input(9inputinitialvaluex0>>f);k=0;elsebreakendendend如%给出迭代次数x=xO;%给出解结果分析和讨论:Y2用二分法计算方程sinx-—=0在[1,2]内的根。(£=5*10气下同)2计算结果为x=;f(x)=--007;k=18;由f(x)知结果满足要求,但迭代次数比较多,-x-l=0在[1,]内的根。计算结果为x=;f(x)=-006;k=17;由f(x)知结果满足要求,但迭代次数还是比较多。用Newton法求解下列方程xex-1=0 xo=;计算结果为x=**********;f(x)=-016;k=4;由f(x)知结果满足要求,而且乂迭代次数只有4次看出收敛速度很快。尤’一尤一1=0 x()=l;(x