1、第 6 章 实验五插值多项式的误差实验目的:明确插值多项式逼近函数是有误差的,了解误差的分布,哪些地方误差大些,哪些地方误差小些。我们应该如何控制这些误差。6.1 插值误差余项多项式举例说明多项式插值误差情况,用 上的 5 个等距点对函数x进行插值估计,插值多项式是通过以下给定的数据点的四次多项式:)cos(xy,20, )sin(,2/i(),0sn,/si(),iny误差定义为: )(cos)(4xLxe ),()(cos!5)2/(02/ 5( x其中 是插值余项, 是 5 个数据点的拉格朗日插值多项式。图 6.1 是函)(xe)(4x数和误差的图形,可以观察到误差曲线是震荡的,它的值在
2、接近端点的区间上最大,这种误差特性在等距多项式插值中十分典型,误差分布形状上的变化还取决于被插函数的性质及插值区间的大小 。ab-4 -3 -2 -1 0 1 2 3 4-1-0.8-0.6-0.4-0.200.20.40.60.81xcos(x) e(x)cos(x)e(x)图 6.1 函数和误差曲线的图形清单 6.1 (是作图 6.1 的程序)clear clcx=-pi,-pi/2,0,pi/2,pi; % 插值节点横坐标y=cos(-pi),cos(pi/2),cos(0),cos(pi/2),cos(pi); % 插值节点纵坐标x1=-pi:0.001:pi; % 绘图点的横坐标y1
3、=Lagran_(x,y,x1); % 绘图点的纵坐标e=cos(x1)-y1; % 插值误差y2=e;plot(x,cos(x),.,x1,cos(x1),b,x1,y2,r) % 绘出两个函数曲线图形xlabel(x);ylabel(cos(x) e(x)text(1.2,0.6,cos(x),fontsize,18)text(-1.1,-0.1,e(x)=cos(x)-y,fontsize,18)一般分析插值的误差: ),()()!1()() 1121 nnxfnxxxR )(ma)!()( 1),(121nxnf如果当被插值 是一个 阶或更低阶多项式,则 =0,即误差为零。xf R否则
4、,右端给出了对任意 的误差上界估计,右端的分布完全由 决定,)(xg)!1()() 121nxxxgn多项式函数 分布曲线由程序清单 6.2 给出,分布图形由图 6.2(a) 、 (b) 、((c) 、 (d)分别给出。清单6.2clear,clf,hold onx=-pi:pi/2:pi; f=(x+pi).*(x+pi/2).*(x-0).*(x-pi/2).*(x-pi)./120; x1=-pi:0.01:pi;y2=1/30.*(x1+pi).*(x1+pi/2).*(x1-0).*(x1-pi/2).*(x1-pi)./120; axis(-pi,pi,-0.01,0.01);su
5、bplot(2,2,1),plot(x,f,.,x1,y2,r),title(a)xlabel(x);ylabel(1/30*g(x);xp=-pi:pi/4:0; f1=(xp+pi).*(xp+3*pi/4).*(xp+pi/2).*(xp+pi/4).*(xp-0)./120;xp1=-pi:0.01:0;yp1=(xp1+pi).*(xp1+3*pi/4).*(xp1+pi/2).*(xp1+pi/4).*(xp1-0)./120;axis(-pi,pi,-0.01,0.01);subplot(2,2,2),plot(xp,f1,.,xp1,yp1,r),title(b)xlabel(
6、x);ylabel(g(x);xq=-pi:pi/4:pi; fq=(xq+pi).*(xq+3*pi/4).*(xq+pi/2).*(xq+pi/4).*(xq-0).*(xq-pi/4).*(xq-pi/2).*(xq-3*pi/4).*(xq-pi)./362880;xq1=-pi:0.01:pi;yq2=5*(xq1+pi).*(xq1+3*pi/4).*(xq1+pi/2).*(xq1+pi/4).*(xq1-0).*(xq1-pi/4).*(xq1-pi/2).*(xq1-3*pi/4).*(xq1-pi)./362880;axis(-pi,pi,-0.01,0.01);subpl
7、ot(2,2,3),plot(xq,fq,.,xq1,yq2,r),title(c)xlabel(x);ylabel(5*g(x);xr = -3.0939 -2.7207 -2.0194 -1.0745 0.0000 1.0745 2.0194 2.7207 3.0939;fr=(xr+3.0939).*(xr+2.7207).*(xr+2.0194).*(xr+1.0745).*(xr-0).*(xr-1.0745).*(xr-2.0194).*(xr-2.7207).*(xr-3.0939)./362880;x1=-pi:0.001:pi; yy=20*(x1+3.0939).*(x1+
8、2.7207).*(x1+2.0194).*(x1+1.0745).*(x1-0).*(x1-1.0745).*(x1-2.0194).*(x1-2.7207).*(x1-3.0939)./362880; axis(-pi,pi,-0.01,0.01); subplot(2,2,4),plot(xr,fr,.,x1,yy,r),title(d)xlabel(x);ylabel(20*g(x);-2 0 2-0.01-0.00500.0050.01 (a)x1/30*g(x)-2 0 2-0.01-0.00500.0050.01 (b)xg(x)-2 0 2-0.01-0.00500.0050.
9、01 (c)x5*g(x)-4 -2 0 2 4-0.01-0.00500.0050.01 (d)x20*g(x)图 6.2 多 项 式 曲 线 分 布 图)(g图 6.2(a)显示了等距五点插值多项式 的 图形,结合图)(xg)(301x6.1,可以发现误差峰值出现在端点附近的区间里。如何减小插值多项式的误差呢?对 作一分析,就会得出两个结论: )(减小插值区间 长度就可减少误差。例如,将原始插值区间减小一半,即变ab为 ,此时 近似等于 1/30,如图 6.2(b)所示。 增加数据,0,)(xg点个数就可减少误差。例如图 6.2(c) ,是原始插值区间 内的 9 个点的,插值多项式图形,此
10、图与图 6.2(a)比较,误差减小大约 1/40。另一种降低误差的途径是采用非等距点的插值点,即 Chebyshev 插值点,如图 6.2(d)所示。总结: 建议尽可能在小区间上使用多项式插值; 只能在一定范围内依靠增加节点个数提高插值精度,如果插值节点个数过多往往会适得其反。使用 Chebyshev 点不仅可以使误差值减小,另一个主要的优点是其误差不会像等距节点时那样被放大。6.2 Chebyshev 多项式和 Chebyshev 点Chebyshev 多项式的公式为:01223312()()4()()kkkTxxTxT=0, 1,2, 3,5,8 时 Chebyshev 多项式的图形为图
11、6.3,作图的程序为n清单 6.3。-1 0 1-101T0(x)-1 0 1-101T1(x)-1 -0.5 0 0.5 1-101T2(x)-1 0 1-101T3(x)-1 -0.5 0 0.5 1-101T5(x)-1 0 1-101T8(x)图 6.3 Chebyshev(n=0,1,2,3,5,8)多项式曲线清单:6.3clear;clfx=-1:0.05:1;c0=Cheby_pw(0); axis(-1,1,-1.5,1.5)subplot(3,2,1),plot(x, polyval(c0,x),title(T0(x) c1=Cheby_pw(1); axis(-1,1,-1
12、.5,1.5)subplot(3,2,2),plot(x, polyval(c1,x),title(T1(x) c2=Cheby_pw(2); axis(-1,1,-1.5,1.5)subplot(3,2,3),plot(x, polyval(c2,x),title(T2(x)c3=Cheby_pw(3); axis(-1,1,-1.5,1.5)subplot(3,2,4),plot(x, polyval(c3,x),title(T3(x)c5=Cheby_pw(5); axis(-1,1,-1.5,1.5)subplot(3,2,5),plot(x, polyval(c5,x),title(
13、T5(x)c8=Cheby_pw(8); axis(-1,1,-1.5,1.5)subplot(3,2,6),plot(x, polyval(c8,x),title(T8(x)axis(-1,1,-1.5,1.5)axis on幂级数形式 Chebyshev 多项式的系数可用程序 Cheby_pw 计算。它的调用格式是:p=Cheby_pw(n)其中 n 是 Chebyshev 多项式的阶数, p 是多项式系数的行数组。Chebyshev 多项式的根可用如下命令计算:sort(roots(Cheby_pw(n)其中 sort 的作用是使所有根按升序排列。例如,当 n=5 时,上述命令得到:c=
14、 Cheby_pw(5)r=sort(roots(Cheby_pw(j)结果c = 16 0 -20 0 5 0r =-0.95105651629515-0.5877852522924700.587785252292470.95105651629515k 阶 Chebyshev 多项式还可用如下形式表达:(6.1)1()cos(),1kTxxx表达式(6.1)有 k 个根,它们都属于-1,1。由公式(6.2)0.5cos,1,2i ixik可计算 Chebyshev 多项式的根。由公式( 6.2)计算得到根与程序 Cheby_pw(n)计算的根相同。如果插值区间是a,b,则可通过如下映射: 1
15、0.5()cos,12,2i kixbaabik 映射到区间-1,1。清单 6.4:% 幂级数形式的Chbeshev多项式% 功能:将Chbeshev多项式展开为幂级数形式% 调用格式:c=Cheby_pw(n)% c:数组形式的幂系数% n:Chebyshev多项式的阶数% Cheby_pw.mfunction pn=Cheby_pw(n)pbb=1;if n=0,pn=pbb;return;endpb=1,0;if n=1,pn=pb;return;endfor i=2:n;pn=2*pb,0-0,0,pbb;pbb=pb;pb=pn;end习题1.分别用五点和九点等距插值点计算区间 上函数 的四阶和20x)sin(xy八阶 Lagrange 插值多项式,同时画出插值多项式和 的图形,观察误差分析。2.在区间 上,用四阶 Lagrange 插值多项式近似:50x231xy并计算误差 。要求按照如下步骤执行:(a)确定插值点, (b))()(Lxe写出 Lagrange 插值多项式, (c)每间隔 0.2 计算一次插值误差, (d)画出误差分布图。