等距节点插值公式.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

2012-2013(1)专业课程实践论文

等距节点插值公式

柳希元,0818180127,R数学08-1班

一、算法理论

将Newton差商插值多项式中各阶差商用相应差分替代,就可得到各种形式的等距节点插值公式。

如果节点错误!未找到弓I用源。要计算错误!未找到引用源。附近点x的函数错误!未找到引用源。值,可令错误!未找到引用源。于是

—1)亍 t(t—1)... —Tl+1)

NJ薰+皿)=斥+t.f。+L +…+ !

Z! n!

为Newton前插公式。

其中

△h=A+i-fk

如果要求表示函数在错误!未找到引用源。附近的值错误!未找到引用源。

此时应用Newton插值公式,插值点应按错误!未找到引用源。的次序排列,有

N」x)=/(xj+f[%褊_]](充一七)+,队办一1,褊-』(充一

+,,■+f[xnfxn_it,x(J(x-xn)...(x-xj

做变换错误!未找到引用源。带入公式得

_1) 7 _1)...(t_Tl+1)

y+/)=^+m+七已砂e+…+ n 叫

Zi ni

为Newton后插公式。

其中

=A+i-fk

二、算法框图

输入源值

姑束

算法程序

{

classInterpolation

克小瑜人出成在区向内

输JJXewcMf

式站果

1

r

握问底否墅纹输入

.1

输氏理行F步

断是否

public:

Interpolation(intnum,doublex1,doublex2,doublefunc[]);

doubleComputeForwardValue(doublex);//computeforwardinterpolationvalue“Interpolation。;

private:

voidGetForwardTable();//gettheforwarddifferentialtable

private:

intm_num;//thenumberofinterpolationpoints

doublem_x1,m_x2;//thefirstpointm_x1andlastpointm_x2

doublem_step;//theinterpolationstep

double*m_func;//thefunctionvalueofinterpolationpoints

double*m_ftable;//theforwarddifferentialtable

};

#includeiostream

#includelimits

usingnamespacestd;

#defineNUM11

//上?面?输°?入“?需...?要°3多“。少L个?样..’本A?

#defineMIN0

//上?面?输°?入“?区?间?的t?最A?小?值口

#defineMAX10

//上?面?输°?入.??区?间?的I?最A?大a“?值]

intmain()

{

//下?面?输°?入-?y的I?值Udoublefunc[NUM]=

{

0,1,4,9,16,25,36,49,64,81,100

};

//上?面?输°?入*的i?值Udoublex1=MIN,x2=MAX,x;intnum=NUM;charflag=Y;

Interpolationtest(num,x1,x2,func);

while(flag==Y)

{

coutInputx:;cinx;

if(!cin)//checkingfailurestate{

cin.clear();//clearfailuretag

cin.ignore(numeric_limitsint::max(),\n);//clearinputbuffer

continue;

}

if(xx1||xx2){

cout Invalidinput:x endl;

coutOnlythenumberbetweenx1andx2isvalid...endl;}else{

coutForwardinterpolationvalue:test.ComputeForwardValue(x+0.001)endl;}

coutendlDoyouwanttoprocess?pleaseinput(Y/N):endl;cinflag;

}

return0;

Interpolation::Interpolat

文档评论(0)

z190712l + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档