收藏 分销(赏)

Lagrange插值及Newton插值.doc

上传人:精*** 文档编号:1630208 上传时间:2024-05-06 格式:DOC 页数:10 大小:182KB 下载积分:8 金币
下载 相关 举报
Lagrange插值及Newton插值.doc_第1页
第1页 / 共10页
Lagrange插值及Newton插值.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
实验报告 实验项目 插值法 实验日期 2016/9/30 理论内容 Lagrange插值与Newton插值 授课日期 实验室名称 文理管203 微机编号 E1 实验目的及要求: 1、了解多项式差值公式的存在唯一性条件及其余项表达式的推导。 2、了解拉格朗日插值多项式的构造、计算及其基函数的特点,牛顿插值多项式的构造与应用,差商、差分的计算及基本性质。 实验内容: 编写Lagrange插值法及Newton插值法通用子程序,依据数据表 0.32 0.34 0.36 0.314567 0.333487 0.352274 构造一个抛物插值多项式及,计算的近似值并估计误差。 实验步骤及程序: 1、 Lagrange插值公式算法流程图 开始 输入 输出y 结束 Newton插值公式算法流程图 调用函数ChaShang() 返回i阶差商f 调用函数Newton() I阶差商f=ChaShang(i,X,Y) temp=1 i<X.Sie() 返回结果result 2、Lagrange插值源程序 import java.util.Scanner; /*拉格朗日插值*/ 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 double[n]; for (int i1 = 0; i1 < n; i1++) {//遍历X0 double t = 0; for (int i2 = 0; i2 < m; i2++) {//遍历Y double u = 1; for (int i3 = 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; } 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 double[m]; double Y[] = new double[m]; double X0[] = new double[n]; System.out.println("Input the elements of X:");//已知插值点 for (int i = 0; i < m; i++) { X[i] = scan.nextDouble(); } System.out.println("Input the elements of Y:");//已知插值点的函数值 for (int i = 0; i < m; i++) { Y[i] = scan.nextDouble(); } System.out.println("Input the elements of X0:");//需要求的插值点的横坐标标值 for (int i = 0; i < n; i++) { X0[i] = scan.nextDouble(); } double Y0[] = Lag_method(X, Y, X0);//使用拉格朗日插值法求解得到需求插值点的纵坐标值 System.out.println("拉格朗日插值法求解得:"); for (int i = 0; i < n; i++) { System.out.println(Y0[i] + " "); } 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!=k2){ System.out.println("the two vector's length is not equal!"); System.exit(0); } for(inti=0;i<k;i++){ to[i]=from[i]; } } /*牛顿插值法*/ private static double[] Newton_inter_method(double[] X,double[] Y,double X0[]){ int m=X.length; int n=X0.length; double[] Y0=new double[n]; double[] cp_Y=new double[m]; for(int i1=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_Y[i2]=(cp_Y[i2]-cp_Y[kk-1])/(X[i2]-X[kk-1]); } } /*求插值结果*/ double temp=cp_Y[0]; for(int i=1;i<=m-1;i++){ double u=1; intjj=0; while(jj<i){ u*=(X0[i1]-X[jj]); jj++; } temp+=cp_Y[i]*u; } Y0[i1]=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 double[m]; double Y[]=new double[m]; double X0[]=new double[n]; System.out.println("Input the elements of X:");//已知插值点 for(inti=0;i<m;i++){ X[i]=scan.nextDouble(); } System.out.println("Input the elements of Y:");//已知插值点的函数值 for(inti=0;i<m;i++){ Y[i]=scan.nextDouble(); } System.out.println("Input the elements of X0:");//需要求的插值点的横坐标标值 for(inti=0;i<n;i++){ X0[i]=scan.nextDouble(); } double Y0[] =Newton_inter_method(X, Y, X0);//使用拉格朗日插值法求解得到需求插值点的纵坐标值 System.out.println("拉格朗日插值法求解得:"); for (int i = 0; i < n; 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 【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】 最新范本,供参考!
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服