《数值分析知识内容 (23).pdf》由会员分享,可在线阅读,更多相关《数值分析知识内容 (23).pdf(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、4.4 差分与等距节点插值 上节讨论了节点任意分布的插值公式,但实际应用时经常遇到等距节点的情形,这时插值公式可以进一步简化为等距节点的插值公式,计算也简单得多.首先介绍差分的概念.4.4.1 差分的概念和性质 设函数)(xfy 在等距节点),1,0(0nkkhxxk上的值)(kkxfy 为已知,这里h为常数,称为步长.【定义 2】记号 kkkyyy1,1kkkyyy,)2()2(2121hxfhxfyyykkkkk,分别称为)(xf在kx处以h为步长的向前差分(Forward Difference)、向后差分(Backward Difference)及中心差分.符号,分别称为向前差分算子,向
2、后差分算子及中心差分算子.利用一阶差分可定义二阶差分.二阶向前差分:)()()()()()(2xfhxfxfhxfxfxf )()(2)2(xfhxfhxf,取kxx 时,则有kkkkkkyyyyyy12122.一般地,由)(xf的1m阶差分可定义)(xf的m阶向前差分,即)()()()()()(1111xfhxfxfhxfxfxfmmmmm.定义m阶差分为 kmkmkmyyy111,111kmkmkmyyy,211211kmkmkmyyy.常用的算子符号还有恒等算子I和移位算子E,定义为:1,kkkkyEyyIy,则差分算子,与I和E有下面关系 1212121),(,EIIEEEEIE,利用
3、这种关系,可以定义m阶差分.因为 mjjmjmmEjmIE0)1()(,mjjmjmmmEjmE022/)1(,mjjjmmEjmEI01)1()(,所以 mjjmkjkmyjmy0)1(,mjmjkjkmyjmy02/)1(,mjmkmjkjkmyyjmy0)1(.以上各式中jm是二项式系数,即!)1()1(jjmmmjm.差分有如下的基本性质.(1)差商与差分的关系:因为 0010101101)(1,yhyyhxxyyxxf 022011201212012102121,yhhyhyhxxxxfxxfxxxfxxxf 递推可得010!1,yhkxxxfkkk.同理可得nkkknnnyhkxx
4、xf!1,1.(2)差分与导数关系:因为 kkkhkxxxfxf!,)(100kkkkhfhkkf)(!)()()(,所以)()()(0kkkfhxf,其中),(0kxx.4.4.2 等距节点插值公式 将牛顿差商插值多项式中各阶差商用相应差分代替,就可得到各种形式的等距节点插值公式.这里介绍常用的前插与后插公式.一、牛顿向前差分插值公式(Newton Forward-Difference Formula)如果节点),1,0(0nkkhxxk,要计算0 x附近点x的函数)(xf的值,可令)10(0tthxx(即x位于数据表的表头),于是hktxxk)(.又由差商与差分的关系,有)()(,1101
5、0kkxxxxxxxxxf)1()1()0(!10kththtyhkkk)1()1(!10ktttykk.因此,牛顿差商插值多项式)()(,)(,)(,)()(110210102100100nnnxxxxxxxxxxfxxxxxxxfxxxxfxfxN 用向前差分代替,得到牛顿向前差分插值多项式(简称为牛顿前插公式))1()1(!2/)1()(002000ntttnyttytyythxNnn.(5.10)其余项为),(),()1()!1()()(01)1(nnnnxxnttthnfxR.二、牛顿向后差分插值公式(Newton Backward-Difference Formula)如果要求函数
6、表示nx附近的函数值)(xf,此时应用牛顿插值公式,插值点应按01,xxxnn的次序排列,有)()(,)(,)(,)()(11011211xxxxxxxxxfxxxxxxxfxxxxfxfxNnnnnnnnnnnnnnn 令)01(tthxxn(即x位于数据表的表尾),并利用差商与差分的关系,得牛顿向后差分插值公式(简称为牛顿后插公式))1()1(!)1(!2)(2ntttnyttytyythxNnnnnnnn,(5.11)其余项为),(),()1()!1()()(01)1(nnnnxxnttthnfxR.例 7 己知xycos在)1.0,4,1,0(hkkhxk处的函数值,求 cos0.04
7、8 及cos0.35 的近似值并估计误差.解 1)首先构造差分表如下.表 5-6 差分表 ix iy )(yy )(22yy )(33yy )(44yy 0.0 0.1 0.2 0.3 0.4 1.00000 0.99500 -0.00500 0.98007 -0.01493 -0.00993 0.95534 -0.02473 -0.00980 0.00013 0.92106 -0.03428 -0.00955 0.00025 0.00012 2)用牛顿前插公式(5.10)计算 cos0.048 的近似值,取048.0 x,1.0h,48.0/)0(hxt,用表 5-6 的差分,得 2/)14
8、8.0(48.000993.048.0005.01)048.0()048.0cos(4 N 6/)248.0)(148.0(48.000013.0 99884.024/)348.0)(248.0)(148.0(48.000012.0.误差估计为7-554101.0921)4)(3)(2)(1(!5)048.0(ttttthMR,其中0.3894)4.0sin(5M.3)用牛顿后插公式(5.11)计算 cos0.35 的近似值,取35.0 x,1.0h,5.0/)4.0(hxt,用表 5-6 的差分,得 2/)15.0)(5.0(00955.0)5.0(03428.092106.0)35.0()
9、35.0cos(4 N 6/)25.0)(15.0)(5.0(00025.0 93937.024/)35.0)(25.0)(15.0)(5.0(00012.0.误差估计为7-554101.0648)4)(3)(2)(1(!5)35.0(ttttthMR,其中0.3894)4.0sin(5M.牛顿向前差分插值的MATLAB程序:Newton_forward.m function yi,Y=Newton_forward(x,y,xi)%Newton前插公式,其中,%x为行向量,等距插值节点;%y为行向量,插值节点处的函数值;%xi为标量,被估计函数的自变量;%yi为xi处的函数估计值;%Y为差分表
10、.%计算初始值.h=x(2)-x(1);t=(xi-x(1)/h;%计算差分表Y.n=length(y);Y=zeros(n);Y(:,1)=y;for k=1:n-1 Y(:,k+1)=diff(y,k);zeros(k,1);end%计算Newton前插公式N(xi).yi=Y(1,1);for i=1:n-1 z=t;for k=1:i-1 z=z*(t-k);end yi=yi+Y(1,i+1)*z/prod(1:i);end 牛顿向后差分插值的MATLAB程序:Newton_backward.m function yi,Y=Newton_backward(x,y,xi)%Newton
11、后插公式,其中,%x为行向量,等距插值节点;%y为行向量,插值节点处的函数值;%xi为标量,被估计函数的自变量;%yi为xi处的函数估计值;%Y为差分表.%计算初始值.n=length(x);h=x(n)-x(n-1);t=(x(n)-xi)/h;%计算差分表Y.n=length(y);Y=zeros(n);Y(:,1)=y;for k=1:n-1 Y(:,k+1)=zeros(k,1);diff(y,k);end%计算Newton后插公式N(xi).yi=Y(n,1);for i=1:n-1 z=t;for k=1:i-1 z=z*(t-k);end yi=yi+Y(n,i+1)*(-1)i
12、*z/prod(1:i);end 对于例 7,调用插值函数 Newton_forward.m 求插值.x=0:0.1:0.4;y=1 0.995 0.98007 0.95534 0.92106;xi=0.048;yi,Y=Newton_forward(x,y,xi)程序计算得,cos0.048的近似值为yi=0.9988.输出差分表为:Y=1.0000 -0.0050 -0.0099 0.0001 0.0001 0.9950 -0.0149 -0.0098 0.0003 0 0.9801 -0.0247 -0.0095 0 0 0.9553 -0.0343 0 0 0 0.9211 0 0 0 0 再调用插值函数 Newton_backward.m 求插值.x=0:0.1:0.4;y=1 0.995 0.98007 0.95534 0.92106;xi=0.35;yi,Y=Newton_backward(x,y,xi)程序计算得,cos0.35的近似值为yi=0.9394.输出差分表为:Y=1.0000 0 0 0 0 0.9950 -0.0050 0 0 0 0.9801 -0.0149 -0.0099 0 0 0.9553 -0.0247 -0.0098 0.0001 0 0.9211 -0.0343 -0.0095 0.0003 0.0001