设为首页 加入收藏

TOP

插值法:拉格朗日、牛顿插值(二)
2013-07-22 18:17:16 来源: 作者: 【 】 浏览:310
Tags:拉格朗 牛顿插

 

  double ChaShang(int n,vector&X,vector&Y){

  double f=0;

  double temp=0;

  for(int i=0;i

  temp=Y[i];

  for(int j=0;j

  if(i!=j) temp /= (X[i]-X[j]);

  f += temp;

  }

  return f;

  }

  double Newton(double x,vector&X,vector &Y){

  double result=0;

  for(int i=0;i

  double temp=1;

  double f=ChaShang(i,X,Y);

  for(int j=0;j

  temp = temp*(x-X[j]);

  }

  result += f*temp;

  }

  return result;

  }

  实验过程原始记录

  给定函数四个点的数据如下:

  试用拉格朗日插值确定函数在x=2.101,4.234处的函数值。

  运行得到结果:

  已知用牛顿插值公式求的近似值。

  运行程序得到结果: 2.26667

  实验分析

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

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

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

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

          

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何只特化类的一个成员函数 下一篇VC各种链接错的解决办法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: