1、1. 对Runge函数 用在区间-1, 1 下列条件作插值逼近,并和 的图像251)(xR )(xR进行比较。(1 ) 用等距节点 ,h=0.2, 绘出它的10次Newton插值多项式的图像。ihi(2 ) 用节点 (i=0,1,10),绘出它的10次Newton插值多项式的图)2cos(1xi像。(3 ) 用等距节点 ,h=0.2, 绘出它的分段线性插值多项式的图像。ihi(4 ) 用等距节点 ,h=0.2, 绘出它的三次自然样条线性插值多项式的图像。xi1解:-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-0.500.511.52 Newton三三三三
2、三三三三三三x三y三Newton三三三三三三三:1/(1+25*x2)当 x 在中间取值范围时,Newton 插值曲线与原曲线比较接近,但是当 x 在两端时,Newton 插值曲线与原曲线相差越来越大,出现了 Runge 现象。插值余项 .niin xxfxR010)(,)(由插值多项式的唯一性知 ,因此,牛顿插值与拉格朗日插值有相同的)(NLnn余项表达式,即 niiniinnn baxxfxfxNfxR 000)1( ,),(,)(!)( 由此有 .)!1(,0nfxf 牛顿前插公式为.00200 !)1()!)()( fnttftftthxN nn 其余项为 ),(),)1()() 01
3、0 nnn xfhtthxNfR 牛顿后插公式为.nnnn fnttftftthxN !)()!2)1()( 其余项为 ),(),)1()() 01( nnn xfhtthxNfR -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-0.200.20.40.60.811.2 Lagrange三三三三三三三三三三x三y三Lagrange三三三三三三三:1/(1+25*x2)在这里由于 x 不是等距节点,Lagrange 插值曲线与原曲线比较接近,没有出现 Runge现象。给定 ,构造次数不超过 的拉格朗日插值多项式),10)(,niyin.ni iij ijii
4、 xfxflxL00)(称 为 关于 的 次拉格朗日插值多项式,它满足)(nfn,1.nixfLi ,10),(其中 称为 为结点的 次插值函数,它满足)(xli nx,10 njilijji ,10,1)( .)()()()( 1110 nixiiiiii xxl 设 是 上关于 的 次插值多项式, 在 上有xLn,ba,nyif,ba阶连续导数, 在 上存在,则其余项为)(1fn,.niinnn baxfxLfxR0)1( ,),(!-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 100.10.20.30.40.50.60.70.80.91三三三三三三三三
5、三三三三三三x三y三三三三三三三三三三三三:1/(1+25*x2)分段线性插值函数在区间上是一致收敛的,曲线与原曲线比较接近,不会出现 Runge现象,但是需要用分段函数来表示。n越大,分段越多,节点间距越小,分段直线越逼近于原函数曲线;由于在每个节点处,分段线性插值函数都是取该点的原函数的值,故具有很好的收敛性,不会像拉格朗日插值那样出现振荡现象;()由于对于x点的插值,分段线性插值只用到x左右的两个节点,并且用直线直接相连,因此分段线性插值在节点处不光滑。-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 100.10.20.30.40.50.60.70.80
6、.91三三三三三三三三三三三三三三x三y三三三三三三三三三三三三:1/(1+25*x2)三次自然样条插值曲线与原曲线很接近。设 为三次样条插值函数,则有估计式)(,)(4xsbacxf, .kkkhfcf 4)()( 2,10其中:iiini xh110,max.)(max,83,24,385),( 10 ffcc b可见,当 时,三次样条插值函数 及其一阶导数 、二阶导数 分h)(xss)(xs别一致收敛于被插函数 、 及 .)(xfff在以上四种插值方法中,三次自然样条插值方法得到的曲线与原曲线最相近。拉格朗日插值曲线在节点附近误差很小,曲线也较为光滑,但在端点处有较为明显的振荡现象;分段
7、线性插值曲线具有良好的收敛性,但在节点处不光滑;而三次样条插值曲线在 n 较小时也会在端点附近有相对较大的误差,但兼具了收敛和光滑的优点,从直观上看与原函数曲线吻合得最好。Matlab 程序如下:x0=-1:0.2:1; %初始数据y0=1./(1+25*x0.2);x=-1:0.01:1; %插值点y=1./(1+25*x.2);n=max(size(x0);l=max(size(x);s=1; %一次因子的乘积,预设为 1dx=y0; %差商for k=1:ls=1; %一次因子的乘积,预设为 1dx=y0; %差商yz=y0(1);for i=1:n-1dx0=dx;for j=1:n-
8、idx(j)=(dx0(j+1)-dx0(j)/(x0(i+j)-x0(j);enddf=dx(1);s=s*(x(k)-x0(i); %一次因子乘积yz=yz+s*df; %计算各次 Newton 插值的值 endyx(k)=yzend figure;plot(x,yx,r,LineWidth,2);hold on;plot(x,y,b,LineWidth,2);grid on;plot(x0,y0,ok,markersize,6,LineWidth,6)hold ontitle(Newton 插值曲线与原曲线比较,fontsize,24);xlabel(x 轴,fontsize,20);y
9、label(y 轴,fontsize,20);legend(Newton 插值曲线,原曲线:1/(1+25*x2);set(gca,fontsize,16)i=1:11x0=cos(2*i-1)/22*pi)y0=1./(1+25*x0.2);x=-1:0.01:1; %插值计算点y=1./(1+25*x.2);m=length(x);n=11;for k=1:m %分别对每一点进行插值tx=x(k);%插值点 s=0;%进入迭代计算过程for j=0:(n-1)t=1;for i=0:(n-1)if i=jt=t*(tx-x0(i+1)/(x0(j+1)-x0(i+1);endends=s+
10、t*y0(j+1);endyx(k)=s;end%画图显示结果figure;plot(x,yx,r,LineWidth,2);hold on;plot(x,y,b,LineWidth,2);grid on;plot(x0,y0,ok,markersize,6,LineWidth,6)hold ontitle(Lagrange 插值曲线与原曲线比较,fontsize,24);xlabel(x 轴,fontsize,20);ylabel(y 轴,fontsize,20);legend(Lagrange 插值曲线,原曲线:1/(1+25*x2);set(gca,fontsize,16)x0=-1:0
11、.2:1y0=1./(1+25*x0.2);x=-1:0.01:1; %插值计算点y=1./(1+25*x.2);m=length(x);n=length(x0);for j=1:mfor i=1:n-1if (x(j)=x0(i)endendendfigure;plot(x,yx,r,LineWidth,2);hold on;plot(x,y,b,LineWidth,2);grid on;plot(x0,y0,ok,markersize,6,LineWidth,6)hold ontitle(分段线性插值曲线与原曲线比较,fontsize,24);xlabel(x 轴,fontsize,20)
12、;ylabel(y 轴,fontsize,20);legend(分段线性插值曲线,原曲线:1/(1+25*x2);set(gca,fontsize,16)x0=-1:0.2:1;%节点y0=1./(1+25*x0.2);x=-1:0.01:1; %插值计算点y=1./(1+25*x.2);yx=csape(x0,y0,second);figure;plot(x,fnval(yx,x),r,LineWidth,2); hold on;plot(x,y,b,LineWidth,2);grid on;plot(x0,y0,ok,markersize,6,LineWidth,6)hold ontitle(三次样条插值曲线与原曲线比较,fontsize,24);xlabel(x 轴,fontsize,20);ylabel(y 轴,fontsize,20);legend(三次样条插值曲线,原曲线:1/(1+25*x2);set(gca,fontsize,16)