实验4.1(多项式插值的振荡现象)

问题提出:考虑一个固定的区间上用插值逼近一个函数。显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式的次数增加时,是否也更加靠近被逼近的函数。龙格(Runge)给出一个例子是极著名并富有启发性的。设区间[-1,1]上函数

   

实验内容:考虑区间[-1,1]的一个等距划分,分点为

   

则拉格朗日插值多项式为

   

其中的n次拉格朗日插值基函数。

实验要求

1) 选择不断增大的分点数目n=2,3….,画出原函数f(x)及插值多项式函数[-11]上的图像,比较并分析实验结果。

2)选择其他的函数,例如定义在区间[-55]上的函数

重复上述的实验看其结果如何。

3)区间[a,b]上切比雪夫点的定义为

    

为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。

实验4.2(样条插值的收敛性)

问题提出:多项式插值是不收敛的,即插值的节点多,效果不一定就好。对样条函数插值又如何呢?理论上证明样条插值的收敛性是比较困难的,但通过本实验可以验证这一理论结果。

实验内容:请按一定的规则分别选择等距或者非等距的插值节点,并不断增加插值节点的个数。考虑实验2.1中的函数或选择其他你有兴趣的函数,可以用MATLAB的函数“spline作此函数的三次样条插值。

实验要求

1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。分析所得结果并与拉格朗日多项式插值比较。

2)样条插值的思想是早产生于工业部门。作为工业应用的例子考虑如下问题:某汽车制造商用三次样条插值设计车门的曲线,其中一段的数据如下:

 

xk

0

1

2

3

4

5

6

7

8

9

10

yk

0.0

0.79

1.53

2.19

2.71

3.03

3.27

2.89

3.06

3.19

3.29

yk

0.8

 

 

 

 

 

 

 

 

 

0.2

 

 

 

 

 

思考题:(二维插值)

丘陵地带测量高程,xy方向每隔100测一个点,得高程数据如下。试用MATLAB的二维插值函数“interp2”进行插值,并由此找出最高点和该点的高程。

y           x

100

200

300

400

100

636

697

624

478

200

698

712

630

478

300

680

674

598

412

400

662

626

552

334

 

 

 

相关MATLAB函数提示:

plot(x,y)            作出以数据(x(i),y(i))为节点的折线图,其中x,y为同长度的向量

subplot(m,n,k)       将图形窗口分为m*n子图,并指向第k幅图

yi=interp1(x,y,xi)       根据数据(x,y)给出在xi的分段线性插值结果yi

pp=spline(x,y)         返回样条插值的分段多项式(pp)形式结构

pp=csape(x,y,‘边界类型’,‘边界值’)   生成各种边界条件的三次样条插值

yi=ppval(pp,xi)        pp样条在xi的函数值

ZI=interp2(x,y,z,xi,yi)  x,xi为行向量,y,yi为列向量,z为矩阵的双线性二维插值

ZI=interp2(…,'spline')  使用二元三次样条插值

ZI=griddata(x,y,z,xi,yi)  x,y,z均为向量(不必单调)表示数据,xi,yi为网格向量的三角形线性插值(不规则数据的二维插值)

 

 

 

 

 

 

 

实验4.3(曲线逼近方法的比较)

问题提出:曲线的拟合和插值,是逼近函数的基本方法,每种方法具有各自的特点和特定的适用范围,实际工作中合理选择方法是重要的。

实验内容:考虑实验4.1中的著名问题。下面的MATLAB程序给出了该函数的二次和三次拟合多项式。

x=-1:0.2:1;

y=1/(1+25*x.*x);

xx=-1:0.02:1;

p2=polyfit(x,y,2);

yy=polyval(p2,xx);

plot(x,y,’o’,xx,yy);

xlabel(‘x’);

ylabel(‘y’);

hold on;

p3=polyfit(x,y,3);

yy=polyval(p3,xx);

plot(x,y,’o’,xx,yy);

hold off;

适当修改上述MATLAB程序,也可以拟合其他你有兴趣的函数。

实验要求

1)将拟合的结果与拉格朗日插值及样条插值的结果比较。

2)归纳总结数值实验结果,试定性地说明函数逼近各种方法的适用范围,及实际应用中选择方法应注意的问题。

 

 

 

 

 

 

 

 

思考题:(病态)考虑将[0,1]30等分节点,用多项式生成数据,再用polyfit求其3次、5次、10次、15次拟合多项式,并分析误差产生的原因。

 

相关MATLAB函数提示:

p=polyfit(x,y,k)  k次多项式拟合向量数据(x,y),返回多项式的降幂系数,当k>=n-1时,实现多项式插值,这里n是向量维数