如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
椭圆周长、牛顿迭代(常用版)(可以直接使用,可编辑完整版资料,欢迎下载)实验一实验目的与要求用二分法和牛顿迭代法(包括弦截法)编程求方程的实根,要求误差不超过。输出迭代次数,初始值和根的近似值;构造不同的迭代函数,用迭代法求解,并进行比较。实验方案编写M文件绘制该函数图形,源程序如下:functiony=EX0111x=-1:0.1:2;y=sin(x)-(x.^2)/2;plot(x,y,'r')holdonplot(x,zeros(size(x)))holdoffgrid运行后可以看出,函数的根在区间[1,1.5]。所以,分析题意,编写二分法源程序如下:functiony=EX0110symsxy;y=sin(x)-(x.^2)/2;a=1;b=1.5;delta=0.0001;ya=subs(y,a);yb=subs(y,b);N=1+round((log(b-a)-log(delta))/log(2));fork=1:Ndx=yb*(b-a)/(yb-ya+eps);c=b-dx;ab=b-a;yc=subs(y,c);ifyc==0,break;elseifya*yc<0b=c;yb=yc;elsea=c;ya=yc;enddd=min(abs(ab),abs(yc));ifdd<delta,break,endendddkc=b-dx运用牛顿迭代法编程,源程序如下:functiony=fun(x)y=sin(x)-(x.^2)/2;和该函数导数:functiony=dfun(x)y=cos(x)-x;以及牛顿迭代法:function[xk,k]=newtoneq(x0,n,derta)k=1;xk(1)=x0;t=x0-fun(x0)./dfun(x0);whileabs(t-x0)>=dertax0=t;k=k+1;xk(k)=t;t=x0-fun(x0)./dfun(x0);if(k-1)>nerror('nisfull'),endend构造新的迭代函数为,编辑源程序如下:functiony=iter()symsxy;y=sqrt(2*sin(x));x0=1;max=20;derta=0.0001;t=[x0];x=subs(y,x0);k=0;whileabs(x-x0)>=dertat=[t,x];x0=x;x=subs(y,x0);k=k+1;ifk>maxdisp('迭代次数超过最大次数。')breakendendt实验结果和数据处理运行绘制函数图形源文件得如下图像,从图像中可看出,该函数的根所在的区间为[1,1.5]。图1运行运用二分法编程的源程序得如下数据:图2运行运用牛顿迭代法编程的源程序,在命令框中输入如下命令:[xk,k]=newtoneq(1,20,0.0001)运行得出以下数据:图3运行新构造的迭代函数源程序求解:图4实验二一、实验目的与要求已知椭圆的周长可以表示成(),取a=1。针对从0.1到0.9(步长h=0.1)分别求出周长s。(用Romberg积分方法)二、实验方案编辑实现Romberg积分方法的源程序,得如下M文件:function[s,n,t]=rombint(fun,a,b,tol)formatlongs=10000;s0=0;k=2;t(1,1)=(b-a)*(fun(a)+fun(b))/2;while(abs(s-s0)>tol)h=(b-a)/2^(k-1);w=0;if(h~=0)fori=1:(2^(k-1)-1)w=w+fun(a+i*h);endt(k,1)=h*(fun(a)/2+w+fun(b)/2);forl=2:kfori=1;(k-l+1)t(i,l)=(4^(l-1)*t(i+1,l-1)-t(i,l-1))/(4^(l-1)-1);endends=t(1,k);s0=t(1,k-1);k=k+1;n=k-1;elses=s0n=-k;endend并在运行时,依次在命令框中输入如下命令:fun=inline('sqrt(1+^2*cos(t).^2)','t');s=rombint(fun,0,2*pi,1e-6)其中,依次取值为0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8