1 差商的定义

设有函数f (x)以及自变量的一系列互不相等的的值 f(xi),称

f (x)在点处的一阶差商,并记作。又称

f (x)在点处的二阶差商;称:

f (x)在点处的n阶差商。

2 牛顿插值法的推导

有了差商的定义,就很容易推出牛顿插值的公式。

根据均差定义 , 把 x 看成[ a, b] 上一点 , 可得
,

把后一式代入前一式,得到:

3 牛顿插值法的代码实现

由牛顿插值法的公式知道,要实现牛顿插值,关键是要实现各阶差商的计算;而要计算差商,首先需要计算一阶差商,然后用一阶差商计算二阶差商,用二阶差商计算三阶差商...

"""
@brief: 获得牛顿插值函数(非递归实现)
@
"""
def get_Newton_inter_Ex(xi=[], fi=[]):def Newton_inter(x):ai = fi.copy()#计算k阶系数,即计算k阶差商,从第一阶开始计算for k in range(1, len(xi)-1):for j in range(len(xi)-1,k-1,-1):ai[j] = (ai[j]-ai[j-1]) /(xi[j]-xi[j-k])result = ai[0]h = 1.0for j in range(1,len(xi)-1):h *= (x-xi[j-1])result += ai[j] * hreturn resultreturn Newton_inter

然后看下完整的代码,通过牛顿插值拟合函数:

# -*- coding: utf-8 -*-
"""
Created on Thu Nov 17 18:34:21 2016@author: idwtwt
@brief: 牛顿插值法
"""
import numpy as np
import matplotlib.pyplot as plt"""
@brief: 获得牛顿插值函数(非递归实现)
@
"""
def get_Newton_inter_Ex(xi=[], fi=[]):def Newton_inter(x):ai = fi.copy()#计算k阶系数,即计算k阶差商for k in range(1, len(xi)-1):for j in range(len(xi)-1,k-1,-1):ai[j] = (ai[j]-ai[j-1]) /(xi[j]-xi[j-k])result = ai[0]h = 1.0for j in range(1,len(xi)-1):h *= (x-xi[j-1])result += ai[j] * hreturn resultreturn Newton_inter"""
demo:
"""
if __name__ == '__main__':''' 插值节点, 这里用二次函数生成插值节点,每两个节点x轴距离位10 '''sr_x = np.linspace(-50, 50, 12)sr_fx = [1/(1+i**2) for i in sr_x]Nx = get_Newton_inter_Ex(sr_x, sr_fx)  # 获得插值函数tmp_x = [i for i in range(-50, 51)]  # 测试用例tmp_y = [Nx(i) for i in tmp_x]  # 根据插值函数获得测试用例的纵坐标''' 画图 '''plt.figure("Newton")ax1 = plt.subplot(111)plt.sca(ax1)plt.plot(sr_x, sr_fx, linestyle='', marker='o', color='b')plt.plot(tmp_x, tmp_y, linestyle='--', color='r')plt.show()

看下拟合效果

导数,差商,牛顿插值法相关推荐

  1. 牛顿插值法 matlab m文件,牛顿插值法matlab程序

    <牛顿插值法matlab程序>由会员分享,可在线阅读,更多相关<牛顿插值法matlab程序(3页珍藏版)>请在人人文库网上搜索. 1.计算方法数值实验报告班级090712学号0 ...

  2. 2021-01-07 matlab数值分析  插值法 拉格朗日插值法 牛顿插值法

    matlab数值分析  插值法 1 拉格朗日插值法 function yh=lagrange(x,y,xh) n=length(x); m=length(xh); yh=zeros(1,m); for ...

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

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

  4. Python03 拉格朗日插值法 牛顿插值法(附代码)

    1.实验结果 (1)在定义的类中设置已知的函数值列表为: (2)在 test.py 中选择 Lagrange 插值法求解: 输入:需求的 y 值对应的 x 值: 输出:所求函数值: (3)选择 New ...

  5. 理解插值法(拉格朗日、牛顿插值法)

    引言 我们首先理解下插值法主要用来做什么事:插值法就是利用已知的点建立合适的插值函数 f ( x ) f(x) f(x) ,未知点 x i x_i xi​ 由插值函数 f ( x ) f(x) f(x ...

  6. 数值分析1_拉格朗日插值法牛顿插值法

    实验名称 拉格朗日插值法以及牛顿插值法的实现 实验要求 实现拉格朗日插值        验证随着插值结点的增多插值曲线的变化情况        实现牛顿插值,显示差商结果         比较拉格朗日 ...

  7. 牛顿插值法法——Java

    一.插值条件 f(x)是未知函数,所以用所求的Nn(x)的已知函数代替未知函数求解问题 牛顿插值法要满足的条件:Nn(xi)=F(Xi) 二.牛顿插值法的差值公式 n+1个交点则有, Nn(x)=f( ...

  8. 【数值分析】拉格朗日插值法与牛顿插值法的C++实现

    数值分析--拉格朗日插值法与牛顿插值法的C++实现 文章目录 数值分析--拉格朗日插值法与牛顿插值法的C++实现 一.插值法 1.1 插值法定义 1.2 插值多项式唯一性定理 二.拉格朗日(Lagra ...

  9. 牛顿法的matlab实现例题,【MATLAB|MATLAB牛顿插值法例题与程序Word版】

    『易坊知识库摘要_MATLAB|MATLAB牛顿插值法例题与程序Word版』x12345678y22.523.324.421.7025.228.524.825.4二.数学原理假设有n+1个不同的节点及 ...

最新文章

  1. poj_2762,弱连通
  2. 客户需求分析8个维度_CRM准确数据分析,把控客户需求
  3. 关于Block Formatting Context--BFC和IE的hasLayout
  4. linux防火墙添加udp 123,centos下的ntp的安装和配置 (注意 防火牆的udp 123要打開,不然會不能用)...
  5. GinWin命令控制台执行指令
  6. 使用QT的一些小Tipster
  7. 浏览器DNS_PROBE_FINISHED_NXDOMAIN报错解决办法
  8. Linux中同步MySQL
  9. 【招聘内推】阿里高德地图招聘应用算法专家(P7,含推荐算法方向)
  10. 项目经理的商务指南系列之二:认识责任(敏捷开发,专家与杂家)
  11. XmlPullParser文件解析android
  12. ‍炮灰模型---------- 对女生选择追求者的数学模型的建立
  13. Android精品开源项目整理_V20140221(持续更新中..)
  14. ntsd.exe 附使用教程
  15. 【ENVI】利用矢量shp数据做裁剪报错及解决办法
  16. 钢笔墨水能否代替打印机墨水_喷墨打印机该用染料墨水还是颜料墨水,有什么区别,你会选吗?...
  17. 神经网络机器翻译技术
  18. 乐山市计算机学校灵异事件,真人真事:我们学校那些灵异的事情(西南交通大学灵异事件)...
  19. python_1_初识python
  20. 图片批量重命名方法(超详细 无需辅助软件 本地运行)

热门文章

  1. 实时语音如何过质量关?
  2. MOSFET与MOSFET驱动电路原理及应用
  3. Unity3D VideoPlayer播放视频和音频
  4. 测试开发常问面试题整理-----网络篇
  5. 二叉树的后序非递归遍历(巧妙思想)
  6. Perameter estimation for text analyse (下)
  7. etcd (一看就会)
  8. pygame教程实例(四)小球弹跳(事件)
  9. 模拟电路设计(7)--- 增强型MOSFET
  10. 解决Oracle服务端1521端口无法telnet,服务名未开启监听问题