等距点插值公式文档格式.docx

上传人:b****2 文档编号:13499951 上传时间:2022-10-11 格式:DOCX 页数:10 大小:84.05KB
下载 相关 举报
等距点插值公式文档格式.docx_第1页
第1页 / 共10页
等距点插值公式文档格式.docx_第2页
第2页 / 共10页
等距点插值公式文档格式.docx_第3页
第3页 / 共10页
等距点插值公式文档格式.docx_第4页
第4页 / 共10页
等距点插值公式文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

等距点插值公式文档格式.docx

《等距点插值公式文档格式.docx》由会员分享,可在线阅读,更多相关《等距点插值公式文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

等距点插值公式文档格式.docx

二、算法框图

三、算法程序

classInterpolation

{

public:

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

doubleComputeForwardValue(doublex);

//computeforwardinterpolationvalue

~Interpolation();

private:

voidGetForwardTable();

//gettheforwarddifferentialtable

intm_num;

//thenumberofinterpolationpoints

doublem_x1,m_x2;

//thefirstpointm_x1andlastpointm_x2

doublem_step;

//theinterpolationstep

double*m_func;

//thefunctionvalueofinterpolationpoints

double*m_ftable;

//theforwarddifferentialtable

};

#include<

iostream>

limits>

usingnamespacestd;

#defineNUM11

//上¦

?

面?

输º

入¨

需¨

¨

要°

a多¨

¤

少¦

´

个?

样¨

本À

#defineMIN0

区?

间?

的Ì

最Á

小?

值¦

Ì

#defineMAX10

大ä

®

intmain()

//下?

y的Ì

doublefunc[NUM]=

{

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

};

//上¦

doublex1=MIN,x2=MAX,x;

intnum=NUM;

charflag='

Y'

;

Interpolationtest(num,x1,x2,func);

while(flag=='

{

cout<

<

"

Inputx:

"

cin>

>

x;

if(!

cin)//checkingfailurestate

{

cin.clear();

//clearfailuretag

cin.ignore(numeric_limits<

int>

:

max(),'

\n'

);

//clearinputbuffer

continue;

}

if(x<

x1||x>

x2)

{

---Invalidinput:

x<

---"

endl;

Onlythenumberbetween"

x1<

and"

x2<

isvalid..."

}

else

Forwardinterpolationvalue:

test.ComputeForwardValue(x+0.001)<

cout<

endl<

Doyouwanttoprocess?

pleaseinput(Y/N):

cin>

flag;

return0;

}

Interpolation:

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

m_num=num;

m_x1=x1;

m_x2=x2;

m_step=(m_x2-m_x1)/(num-1);

m_func=newdouble[m_num];

m_ftable=newdouble[m_num];

for(inti=0;

i<

m_num;

++i)

m_func[i]=func[i];

m_ftable[i]=func[i];

GetForwardTable();

~Interpolation()

deletem_func;

deletem_ftable;

voidInterpolation:

GetForwardTable()

inti,j;

for(i=1;

for(j=m_num-1;

j>

=i;

--j)

m_ftable[j]=m_ftable[j]-m_ftable[j-1];

doubleInterpolation:

ComputeForwardValue(doublex)

double*coef;

//coefficienttalbe

doubleresult,t;

inti;

coef=newdouble[m_num];

t=(x-m_x1)/m_step;

for(i=1,coef[0]=1;

++i)//computethecoefficienttable

coef[i]=coef[i-1]*(t-i+1)/i;

for(i=0,result=0;

result+=m_ftable[i]*coef[i];

deletecoef;

returnresult;

四、算法实现

例1.当

时求

在范围

内任意

的值。

解:

(1)在程序中输入11个样本:

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

且输入MIN:

0,MAX:

10,样本容量:

11。

(2)在运行程序中输入范围内的任意

的值,如:

1.2,1.4等。

(3)程序提示答案和提示是否继续,是则输入大写Y,否则输入大写N。

例2.当给出15个

1.38,1.48,1.58,1.69,1.81,

1.94,2.10,2.28,2.50,2.76,

3.06,3.41,3.83,4.33,4.93,

且给出范围:

求出任意

(1)给出15个题目上显示的值:

4000,MAX:

11000,样本容量:

15。

1001,5200等。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1