这篇接着上一篇,对牛顿基本插值多项式的理解与代码实现

在拉格朗日插值法中,

一般插值公式为:

其中的每次计算都依赖于全部的插值结点,在增加或减少结点时,必须全部重新计算。(不是特别理解)为了克服这个缺点从而引入了牛顿插值法。

牛顿基本插值多项式的一般公式为:

其中定义:

为零阶差商

为一阶差商

为二阶差商

以此类推。。。

另有公式:

在编程实现的过程中就需要考虑,怎么计算

可分为定义法和公式法。

  • 定义法:基本思路便是先算出一阶差商,然后算出二阶差商,。。。

这样设计必然需要设定一个数组用于存储中间

  • 公式法:利用公式直接计算得到

这样设计的后果很明显,在公式中会有大量乘法运算,速度会比较慢。


下面是代码阶段:

在代码中用quotient_array用于存储所有差商,

quotient_list用于存储从x0开始的差商。

#include<iostream>
#define maxsize 100
using namespace std;
double quotient_array[maxsize][maxsize];
void D_creat_quotient_list(int n,double x[maxsize],double y[maxsize],double quotient_list[maxsize])
{//构造差商表//定义法 占空间但是省时间for(int k=0;k<n;k++){for(int i=0;i<n-k;i++){if(k==0){quotient_array[i][0]=y[i];}else{quotient_array[i][k]=(quotient_array[i+1][k-1]-quotient_array[i][k-1])/(x[i+k]-x[i]);}}quotient_list[k]=quotient_array[0][k];}
}
void F_creat_quotient_list(int n,double x[maxsize],double y[maxsize],double quotient_list[maxsize])
{//构造差商表//公式法 省空间 但是费时间quotient_list[0]=y[0];double temp;for(int k=1;k<n;k++){quotient_list[k]=0;for(int j=0;j<=k;j++){temp = 1;for(int i=0;i<=k;i++){if(i!=j){temp*=(x[j]-x[i]);}}temp = y[j]/temp;quotient_list[k]+=temp ;}}
}double F_interpolitation(int n,double x[maxsize],double y[maxsize],double vx,double result,double quotient_list[maxsize])
{//差商牛顿插值法//两种方法二选一D_creat_quotient_list(n,x,y,quotient_list);//定义法//F_creat_quotient_list(n,x,y,quotient_list);//公式法double temp;result = quotient_list[0];for(int k=1;k<=n;k++){temp=1;for(int i=0;i<k;i++){temp*=(vx-x[i]);}result+=quotient_list[k]*temp;}return result;
}
int main()
{int n;double x[maxsize],y[maxsize],result=0,vx,temp;double quotient_list[maxsize];cin>>n>>vx;for(int i=0;i<n;i++){cin >> x[i] >> y[i];}result=F_interpolitation(n,x,y,vx,result,quotient_list);cout<<result<<endl;return 0;
}

测试样例:

参考:

x 100 121 144 169
10 11 12 13

分别用定义法和公式法求的值

定义法:

4
115
100 10
121 11
144 12
169 13


公式法:

4
115
100 10
121 11
144 12
169 13

对比也可以看出速度上是有差距的,一般都用定义法求值。

其中两个函数得到的quotient_list的值相同。

quotient_list 10 0.047619 -0.00009411 0.0000003138

