数值分析实验一 插值与拟合
组号 班级 学号 姓名 分数
一:实验目的
1、掌握计算拉格朗日插值的方法。 2、拉格朗日插值与埃尔米特插值的比较 3、掌握线性最小二乘法的方法。
4、通过实例学习插值方法与拟合方法的联系与区别。
二:实验内容及基本知识介绍
插值的原理:
函数y?f?x? 在区间
[a,b] 上有定义,在点 a?x0?x1?xn?b 上的值为
y1,y2,?yn ,构造一个简单的函数P?x? ,使 P?xi??yi (i?0,1,?,n)(1)
成立,则P?x? 就是插值函数,再利用 P?x?计算插值,即y*?Px* 拉格朗日多项式插值Ln?x??anxn?an?1xn?1???a1x?a0
插值基函数
???1,i?j (j,i?0,1,?,n) (2) 可得到n次插值基函数 lj?xi????0,i?jli?x??j?1,j?i?nx?xix?xij ((i?0,1,?,n)) 它满足条件(2),于是满足条件(1)的插值
多项式 Ln?z? 可表示为Ln?x???yl?x? 就是拉格朗日插值多项式。
iik?0n拉格朗日插值与埃尔米特插值比较的原理:
数值分析中给出了拉格朗日插值多项式与埃尔米特插值多项式的计算公式,
li?z??H(x)=
j?1,j?i?nxi?xjz?xi,Ln?z???yl?z?;
iik?02n?1nH2n?1(x)?a0?a1x???a2n?1x?0,j?k,'??() ?jkjxk1,j?k,?,插值基函数??j(x)及?(x)
j(j=0,1,…,n),共有2n+1个,每一个基函数都是2n+1次多项式,且满足条件
?(x)??jk??x??0,??x???jkjk'jk(jk,?0?,1,n ,).插值多项式H(x)可写成插值基函数表示的形式为 H(x)=
?y?i(z)?i?1iny?i'i(z),其中,
1
n?1?2??i??j?1,j?i??x?z??l?x?, ??z???z?x?l?z?,(j,i?0,1,?,n)
x?x??i22iiiiij① 作出被插函数y=f(x),10次拉格朗日插值多项式y=L(x),21次的埃尔米特插值多项式
y=H(x)的图像。 ② 观察图像,认为结论“在插值区间的某些点处,21次埃尔米特插值多项式H(x)比10次
拉格朗日插值多项式L(x)的龙格现象更加显著”是否正确。
拟合的原理:
已知一组二维数据,即平面上的n个点(xi,yi)i?1,2,?,3 ,寻求一个函数 y?f?x? ,使 f?x? 在某种准则下与所有数据点最为接近,即曲线拟合的最好。 曲线拟合常用线性最小二乘法,其基本思路为: 先
选
定
一
组
函
数
r1?x?,r2?x?,?rm?x?,m?n ,令
f?x??a1r1?x??a2r2?x???amrm?m? (1)
其中 a1,a2,?,am 为待定系数。确定 a1,a2,?,am (最小二乘准则)使n个点
(xi,yi) 与曲线 y?f?x? 的距离的?i平方和最小。即
n22nmJ(a1,a2,?,am)???i??[f?xi??yi]??[?akrk?xi??yi]2 所以问题归
i?1i?1k?1结为求 a1,a2,?,am 使J(aq,a2,?,am) 最小,线性最小二乘法可归结为求解下面的方程组:?aN?b?xi??yi 2?a?xi?b?xi??xiyi?三:实验问题及方法、步骤
(1)求满足插值条件
x i120 12 150 13 180 15 y i的拉格朗日插值多项式在x=125处的值。利用拉格朗日插值多项式的奇函数表达形式Ln?z???yili?z?
k?0n其中拉格朗日函数的编写如下:
x=[120,150,180]; y=[12,13,15];
2
n=length(x);
z=input('请输入欲求其函数值的节点 z='); L=0; for i=1:n t=1; for j=1:n if j~=i
t=t*(z-x(j))/(x(i)-x(j));%计算拉格朗日插值基函数 end end
L=L+t*y(i); %计算拉格朗日插值多项式 end
fprintf('函数值 L(%8.4f)=.6f\\n',z,L)
请输入欲求其函数的节点 z=125 函数值 L(125.0000)= 12.097222 (2) 给定函数f(x)=
1?1?x?2,节
x=-5+i (i=0,1,…,10)以及插值条件H(x)?f(x),
iiiH'(xi)?f(x) (i=0,1,…10),并分别用这两种方法计算z=-5:1:5的值。
i'拉格朗日插值与埃尔米特插值比较程序如下:
close clear all
%给出插值条件
x=-5:1:5; y=1./(1+x.^2);
ybar=-2*x./(1+x.^2).^2; n=length(x);
%计算拉格朗日插值多项式,埃尔米特插值多项式在点z=-5:0.01:5的值
z=-5:0.01:5; m=length(z); for k=1:m
L(k)=0; %拉格朗日插值多项式赋初值 H(k)=0; %埃尔米特插值多项式赋初值
for i=1:n
t=1; %拉格朗日插值基函数赋初值
s=1; %埃尔米特插值基函数 alpha 中的和式赋初值 for j=1:n if j~=i
t=t*(z(k)-x(j))/(x(i)-x(j)); s=s+2*(x(i)-z(k))/(x(i)-x(j)); end end
L(k)=L(k)+y(i)*t;
3
H(k)=H(k)+y(i)*s*t^2+ybar(i)*(z(k)-x(i))*t^2; end end
u=-5:0.01:5; v=1./(1+u.^2);
plot(u,v,'b') %用蓝色线作被插函数图像 hold on
plot(z,L,'r') %用红色线作拉格朗日插值多项式图像 plot(z,H,'k') %用黑色线作埃尔米特插值多项式图像 hold off
图1 拉格朗日插值多项式与埃尔米特插值多项式的比较
(3)给出函数:
x i1 2.5 2 4 3 5.5 4 6 5 6.8 y i 分别用一次、二次、三次和四次多项式来拟合这些数据点,并通过作图,找出哪一种拟合多项式对这些数据点的拟合效果最好。
4
MATLAB命令空间键入以下命令 x=[1,2,3,4,5]
y=[2.5,4,5.5,6,6.8]
p1=polyfit(x,y,1) %一次多项式来拟合 y1=polyval(p1,x) subplot(221) plot(x,y,'*') hold on plot(x,y1)
p2=polyfit(x,y,2) y2=polyval(p2,x) subplot(222) plot(x,y,'d') hold on plot(x,y2)
p3=polyfit(x,y,3) %y3=polyval(p3,x) subplot(223) plot(x,y,'v') hold on plot(x,y3)
p4=polyfit(x,y,4) %y4=polyval(p4,x) subplot(224) plot(x,y,'p') hold on plot(x,y4)
二次多项式来拟合 三次多项式来拟合 四次多项式来拟合 5
%
图2为一次,二次,三次,四次多项式拟合
四计算结果分析
对于函数插值实验,输出的结果如上边的图表1,从图中可以发现,埃尔米特插值多项式在0的附近与被插函数吻合的较好,而在-5,5附近会出现更为显著的龙格现象,这表明,次数更高的埃尔米特插值多项式并不能更好的改进对被插函数的逼近性,反而使逼近的整体效果更坏。
利用最小二乘方进行函数拟合时,多项式的次数越高,拟合的精度也就越高,但是,当拟合多项式的次数较高时,就会出现病态问题,拟合数据严重偏离实际情况 ,拟合节点分布的区间?
?x0,xm?偏离原点越远,病态越严重;xi(i=0,1,?,m)的数量级相差越大,病态越严重。
五思考与提高
拉格朗日插值是高次多项式插值(n+1各节点上用不超过n次的多项式),在理论上较为重要,插值曲线光滑,误差估计有表达式,但有震荡现象,收敛性不能保证。这种插值主要用于理论分析,实际意义不大。埃尔米特插值多项式可以满足节点处函数值及导数值与给定的值相等的要求。由于给定的值增加了一倍,插值多项式的待定系数也增加了一倍,于是当节点数为n时,可唯一确定一个次数不产过2n+1的插值多项式。
曲线拟合的最小二乘法在应用科学中具有重要作用,它是离散点的最佳平方逼近。为了克服函数拟合的以上缺点,一般采用以下措施:①而采用离散点正交多项式可避免解法方程时出现的病态问题,为用多项式做最小二乘模型提供了可行的算法。? ②尽量少作高次拟合多项式,而作不同的分段低次拟合;?
③我们可以不使用原始节点作拟合,将节点分布区间作平移,使新的节点从而减低病态程度。?
xi关于原 点对称,
6