Lagrange插值及Newton插值.docx

上传人:b****5 文档编号:6869873 上传时间:2023-01-11 格式:DOCX 页数:9 大小:31.46KB
下载 相关 举报
Lagrange插值及Newton插值.docx_第1页
第1页 / 共9页
Lagrange插值及Newton插值.docx_第2页
第2页 / 共9页
Lagrange插值及Newton插值.docx_第3页
第3页 / 共9页
Lagrange插值及Newton插值.docx_第4页
第4页 / 共9页
Lagrange插值及Newton插值.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Lagrange插值及Newton插值.docx

《Lagrange插值及Newton插值.docx》由会员分享,可在线阅读,更多相关《Lagrange插值及Newton插值.docx(9页珍藏版)》请在冰豆网上搜索。

Lagrange插值及Newton插值.docx

Lagrange插值及Newton插值

实验报告

实验项目

插值法

实验日期

2016/9/30

理论内容

Lagrange插值与Newton插值

授课日期

实验室名称

文理管203

微机编号

E1

实验目的及要求:

1、了解多项式差值公式的存在唯一性条件及其余项表达式的推导。

2、了解拉格朗日插值多项式的构造、计算及其基函数的特点,牛顿插值多项式的构造与应用,差商、差分的计算及基本性质。

实验内容:

编与Lagrange插值法及Newton插值法通用子程序,依据数据表

Xi

0.32

0.34

0.36

sinxi

0.314567

0.333487

0.352274

构造一个抛物插值多项式P2(x)及N2(x),计算sinO.3367的近似值并估计误差。

实验步骤及程序:

1、

Lagrange插值公式算法流程图

开始

输入.二」二丿…冲

0=

ny

0=

=>k

—气

t=^t

\-xj

1=0j****k-ljk+1/-fn

输出y

结束

k+Ink

 

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

doublet=0;

for(inti2=0;i2

doubleu=1;

for(inti3=0;i3

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("lnputtheelementsofX:

");〃已知插值点

for(inti=0;i

X[i]=sean.nextDouble();

}

System.out.println("InputtheelementsofY:

");〃已知插值点的函数值

for(inti=0;i

Y[i]=sean.nextDouble();

}

System.out.println("InputtheelementsofX0:

");〃需要求的插值点的横坐标标值

for(inti=0;i

X0[i]=scan.nextDouble();

}

doubleY0[]=Lag_method(X,Y,X0);〃使用拉格朗日插值法求解得到需求插值点的纵坐标值

System.out.println("拉格朗日插值法求解得:

");

for(inti=0;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.println("thetwovector'slengthisnotequal!

");

System.exit(O);

}

for(inti=O;i

to[i]=from[i];

}

}

doubleX0[]){

/*牛顿插值法*/

privatestaticdouble[]Newton_inter_method(double[]X,double[]Yintm=X.length;

intn=X0.length;

double[]Y0=newdouble[n];

double[]cp_Y=newdouble[m];

for(inti1=0;i1

doublet=0;

intj=0;

copy_vector(Y,cp_Y);

intkk=j;

/*求各级均差*/

while(kk

kk=kk+1;

for(inti2=kk;i2

cp_Y[i2]=(cp_Y[i2]-cp_Y[kk-1])/(X[i2]-X[kk-1]);

}

}

/*求插值结果*/

doubletemp=cp_Y[0];

for(inti=1;i<=m-1;i++){

doubleu=1;

intjj=O;

while(jj

u*=(XO[i1]-X[jj]);

jj++;

}

temp+=cp_Y[i]*u;

}

Y0[i1]=temp;

}

returnY0;

}

publicstaticvoidmain(String[]args){

/*输入插值点横纵坐标*/

System.out.println("lnputnumberofinterpolationpoint:

");

Scannerscan=newScanner(System.in);

intm=scan.nextInt();

System.out.println("lnputnumberoftestpoint:

");

intn=scan.nextInt();

doubleX[]=newdouble[m];

doubleY[]=newdouble[m];

doubleX0[]=newdouble[n];

System.out.println("InputtheelementsofX:

");〃已知插值点

for(inti=0;i

X[i]=scan.nextDouble();

}

System.out.println("lnputtheelementsofY:

");〃已知插值点的函数值

for(inti=0;i

Y[i]=scan.nextDouble();

}

System.out.println("lnputtheelementsofX0:

");〃需要求的插值点的横坐标标值

for(inti=O;i

X0[i]=scan.nextDouble();

}

doubleY0[]=Newton」nter_method(X,Y,X0);〃使用拉格朗日插值法求解得到需

求插值点的纵坐标值

System.out.println("拉格朗日插值法求解得:

");

for(inti=0;i

System.out.println(Y0[i]+"");

}

System.out.println();

}

}

结果分析与讨论:

拉格朗日插值法求解得

0.3303743620375

牛顿法解得

0.3303743620375

1、Lagrange插值法和Newton插值法解决实际问题中关于只提供复杂的离散数据的函数求值问题,通过将所考察的函数简单化,构造关于离散数据实际函数f(x)的近似函数P(x),从而可以计算未知点

岀的函数值,是插值法的基本思路。

2、实际上Lagrange插值法和Newton插值法是同一种方法的两种变形,其构造拟合函数的思路是相同的,而实验中两个实际问题用两种算法计算出结果是相同的。

3、实验所得结果精确度并不高,一方面是因为所给数据较少,另一方面也是主要方面在Win32中C++中数据类型double精度只有7位,计算机在进行浮点运算时截断运算会导致误差。

实际问题中,测量

数据也可能导致误差。

4、在解决实际问题中,更多是利用精确且高效的计算机求解。

所以解决问题时不仅要构造可求解的算法,更重要是构造合理的可以编写成程序由计算机求解的算法,而算法的优化不仅可以节省时间空间,更能得到更为精确有价值的结果。

实验报告评分标准

评分项目

满分

得分

评分项目

满分

得分

实验步骤及程序

10

运行结果

5

结果分析与讨论

5

合计

20

【本文档内容可以自由复制内容或自由编辑修改内容期待

你的好评和关注,我们将会做得更好】

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

当前位置:首页 > 人文社科

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

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