资源描述:
《哈工大-数值剖析上机试验申报》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验报告题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。数学原理:对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。对于二分法,其数学实质就是说对于给定的待求解的方程f(x),-Jt:在[g,刃上连续,f(a)f(b)<0,且f(x)在[%]内仅有一个实根兀*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[”]
2、中的哪一个,从而得出新区间,仍称为[必]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式八无)产生逼近解/的迭代数列{庄},这就是Newton法的思想。当也接近/时收敛很快,但是当丸选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为/(忑)xk+}=xk-r—fg其小厂为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。程序设计:本实验采用Matlab的M文件编写。其中待求解的方程写成function
3、的方式,如下functiony=f(x);y=-x^x-sin(x);写成如上形式即口J,下面给出主程序。二分法源程序:clear%%%给定求解区间b=1.5;a-0;%%%误差R=l;k=0;%迭代次数初值while(R>5e-6);c=(a+h)/2;iffl2(a)J12(c)>0;a=c;elseb=c;endR=b・a;%求出误差k=k+l;endx=c%给出解Newton法及改进的Newton法源程序:clear%%%%输入函数f=inputs请输入需要求解函数>>:fs')%%%求解f(x)的导数df=difff);%%%改进常数或重根数miu=2;%%
4、%初始值xOxO=input(,inputinitialvaluex0>>');k=0;%迭代次数max=100%最大迭代次数R=eval(subs(f/xO,f,x,));°/o求解f(xO),以确定初値xO吋否就是解while(abs(R)>le-8)xl=xO-miu^eval(subs(f,'x0,x,))/eval(subs(dff,xOfx'));R=xl-xO;xO=xl;k=k+1;if(eval(subs(f,'xO,,,x'))max-%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input
5、('mayberesultiserror,chooseanewxO,y/n?>>fsf);ifstrcmp(ss/yf)xO=input('inputinitialvaluexO>>9);k=0;elsebreakendendend£,・%给出迭代次数x=xO;%给出解结果分析和讨论:v用二分法计算方程疋-兀-1=0在[1,1.5]内的根。计算结果为x=1.32471847534180;f(x)=2.209494846194815e-006;k=17;由f(x)知结果满足要求,但迭代次数还是比较多。用Newton法求解下列方程a)xex-1=0x()=0.5;计算结果
6、为1.用二分法计算方程sinx-—=0在[1,2]内的根。(£=5*10",下同)计算结果为x=1.40441513061523;f(x)=-3.7972051059043lle-007;k=18;dbf(x)知结杲满足要求,但迭代次数比较多,方法收敛速度比较慢。x=0.56714329040978;f(x)=2.220446049250313e-016;k=4;由f(x)知结果满足耍求,而冃又迭代次数只有4次看出收敛速度很快。b)—x—1=0x°=l;c)(x-1)2(2x-1)=0x()=0.45,x()=0.65;当x0=0.45时,计算结果为x=0.499999
7、99999983;f(x)=-8.362754932994584e-014;k=4;dbf(x)知结杲满足要求,而且又迭代次数只有4次看出收敛速度很快,实际上该方程确实有真解x=0.5o当x0=0.65时,计算结果为x=0.50000000000000;f(x)=0;k=9;由f(x)知结果满足要求,实际上该方程确实冇真解x=0.5,但迭代次数增多,实际上当取xo)0.68时,xul,就变成了方程的另一个解,这说明Newton法收敛与初值很有关系,有的时候甚至可能不收敛。4.用改进的Newton法求解,有2重根,取“=2(x-1)2(2x