电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

哈工大计算方法上机实验报告VIP免费

哈工大计算方法上机实验报告_第1页
1/28
哈工大计算方法上机实验报告_第2页
2/28
哈工大计算方法上机实验报告_第3页
3/28
实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。数学原理:对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。程序设计:本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下.1.functiony=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。二分法源程序:clear%%%给定求解区间b=1.5;a=0;%%%误差R=1;k=0;%迭代次数初值while(R>5e-6);c=(a+b)/2;iff12(a)*f12(c)>0;a=c;elseb=c;endR=b-a;%求出误差k=k+1;endx=c%给出解Newton法及改进的Newton法源程序:clear%%%%输入函数f=input('请输入需要求解函数>>','s')%%%求解f(x)的导数df=diff(f);%%%改进常数或重根数miu=2;%%%初始值x0x0=input('inputinitialvaluex0>>');k=0;%迭代次数max=100;%最大迭代次数R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解while(abs(R)>1e-8)x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0','x'));.2.R=x1-x0;x0=x1;k=k+1;if(eval(subs(f,'x0','x'))<1e-10);breakendifk>max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input('mayberesultiserror,chooseanewx0,y/n?>>','s');ifstrcmp(ss,'y')x0=input('inputinitialvaluex0>>');k=0;elsebreakendendendk;%给出迭代次数x=x0;%给出解结果分析和讨论:1.用二分法计算方程在[1,2]内的根。(,下同)计算结果为x=1.40441513061523;f(x)=-3.797205105904311e-007;k=18;由f(x)知结果满足要求,但迭代次数比较多,方法收敛速度比较慢。2.用二分法计算方程在[1,1.5]内的根。计算结果为x=1.32471847534180;f(x)=2.209494846194815e-006;k=17;由f(x)知结果满足要求,但迭代次数还是比较多。3.用Newton法求解下列方程.3.a)x0=0.5;计算结果为x=0.56714329040978;f(x)=2.220446049250313e-016;k=4;由f(x)知结果满足要求,而且又迭代次数只有4次看出收敛速度很快。b)x0=1;c)x0=0.45,x0=0.65;当x0=0.45时,计算结果为x=0.49999999999983;f(x)=-8.362754932994584e-014;k=4;由f(x)知结果满足要求,而且又迭代次数只有4次看出收敛速度很快,实际上该方程确实有真解x=0.5。当x0=0.65时,计算结果为x=0.50000000000000;f(x)=0;k=9;由f(x)知结果满足要求,实际上该方程确实有真解x=0.5,但迭代次数增多,实际上当取x0〉0.68时,x≈1,就变成了方程的另一个解,这说明Newton法收敛与初值很有关系,有的时候甚至可能不收敛。4.用改进的Newton法求解,有2重根,取x0=0.55;并与3.中的c)比较结果。当x0=0.55时,程序死循环,无法计算,也就是说不收敛。改时,结果收敛为x=0.50000087704286;f(x)=4.385198907621127e-007;k=16;显然这个结果不是很好,而且也不是收敛至方程的2重根上。当x0=0.85时,结果收敛为x=1.00000000000489;f(x)=2.394337647718737e-023;k=4;这次达到了预期的结果,这说明初值的选取很重要,直接.4.关系到方法的收敛性,实际上直接用Newton法,在给定同样的条件和精度要求下,可得其迭代次数k=15,这说明改进后的Newton法法速度确实比较快。结论:对于二分法,只要能够保证在给定的...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

哈工大计算方法上机实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部