#include
using namespace std;
typedef struct data{
double x;
double y;
}Data;//构造插值点
Data d[20];//插值点序列,最多20个
/拉格朗日/
double lagrange(int n, Data d,double z) {
double result = 0;//结果,初始是0
for(int i=0;i<=n;i++) {
double fm = 1;//Li(x)的分母
double fz =1;//Li(x)的分子
for(int j=0;j<=n;j++) {
if(j!=i)
fm = (((d+i)).x-((d+j)).x);
}//只要i!=j,乘入,共n项因式
for(int k=0;k<=n;k++) {
if(k!=i)
fz = (z-((d+k)).x);
}//只要i!=k,乘入,共n项因式
result += ((d+i)).y(fz/fm);//结果加一项,共n+1项
}
return result;
}
/牛顿/
/计算n阶均差/
double junCha(int n,Data d) {
if(n==0) {
return d->y;//返回零阶均差y0,y1
}
return (junCha(n-1,d+1)-junCha(n-1,d))/(((d+n)).x-(*d).x);/利用n-1阶算n阶均差/
}
/算牛顿插值第n+1项/
double DX(int n,Data *d,do

本文介绍了如何使用C++编程实现拉格朗日插值和牛顿插值方法。通过定义数据结构存储插值点,然后分别实现了拉格朗日插值函数`lagrange()`和牛顿插值函数`newTon()`,以及辅助计算函数。在`main()`函数中,用户可以输入多个插值点和一个计算点,程序将输出在这些点上牛顿和拉格朗日插值的结果。
最低0.47元/天 解锁文章
1408

被折叠的 条评论
为什么被折叠?



