资源描述:
《matlab二分法和Newton迭代法算法比较实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、湖南大学电气与信息工程学院《数值计算》课程上机实验报告姓名:班级:学号:日期:指导老师:本次实验题号:第1次实验一.实验目的: 了解二分法和Newton迭代法算法实现求任意方程的根。并比较方法的优劣。分别用二分法或newton迭代法求R,方程,的解,要求误差小于0.0001%,并比较两种方法的收敛速度。(R的初值取200Ω)二.实验内容:(1)在区间[0,1]上用二分法求方程的近似根,要求误差不超过0.0001%。(2)取初值R0=200Ω,用牛顿迭代公式,求方程的近似根。要求误差不超过0.0001%。三.算法介绍或方法基础1
2、)二分法:对方程在[a,b]内求根。将所给区间二分,在分点判断是否;若是,则有根。否则,继续判断是否,若是,则令否则令。重复此过程直至求出方程在[a,b]中的近似根为止。1)牛顿迭代法:是非线性方程,一般较难解决,多采用线性化方法.取初值,利用迭代公式进行求解,重复此过程直至求出方程求出近似根为止。四.程序1)二分法:functionerfen%UNTITLED1Summaryofthisfunctiongoeshere%Detailedexplanationgoeshereclear;f=inline('exp(-0.005.*
3、R).*cos(0.05.*(sqrt(2000-R^2.*0.01)))-0.01');a=200;b=1000;dlt=1.0e-5;k=1;err=abs(b-a);ErfenDATA=fopen('c:\ErfenDATA.txt','w');whileabs(b-a)>dltc=(a+b)/2;if(c)==0break;elseiff(c)*f(b)<0a=c;elseb=c;endk=k+1;err=abs(b-a);fprintf(ErfenDATA,'k=%dx=%10.6ferr=%10.6f',k,c,er
4、r);%下面的输出到屏幕上fprintf('k=%dx=%10.6ferr=%10.6f',k,c,err);end2)牛顿迭代法:dfun_R.mfunctiony=dfun_R(R)y=(R.*sin((2000-R.^2./100).^(1/2)./20))./(2000.*exp(R./200).*(2000-R.^2./100).^(1/2))-cos((2000-R.^2/100).^(1/2)/20)/(200.*exp(R./200));fun_R.mfunctiony=fun_R(R)y=exp(-0.005
5、.*R).*cos(0.05.*(sqrt(2000-R.^2.*0.01)))-0.01;Newton.mfunction[xvect,xdif,fxvect,nvect]=Newton(delta,eps,x0,fname1,fname2)n=1;nvect=[];%存储迭代次数xvect=[];%存储自变量迭代值fxvect=[];%存储函数迭代值xdif=[];%存储每一次迭代后的误差fx=fname1(x0);dfx=fname2(x0);x1=x0-fx/dfx;err=abs(x1-x0);nvect=[nvect;
6、n];xvect=[xvect;x0];fxvect=[fxvect;fx];xdif=[xdif;err];while((abs(fx)>delta)
7、(err>eps))%((err>eps))n=n+1;fx=fname1(x1);dfx=fname2(x1);x2=x1-fx/dfx;nvect=[nvect;n];xvect=[xvect;x1];fxvect=[fxvect;fx];xdif=[xdif;err];err=abs(x2-x1);x1=x2;endReturnNewton_tu.mclear;%clf;h
8、oldoffdelta=10^(-6);eps=10^(-6);R0=200;%初始化[R,dis,fR,n]=Newton(delta,eps,R0,@fun_R,@dfun_R);%调用Newton函数%输出到NewtonDATA.txt文件中NewtonDATA=fopen('c:\NewtonDATA.txt','w');%%下面的输出到屏幕上fprintf(NewtonDATA,'kRfRdis=x(k+1)-x(k)');fori=1:length(n)fprintf(NewtonDATA,'%10.0f%10.
9、6f%10.6f%10.6f',n(i),R(i),fR(i),dis(i));i=i+1;end五.实验结果二分法:牛顿迭代法:六.结果分析与解释由上面的对二分法、迭代法、牛顿法三种方法的三次实验结果,我们可以得出这样的结论:二分法要循环k=