点的个数。考虑实验2.1中的函数或选择其他你有兴趣的函数。
实验要求:
(1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。分析所得结果并与拉格朗日多项式插值比较(可以用MATLAB的函数“spline”作此函数的三次样条插值,取n=10、20,分别画出插值函数及原函数的图形)。
(2)样条插值的思想是早产生于工业部门。作为工业应用的例子考虑如下问题:某汽车制造商用三次样条插值设计车门的曲线,其中一段的数据如下: xk yk yk’
要求:i.自己编程计算(用三弯矩、三转角方程均可) ii.主函数myspline(x,y,边界类型,边界值,xi ) 其中:x 节点 y 节点上的函数值 xi 未知节点 返回:S(xi)
iii.三对角方程组用追赶法求解(书P160)。
实验2.3:(一维插值的应用—画图) 画你自己的手的形状,在MATLAB中输入
figure('position',get(0,'screensize')) axes('position',[0 0 1 1]) [x,y]=ginput;
0 0.0 0.8 1 2 3 4 5 6 7 8 9 10 0.2 0.79 1.53 2.19 2.71 3.03 3.27 2.89 3.06 3.19 3.29 将你的手掌张开放在计算机屏幕上,然后使用计算机鼠标选取一系列点勾勒出手的轮廓,按回车键结束ginput过程,这样就获得了一系列你的手掌外形数据点(x,y)。也可以这样获得数据点(x,y),先把手放在一张白纸上,并用笔画出它的轮廓线,然后将纸贴在计算机屏幕上,透过纸能看到平面上的鼠标,并通过ginput记录下轮廓上的点。
将x和y坐标值看作是两个独立变量的函数,独立变量的取值为从1到记录的点的数目。利用MATLAB的插值函数进行插值,并画出你的手掌外形轮廓。
思考题:(二维插值)
1. 在一丘陵地带测量高程,x和y方向每隔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 2. 画出山区地貌图。
利用MATLAB的peaks函数生成某山区的一些地点及其高度三维数据(单位:m)。命令格式:[x,y,z]=peaks(n),生成的n阶矩阵x,y,z为测量的山区地点三维数据(n>=30)。根据peaks函数生成的数据,利用Matlab二维插值画出该山区的地貌图和等值线图(提示函数:interp2、meshgrid、plot3等)。
相关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为网格向量的三角形线性插值(不规则数据的二维插值) 6
实验三 函数逼近与曲线拟合
实验3.1(曲线逼近方法的比较)
问题提出:曲线的拟合和插值,是逼近函数的基本方法,每种方法具有各自的特点和特定的适用范围,实际工作中合理选择方法是重要的。
实验内容:考虑实验2.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)归纳总结数值实验结果,试定性地说明函数逼近各种方法的适用范围,及实际应用中选择方法应注意的问题。
实验3.2:(最小二乘拟合的经验公式和模型)
1.(已知经验公式):某类疾病发病率为y?和年龄段x(每五年为一段,例如0~5岁为第一段,6~10岁为第二段……)之间有形如y?ae的经验关系,观测得到的数据表如下 x 1 2 y 0.898 2.38 3 3.07 12 6.53 4 1.84 13 10.9 5 2.02 14 16.5 6 1.94 15 22.5 7 2.22 16 35.7 8 2.77 17 50.6 9 4.02 18 61.6 19 81.8 bxx y 10 4.76 11 5.46 实验要求: bxy?ae(1)用最小二乘法确定模型中的参数a和b(提示函数:lsqcurvefit,
lsqnonlin)。
bxy?ae(2)利用MATLAB画出离散数据及拟合函数图形。
7
(3)利用MATLAB画出离散点处的误差图,并计算相应的均方误差。 2.(最小二乘拟合模型未知) 某年美国轿车价格的调查资料如表,其中xi表示轿车的使用年数,yi表示相应的平均价格,实验要求:试分析用什么形式的曲线来拟合表中的数据,并预测使用4.5年后轿车的平均价格大致为多少? xi yi 1 2 3 4 5 6 7 8 9 10 2615 1943 1494 1087 765 538 484 290 226 204 实验3.3(研究最佳平方逼近多项式的收敛性质)
x实验内容和要求:取函数f(x)?e,在[-1,1]上以勒让德多项式为基函数,
?(x)?f(x)?pn(x)对于n?0,1,?,10构造最佳平方逼近多项式pn(x),令n,将?n(x)~x的曲线画在一个图上。
令En?maxf(x)?pn(x),画出En~n的曲线。做出En~n之间的最小二乘
?1?x?1曲线,能否提出关于收敛性的猜测。
思考题一:(病态)考虑将[0,1]30等分节点,用多项式y?1?x???x5生成数据,再用polyfit求其3次、5次、10次、15次拟合多项式,并分析误差产生的原因。
思考题二:调研Matlab拟合工具箱的使用。
相关MATLAB函数提示: p=polyfit(x,y,k) 用k次多项式拟合向量数据(x,y),返回多项式的降幂系数,当k>=n-1时,实现多项式插值,这里n是向量维数 8