拉格朗日插值公式:
?????????????????????? ?n?????????n
? Pn(x(i))=????? ∑〔?? ∏? (x-x(j))/(x(k)-x(j)) 〕y(k)
??????????????????????k=0??? ?j=0
???????????????????????????????? j≠k
?
? 屬性:插值計(jì)算法
?????????????????????????????????????????????????????????????????????????????????????????? n
? 精度(局部截?cái)嗾`差):| f(x) - Pn(x) | = [f(ε)] / (n+1)!? ∏? ( x - x(k) )?? (注:其中[f(ε)]為f(ε)第n+1次求導(dǎo)的表達(dá)式)
?????????????????????????????????????????????????????????????????????????????????????????k=0
?????????????????????????????????????????
?《數(shù)值分析簡(jiǎn)明教程》-2 Editon -高等教育出版社 -page 18 -算法流程圖
? 代碼維護(hù):2005.6.11? DragonLord
**/
#include<iostream.h>
int main()
{
?float x;//插值
?float p[10][2];//已知(x0,y0),(x1,y1)...
?int n;//輸入已知插值組數(shù)
?float y,t;
?int k;
?
?cout<<"輸入插值組數(shù):"<<endl;
?cin>>n;
?cout<<"輸入"<<n<<"組已知插值數(shù)(X,Y)"<<endl;
??? for(int i=0;i<n;i++)
?{
??cin>>p[i][0]>>p[i][1];
?}
??? cout<<"輸入插值:"<<endl;
?cin>>x;
?
?y=0;
?k=0;
?
?for(k=0;k<n;k++)
?{
??t=1;
??for(i=0;i<n;i++)
??{
???if(i!=k)
???{
????t=t*(x-p[i][0])/(p[k][0]-p[i][0]);? //key step
???}
??}
??y=y+p[k][1]*t;
?}
?cout<<"插值結(jié)果:"<<y<<endl;
return 0;
}