预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验报告 实验项目插值法实验日期2016/9/30理论内容Lagrange插值与Newton插值授课日期实验室名称文理管203微机编号E1实验目得及要求: 1、了解多项式差值公式得存在唯一性条件及其余项表达式得推导。 2、了解拉格朗日插值多项式得构造、计算及其基函数得特点,牛顿插值多项式得构造与应用,差商、差分得计算及基本性质。 实验内容: 编写Lagrange插值法及Newton插值法通用子程序,依据数据表 0、320、340、360、3145670、3334870、352274构造一个抛物插值多项式及,计算得近似值并估计误差。实验步骤及程序: Lagrange插值公式算法流程图 开始 输入xxi,yi,i=0,1,⋯,n 0⟹y 0⟹k 1⟹t x-xjxk-xj∙t⟹tj=0,⋯,k-1,k+1,⋯,n y+t∙yk⟹y k=0? k+1⟹k 输出y 结束 ≠ Newton插值公式算法流程图 调用函数ChaShang() f=0;temp=0;i=0 f=f+temp i<n+1 返回i阶差商f 调用函数Newton() return=0外层循环因子i=0 I阶差商f=ChaShang(i,X,Y) temp=1 temp=tremp*x-Xjj:0⟶i result=result+f*temp i<X、Sie() 返回结果result i=i+1 i=i+1 < ≥ < ≥ 2、Lagrange插值源程序 importjava、util、Scanner; /*拉格朗日插值*/ publicclassLagrange_interpolation{ /*拉格朗日插值法*/ privatestaticdouble[]Lag_method(doubleX[],doubleY[],doubleX0[]){ intm=X、length; intn=X0、length; doubleY0[]=newdouble[n]; for(inti1=0;i1<n;i1++){//遍历X0 doublet=0; for(inti2=0;i2<m;i2++){//遍历Y doubleu=1; for(inti3=0;i3<m;i3++){//遍历X if(i2!=i3){ u=u*(X0[i1]-X[i3])/(X[i2]-X[i3]); } } u=u*Y[i2]; t=t+u; } Y0[i1]=t; } returnY0; } publicstaticvoidmain(String[]args){ /*输入插值点横纵坐标*/ System、out、println("Inputnumberofinterpolationpoint:"); Scannerscan=newScanner(System、in); intm=scan、nextInt(); System、out、println("Inputnumberoftestpoint:"); intn=scan、nextInt(); doubleX[]=newdouble[m]; doubleY[]=newdouble[m]; doubleX0[]=newdouble[n]; System、out、println("InputtheelementsofX:");//已知插值点 for(inti=0;i<m;i++){ X[i]=scan、nextDouble(); } System、out、println("InputtheelementsofY:");//已知插值点得函数值 for(inti=0;i<m;i++){ Y[i]=scan、nextDouble(); } System、out、println("InputtheelementsofX0:");//需要求得插值点得横坐标标值 for(inti=0;i<n;i++){ X0[i]=scan、nextDouble(); } doubleY0[]=Lag_method(X,Y,X0);//使用拉格朗日插值法求解得到需求插值点得纵坐标值 System、out、println("拉格朗日插值法求解得:"); for(inti=0;i<n;i++){ System、out、println(Y0[i]+""); } System、out、println(); } } Newton插值源程序 importjava、util、Scanner; publicclassNewton_interpolation{ /*拷贝向量*/ privatestaticvoidcopy_vector(doublefrom[],doubleto[]){ intk=from、length; intk2=to、length; if(k!=k2){ System、out、pr