插值及Newton插值_第1页
插值及Newton插值_第2页
插值及Newton插值_第3页
插值及Newton插值_第4页
插值及Newton插值_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告实验项目插值法实验日期2016/9/30理论内容Lagrange插值与Newton插值授课日期实验室名称文理管203微机编号E1实验目的及要求: 1、了解多项式差值公式的存在唯一性条件及其余项表达式的推导。2、了解拉格朗日插值多项式的构造、计算及其基函数的特点,牛顿插值多项式的构造与应用,差商、差分的计算及基本性质。实验内容:编写Lagrange插值法及Newton插值法通用子程序,依据数据表0.320.340.360.3145670.3334870.352274构造一个抛物插值多项式及,计算的近似值并估计误差。实验步骤及程序:1、 Lagrange插值公式算法流程图开始输入xxi,y

2、i,i=0,1,n0y0k1tx-xjxk-xjttj=0,k-1,k+1,ny+tykyk=0?k+1k输出y结束Newton插值公式算法流程图调用函数ChaShang()f=0;temp=0; i=0f=f+tempi<n+1返回i阶差商f调用函数Newton() return=0外层循环因子i=0I阶差商f=ChaShang(i,X,Y)temp=1temp=tremp*x-Xj j:0iresult=result+f*tempi<X.Sie()返回结果resulti=i+1i=i+1<<2、Lagrange插值源程序import java.util.Scanne

3、r;/*拉格朗日插值*/public class Lagrange_interpolation /*拉格朗日插值法*/ private static double Lag_method(double X, double Y, double X0) int m = X.length;int n = X0.length; double Y0 = new doublen; for (int i1 = 0; i1 < n; i1+) /遍历X0 double t = 0; for (int i2 = 0; i2 < m; i2+) /遍历Y double u = 1; for (int i

4、3 = 0; i3 < m; i3+) /遍历X if (i2 != i3) u = u * (X0i1 - Xi3) / (Xi2 - Xi3); u = u * Yi2; t = t + u; Y0i1 = t; return Y0; public static void main(String args) /*输入插值点横纵坐标*/System.out.println("Input number of interpolation point:"); Scanner scan = new Scanner(System.in);int m = scan.nextIn

5、t();System.out.println("Input number of test point:");int n = scan.nextInt(); double X = new doublem; double Y = new doublem; double X0 = new doublen;System.out.println("Input the elements of X:");/已知插值点 for (int i = 0; i < m; i+) Xi = scan.nextDouble(); System.out.println(&qu

6、ot;Input the elements of Y:");/已知插值点的函数值 for (int i = 0; i < m; i+) Yi = scan.nextDouble(); System.out.println("Input the elements of X0:");/需要求的插值点的横坐标标值 for (int i = 0; i < n; i+) X0i = scan.nextDouble(); double Y0 = Lag_method(X, Y, X0);/使用拉格朗日插值法求解得到需求插值点的纵坐标值System.out.prin

7、tln("拉格朗日插值法求解得:"); for (int i = 0; i < n; i+) System.out.println(Y0i + " "); System.out.println(); Newton插值源程序import java.util.Scanner; public class Newton_interpolation /*拷贝向量*/ private static void copy_vector(double from,double to) int k=from.length; int k2=to.length; if(k!

8、=k2) System.out.println("the two vector's length is not equal!"); System.exit(0); for(inti=0;i<k;i+) toi=fromi; /*牛顿插值法*/ private static double Newton_inter_method(double X,double Y,double X0) int m=X.length; int n=X0.length; double Y0=new doublen; double cp_Y=new doublem; for(int i

9、1=0;i1<n;i1+)/遍历X0 double t=0; int j=0; copy_vector(Y, cp_Y); intkk=j; /*求各级均差*/ while(kk<m-1) kk=kk+1; for(int i2=kk;i2<m;i2+) cp_Yi2=(cp_Yi2-cp_Ykk-1)/(Xi2-Xkk-1); /*求插值结果*/ double temp=cp_Y0; for(int i=1;i<=m-1;i+) double u=1; intjj=0; while(jj<i) u*=(X0i1-Xjj); jj+; temp+=cp_Yi*u;

10、 Y0i1=temp; return Y0; public static void main(String args) /*输入插值点横纵坐标*/System.out.println("Input number of interpolation point:"); Scanner scan=new Scanner(System.in); int m=scan.nextInt(); System.out.println("Input number of test point:"); int n=scan.nextInt(); double X=new do

11、ublem; double Y=new doublem; double X0=new doublen; System.out.println("Input the elements of X:");/已知插值点 for(inti=0;i<m;i+) Xi=scan.nextDouble(); System.out.println("Input the elements of Y:");/已知插值点的函数值 for(inti=0;i<m;i+) Yi=scan.nextDouble(); System.out.println("Inp

12、ut the elements of X0:");/需要求的插值点的横坐标标值 for(inti=0;i<n;i+) X0i=scan.nextDouble(); double Y0 =Newton_inter_method(X, Y, X0);/使用拉格朗日插值法求解得到需求插值点的纵坐标值System.out.println("拉格朗日插值法求解得:"); for (int i = 0; i < n; i+) System.out.println(Y0i + " "); System.out.println(); 结果分析与讨论:拉格朗日插值法求解得:0.3303743620375牛顿法解得0.33037436203751、Lagrange插值法和Newton插值法解决实际问题中关于只提供复杂的离散数据的函数求值问题,通过将所考察的函数简单化,构造关于离散数据实际函数f(x)的近似函数P(x),从而可以计算未知点出的函数值,是插值法的基本思路。2、实际上Lagrange插值法和Newton插值法是同一种方法的两种变形,其构造拟合函数的思路是相同的,而实验中两个实际问题用两种算法计算出结果是相同的。3、实验所得结果精确度并不高,一方面是因为所给数据较少,另一方面也是主要方面在Win32中C+中数据类型dou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论