实验2.1多项式插值的震荡现象问题提出:考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange插值中使用的节点越多,插值多项式的次数越高,我们自然关心插值多项式的次数增加时,)(xLn是否也更加靠近被逼近的函数。Runge给出的一个例子是极著名并富有启发性的。设区间[-1,1]上函数.2511)(2xxf实验内容:考虑空间[-1,1]的一个等距划分,分点为nixi21,i0,1,2...,n,则拉格朗日插值多项式为)(2511)(02xlxxLinin.其中,nixli,...,2,1,0),(是n次Lagrange插值基函数。实验要求:(1)选择不断增大的分点数目,...,3,2n画出原函数)(xf及插值多项式函数)(xLn在[-1,1]上的图像,比较并分析实验结果。(2)选择其他的函数,例如定义在区间[-5,5]上的函数,1)(4xxxh)arctan()(xxg,重复上述的实验看其结果如何。首先编写拉格朗日插值函数的Matlab实现:Matlab程序为:functiony=lagrange(x0,y0,x)%Lagrange插值n=length(x0);m=length(x);fori=1:mz=x(i);s=0.0;fork=1:np=1.0;forj=1:nif(j~=k)p=p*(z-x0(j))/(x0(k)-x0(j));endends=s+p*y0(k);endy(i)=s;end(1)当函数为.2511)(2xxf时,Matlab程序为:x=linspace(-1,1,100);y=1./(1+25*x.^2);plot(x,y)holdon;fori=2:2:10x0=linspace(-1,1,i+1);y0=1./(1+25*x0.^2);y=laglanri(x0,y0,x);plot(x,y,'r--')holdonend运行结果:结果分析:从图上看到在区间[-1,1]的两端点附近,随着插值点数的增加,插值函数)(xLn与)(xf偏离的越远,而且出现了振荡现象。-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.500.511.52xyRunge现象f(x)n=10n=2(2)当函数为,1)(4xxxh时Matlab程序为:x=linspace(-5,5,100);y=x./(1+x.^4);plot(x,y)holdon;fori=2:2:10x0=linspace(-5,5,i+1);y0=x0./(1+x0.^4);y=laglanri(x0,y0,x);plot(x,y,'r--')holdonend运行结果:-5-4-3-2-1012345-1-0.8-0.6-0.4-0.200.20.40.60.81xyRunge现象h(X)n=10结果分析:从图上看到在区间[-5,5]的两端点附近,随着插值点数的增加,插值函数)(xLn与)(xh偏离的越远,而且出现了振荡现象。(3)当函数为)arctan()(xxgx=linspace(-5,5,100);y=atan(x);plot(x,y)holdon;fori=2:2:10x0=linspace(-5,5,i+1);y0=atan(x0);y=laglanri(x0,y0,x);plot(x,y,'r--')holdonend运行结果:-5-4-3-2-1012345-2-1.5-1-0.500.511.52xyRunge现象g(x)n=2n=10结果分析:从图上看到在区间[-5,5]的两端点附近,随着插值点数的增加,插值函数)(xLn与)(xg偏离的越远,而且出现了振荡现象。实验3.1编制以函数nkkx0}{为基的多项式最小二乘拟合程序,并用于对表3.11中的数据作3次多项式二乘拟合。ix-1.0-0.50.00.51.01.52.0iy-4.447-0.4520.5510.048-0.4470.5494.552取权数iw≡1,求拟合曲线*≡knkkxa0*中的参数}{ka、平方误差,并作离散数据},{iiyx的拟合函数)(xy的图像。Matlab程序如下:x0=-1:0.5:2;y0=[-4.447-0.4520.5510.048-0.4470.5494.552];alph=polyfit(x0,y0,n);%ployfit为最小二乘拟合函数,alph为系数(按降幂排列y=polyval(alph,x0);r=(y0-y)*(y0-y)';%平方误差,注意平方的表达式x=-1:0.01:2;y=polyval(alph,x);plot(x,y,'k--');xlabel('x');ylabel('拟合曲线');holdon;plot(x0,y0,'*');title('离散数据的多项式拟合');gridon;disp(['平方误差:',sprintf('%g',r)]);disp(['参数alph:',sprintf('%g\t',alph)])运行结果:平方误差:2.17619e-005参数alph:1.99911-2.99767-3.96825e-0050.549119-1-0.500.511.52-5-4-3-2-1012345x拟合曲线离散数据的多项式拟合结果分析:根据给定的7个点的数据,所求的拟合函数的曲线可以基本地反映数据点的变化趋势。所求的三次多项式为:0.549119005-3.96825ex-2.99767x-1.99911xy(x)23其最小平方误差为:2.17619e-005。实验4.1实验目的:复化求积公式计算定积分.实验目的:数值计算下列各式右端定积分的近似值.(1)dxx3221123ln2ln;(2)dxx10211;(3)dxx1033ln2;(4)dxxeex212;实验要求:(1)若用复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式做计算,要求绝对误差限为710,分别利用它们的余项对每种算法做出步长的事前估计.(2)分别用复化梯形公式,复化Simpson公式和复化Gauss-LegendreI型公式作出计算.(3)将计算结果与精确解做比较,并比较各种算法的计算量.事前估计的Matlab程序如下:1.用复化梯形公式进行事前估计的Matlab程序formatlonggx=2:0.01:3;f=-4*(3*x.^2+1)./(x.^2-1).^3;%二阶导函数%plot(x,f)%画出二阶导函数图像x=2.0;%计算导函数最大值f=-4*(3*x^2+1)/(x^2-1)^3;h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2))%步长n=1/h;n=ceil(1/h)+1%选取的点数%222%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%formatlonggx=0:0.01:1;f=8.*(3*x.^2-1)./(x.^2+1).^3;%二阶导函数%plot(x,f)%画出二阶导函数图像x=1;%计算导函数最大值f=8.*(3*x.^2-1)./(x.^2+1).^3;h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2))%步长n=1/hn=ceil(1/h)+1%选取的点数%333%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%formatlonggx=0:0.01:1;f=log(3).*log(3).*3.^x;%二阶导函数%plot(x,f);%画出二阶导函数图像x=1;%计算导函数最大值f=log(3)*log(3)*3^x;h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2))%步长n=1/hn=ceil(1/h)+1%选取的点数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%formatlonggx=1:0.01:2;f=2.*exp(x)+x.*exp(x);%二阶导函数%plot(x,f)%画出二阶导函数图像x=2;%计算导函数最大值f=2.*exp(x)+x.*exp(x);h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2))%步长n=1/hn=ceil(1/h)+1%选取的点数估计结果步长h及结点数n分别为h=0.000558156305651438n=1793h=0.000547722557505166n=1827h=0.000407071357304889n=2458h=0.000142479094906909n=70202.用复化simpson公式进行事前估计的Matlab程序formatlonggx=2:0.01:3;f=-2*((-72*x.^2-24).*(x.^2-1)-192*x.^2.*(x.^2+1))./(x.^2-1).^5;%四阶导函数x=2.0;f=-2*((-72*x^2-24)*(x^2-1)-192*x^2*(x^2+1))/(x^2-1)^5;%计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4)))%步长n=1/h;%求分段区间个数n=2*ceil(1/h)+1%选取的点数%222%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%formatlonggx=0:0.01:1;f=4*((-72*x.^2+24).*(x.^2+1)-192*x.^2.*(-x.^2+1))./(x.^2+1).^5;%四阶导函数x=1;f=4*((-72*x^2+24)*(x^2+1)-192*x^2*(-x^2+1))/(x^2+1)^5;%计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4)))%步长n=1/h;%求分段区间个数n=2*ceil(1/h)+1%选取的点数%333%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%formatlonggx=0:0.01:1;f=log(3)^4*3.^x;%四阶导函数x=1;f=log(3)^4*3.^x;%计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4)))%步长n=1/h;%求分段区间个数n=2*ceil(1/h)+1%选取的点数%444%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%formatlonggx=1:0.01:2;f=4*exp(x)+x.*exp(x);%四阶导函数plot(x,f)%画出原函数x=2;f=4*exp(x)+x.*exp(x);%计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4)))n=1/h;%求分段区间个数n=2*ceil(1/h)+1%选取的点数估计结果步长h及结点数n分别为h=0.0437490486013411n=47h=0.0588566191276542n=35h=0.0757645166218433n=29h=0.0424527247118546n=49积分计算的Matlab程序:formatlonggpromps={'请选择积分公式,若用复化梯形,请输入T,用复化simpson,输入S,用复化Gauss_Legendre,输入GL:'};result=inputdlg(promps,'charpt4',1,{'T'});Nb=char(result);if(Nb~='T'&Nb~='S'&Nb~='GL')errordlg('积分公式选择错误');return;endresult=inputdlg({'请输入积分式题号1-4:'},'实验4.1',1,{'1'});Nb_f=str2num(char(result));if(Nb_f1|Nb_f