1、区间长度,n(即n+1个节点),预测点输出:预测点的近似函数值,精确值,及误差(2)已知用牛顿插值公式求的近似值。数据点集,预测点。预测点的近似函数值四、 实验原理及算法描述算法基本原理:(1)拉格朗日插值法(2) 牛顿插值法算法流程五、 程序代码及实验结果(1) 输出:A拉格朗日插值法 B.分段线性插值X y(精确) y(拉格朗日) y(分段线性) 误差(拉) 误差(分)0.5000000.8000000.8434070.750000 -0.054259 0.0500004.5000000.0470591.578720 0.0486425 -32.547674 -0.033649(2) 输出
2、:X y(精确) y(牛顿插值) 误差(牛顿插值) 5.000002.2360682.266670 -0.013686 源码:(1)A.拉格朗日插值法#include stringvectorusing namespace std;double Lagrange(int N,vector&X,vectorY,double x); int main() double p,b,c;char a=n; do coutN; vectorp;b;c=b-p;c=c/(N-1); for(int i=0;ii+)Xi=p; Yi=1/(1+p*p);p=p+c; 请输入要求值x的值: double x;x
3、; double result=Lagrange(N,X,Y,x);由拉格朗日插值法得出结果: result是否要继续?(y/n):a; while(a=y); return 0; Y,double x) double result=0; for(int i=0;i+) double temp=Yi; for(int j=0;jj+) if(i!=j) temp = temp*(x-Xj); temp = temp/(Xi-Xj); result += temp; return result;B:分段线性插值double fenduan(int N,vectorc) b=b+1; result
4、=Yb*(1-(x-Xb)/c)+Yb+1*(x-Xb)/c);(3) 牛顿插值法double ChaShang(int n,vectorY);double Newton(double x,vector char a= do int n; coutn; vectorYi; double x;由牛顿插值法得出结果:Newton(x,X,Y)Y) double f=0; double temp=0;n+1; temp=Yi;j+) if(i!=j) temp /= (Xi-Xj); f += temp; return f; &X.size(); double temp=1; double f=Ch
5、aShang(i,X,Y);i; result += f*temp; return result;六、 实验总结1. 通过实验一数据发现,拉格朗日插值在低次插值时,同源函数偏差并不大,但在高次插值时同原函数偏差大、存在明显的龙格现象,而分段线性插值可以避免出现的龙格现象,与原函数比较吻合,但是分段线性插值由于其分段属性,使得插值函数失去光滑性,可以考虑采用Hermite插值优化。2. 通过实验二计算过程发现,拉格朗日插值法的线性插值的计算过程没有继承性,即增加一个节点时整个计算工作必须重新开始。而牛顿插值则避免了这一问题,这样大量的节省了乘、除法运算次数,减少了计算的时间。因此,对于一些结构相当复杂的函数,牛顿插值法比拉格朗日插值法要占优势。五、教师评语(或成绩) 教师签字 :9
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2