牛顿差商多项式的理解与C++实现相关推荐

  1. 多项式插值与牛顿差商

    一.定义 那么多项式插值(牛顿差商公式)被形式化描述为: 其中 二.例子 对于三个点的多项式插值问题,我们可以通过以上的定义计算得到牛顿差商公式的各个系数(红色横线的标记)如下: 再详细点: 那么,得 ...

  2. 插值MATLAB实现(牛顿差商、插值误差、龙格现象、切比雪夫插值)

    牛顿差商 function [c,y] = newtondd(a,b,x) n=length(a); for i=1:nv(i,1)=b(i); end for j=2:nfor i=1:n-j+1v ...

  3. python牛顿迭代公式_python计算牛顿迭代多项式实例分析

    本文实例讲述了python计算牛顿迭代多项式的方法.分享给大家供大家参考.具体实现方法如下: ''' p = evalPoly(a,xData,x). Evaluates Newton's polyn ...

  4. python 计算牛顿差商,计算并化简牛顿插值多项式

    1. 程序 1.1 导入库 import numpy as np import sympy as sy 1.2 函数 def NewtonInt(x_value, y_value):"&qu ...

  5. 数学建模准备 插值(拉格朗日多项式插值,牛顿多项式插值,分段线性插值,分段三次样条插值,分段三次Hermite插值)

    文章目录 摘要(必看) 0 基础概念 什么是插值 插值用途 什么是拟合 插值和拟合的相同点 插值和拟合的不同点 1 常用的基本插值方法 1.1 多项式插值法 1.1.1 拉格朗日多项式插值法 多项式插 ...

  6. python计算差商_Python实现牛顿插值法(差商表)

    def func(x,y,X,infor=True): list2=[y[0]] # 差商表的对角线的第一个元素始终是y0 count=1 while(True): if len(y)>1: l ...

  7. 利用均差的牛顿插值法(Newton)

    函数f的零阶均差定义为 ,一阶定义均差为: 一般地,函数f 的k阶均差定义为: 或者上面这个式子求的k+1阶均差 利用均差的牛顿插值法多项式为: 简单计算的时候可以观看下面的差商(均差)表: 怎么利用 ...

  8. [模板]多项式全家桶小记(求逆,开根,ln,exp)

    前言 这里的全家桶目前只包括了ln,exp,sqrtln,exp,sqrtln,exp,sqrt.还有一些类似于带余数模,快速幂之类用的比较少的有时间再更,NTTNTTNTT这种前置知识这里不多说. ...

  9. 多项式:从什么都不知道到门都没入

    多项式 单项式:由数字和字母组成的积的代数式称为单项式 多项式:由若干个单项式相加组成的代数式叫做多项式 (废话,这上过初中的人都知道) 一.一元多项式 设\(n\in N^*\),则我们称多项式 \ ...

最新文章

  1. 企业云桌面-07-安装虚拟机-001-Win701
  2. java 注册忘记密码操作_Java实战项目(1):swing图书管理系统的登录,注册,找回密码,增删查,个人解析等...
  3. 彻底掌握Linux文件与目录管理命令?进来看看硬核总结
  4. PS教程第八课:新建文件
  5. 9.关于Unicode字符集
  6. JAVA 简单综合题目 小型公司职工对象
  7. 力扣—— 224. 基本计算器(困难)
  8. canvas学习笔记-贝塞尔曲线
  9. 5个界面效果很炫的JavaScript UI框架
  10. 手机安装python模块吗_1-Python-非root用户安装Python及Python模块
  11. 关于lisp的一些资源
  12. 直播预告 | 端云协同的淘宝机器学习系统
  13. PTA习题-python 7-4 多个数的最小公倍数
  14. 2022圣诞节用canvas实现流星雨
  15. DDR4的特性与电气参数
  16. 人际关系三维理论(转载)
  17. 脉冲编码器的工作原理
  18. MySQL 中事务的实现原理全解析
  19. 微信小程序实战 (WXSS:小程序版CSS、WXS:小程序版JavaScript)
  20. 10款超赞的Android智能车机软件

热门文章

  1. matlab:导入txt数据
  2. linux与 win上装pyhive
  3. 2017711010137 赵栋 《面向对象程序设计》第四章学习总结
  4. ESP8266桌面气象站
  5. SEO必备:搜索引擎优化技巧
  6. bert中文情感分析二分类任务详解
  7. HAProxy入门(一)
  8. 奇异值分解(SVD)方法求解最小二乘问题
  9. 2020年起重机司机(限门式起重机)多少分及格及起重机司机(限门式起重机)考试内容
  10. 【数据库】 MySQL备份恢复