文档详情

数值分析matlab实验报告..doc

发布:2017-01-13约3.47千字共9页下载文档
文本预览下载声明
实验2.1 多项式差值的振荡现象 一、实验内容 ,考虑区间[-1,1]的一个等距划分,分点为,i=0,1,2,...,n,.其中,li(x),i=0,1,2,...,n是Lagrange插值基函数. 选择不断增大的分点数目n=2,3,...,画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像,比较并分析实验结果. 选择其他的函数,例如定义在区间[-5,5]上的函数,,重复上述的实验看其结果如何. 二、实验程序 function chapter2 promps={请选择试验函数,若选f(x),请输入f,若选好h(x),请输入h,若选g(x),请输入g:}; result=inputdlg(promps,charpt 2,1,{f}); Nb_f=char(result); if(Nb_f~=fNb_f~=hNb_f~=g) errordlg(试验函数选择错误!); return; end result=inputdlg({请输入插值多项式的次数N:},charpt_2,1,{10}); Nd=str2num(char(result)); if(Nd1) errordlg(插值多项式的次数输入错误!); return; end switch Nb_f casef f=inline(1./(1+25*x.^2));a=-1;b=1; caseh f=inline(x./(1+x.^4));a=-5;b=5; caseg f=inline(atan(x));a=-5;b=5; end x0=linspace(a,b,Nd+1);y0=feval(f,x0); x=a:0.1:b;y=Lagrange(x0,y0,x); clf; fplot(f,[a b],rx); hold on; plot(x,y,b--); xlabel(x);ylabel(y=f(x) x and y=Ln(x) --); 2.Lagrange函数 function y=Lagrange(x0,y0,x) n=length(x0); m=length(x); for i=1:m z=x(i); s=0; for k=1:n p=1.0; for j=1:n if (j~=k) p=p.*(z-x0(j))/(x0(k)-x0(j)); end end s=s+p*y0(k); end y(i)=s; end 三、实验结果及分析 1) 选择不断增大的分点数目n,原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像。 随着提高插值多项式次数,可以提高逼近的精度,但是次数的增加,在区间两端点附近与原函数偏离很远,即出现了Runge现象。 2) 选择不断增大的分点数目n,原函数h(x)及插值多项式函数Ln(x)在[-1,1]上的图像。 选择不断增大的分点数目n,原函数g(x)及插值多项式函数Ln(x)在[-1,1]上的图像。 同样,随着提高插值多项式次数,可以提高逼近的精度,但是次数的增加,在区间两端点附近与原函数偏离很远,即出现了Runge现象。 实验3.1最小二乘拟合 一、实验内容 为基的多项式最小二乘拟合程序,并用于对下表中数据作3次多项式最小二乘拟合. xi -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 yi -4.447 -0.452 0.551 0.048 -0.447 0.549 4.552 取权数,求拟合曲线中的参数、平方误差,并作离散数据的拟合函数的图形. 二、实验程序 function chapter3 x0=-1:0.5:2; y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552]; n=3; alph=polyfit(x0,y0,n); 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(y0 * and polyfit. y-.); hold on; plot(x0,y0,*); title(离散数据的多项式拟合); grid on; disp([平方误差:,sprintf(%g,r)]); disp([参数alph:,sprintf(%g\
显示全部
相似文档