预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

插值法 下列数据点的插值 x01491625364964 y012345678 可以得到平方根函数的近似,在区间[0,64]上作图. (1)用这9个点作8次多项式插值Ls(x). (2)用三次样条(第一边界条件)程序求S(x). 从得到结果看在[0,64]上,哪个插值更精确;在区间[0,1]上,两种插值哪个更精确? 解:(1)拉格朗日插值多项式,求解程序如下 symsxl; x1=[01491625364964]; y1=[012345678]; n=length(x1); Ls=sym(0); fori=1:n l=sym(y1(i)); fork=1:i-1 l=l*(x-x1(k))/(x1(i)-x1(k)); end fork=i+1:n l=l*(x-x1(k))/(x1(i)-x1(k)); end Ls=Ls+l; end Ls=simplify(Ls)%为所求插值多项式Ls(x). 输出结果为 Ls= -24221063/63504000*x^2+95549/72072*x-1/3048192000*x^8-2168879/435456000*x^4+19/283046400*x^7+657859/10886400*x^3+33983/152409600*x^5-13003/2395008000*x^6 (2)三次样条插值,程序如下 x1=[01491625364964]; y1=[012345678]; x2=[0:1:64]; y3=spline(x1,y1,x2); p=polyfit(x2,y3,3);%得到三次样条拟合函数 S=p(1)+p(2)*x+p(3)*x^2+p(4)*x^3%得到S(x) 输出结果为: S= (3)在区间[0,64]上,分别对这两种插值和标准函数作图, plot(x2,sqrt(x2),'b',x2,y2,'r',x2,y3,'y') 蓝色曲线为y=√x函数曲线,红色曲线为拉格朗日插值函数曲线,黄色曲线为三次样条插值曲线 可以看到蓝色曲线与黄色曲线几乎重合,因此在区间[0,64]上三次样条插值更精确。 在[0,1]区间上由上图看不出差别,不妨代入几组数据进行比较,取x4=[0:0.2:1] x4=[0:0.2:1]; sqrt(x4)%准确值 subs(Ls,'x',x4)%拉格朗日插值 spline(x1,y1,x4)%三次样条插值 运行结果为 ans= 00.44720.63250.77460.89441.0000 ans= 00.25040.47300.67060.84551.0000 ans= 00.24290.46300.66170.84031.0000 从这几组数值上可以看出在[0,1]区间上,拉格朗日插值更精确。 数据拟合和最佳平方逼近 有实验给出数据表 x0.00.10.20.30.50.81.0 y1.00.410.500.610.912.022.46 试求3次、4次多项式的曲线拟合,再根据数据曲线形状,求一个另外函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。 解:(1)三次拟合,程序如下 symx; x0=[0.00.10.20.30.50.81.0]; y0=[1.00.410.500.610.912.022.46]; cc=polyfit(x0,y0,3); S3=cc(1)+cc(2)*x+cc(3)*x^2+cc(4)*x^3%三次拟合多项式 xx=x0(1):0.1:x0(length(x0)); yy=polyval(cc,xx); plot(xx,yy,'--'); holdon; plot(x0,y0,'x'); xlabel('x'); ylabel('y'); 运行结果 S3= 图像如下 (2)4次多项式拟合 symx; x0=[0.00.10.20.30.50.81.0]; y0=[1.00.410.500.610.912.022.46]; cc=polyfit(x0,y0,4); S3=cc(1)+cc(2)*x+cc(3)*x^2+cc(4)*x^3+cc(5)*x^4 xx=x0(1):0.1:x0(length(x0)); yy=polyval(cc,xx); plot(xx,yy,'r'); holdon; plot(x0,y0,'x'); xlabel('x'); ylabel('y'); 运行结果 S3= 图像如下 (3)另一个拟合曲线, 新建一个M-file 程序如下: function[C,L]=lagran(x,y) w=length(x); n=w-1; L=zeros(w,w); fork=1:n+1 V=1; forj=1:n+1 ifk~=j V=conv(V,poly(x(j))