导数,差商,牛顿插值法
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()
看下拟合效果
导数,差商,牛顿插值法相关推荐
- 牛顿插值法 matlab m文件,牛顿插值法matlab程序
<牛顿插值法matlab程序>由会员分享,可在线阅读,更多相关<牛顿插值法matlab程序(3页珍藏版)>请在人人文库网上搜索. 1.计算方法数值实验报告班级090712学号0 ...
- 2021-01-07 matlab数值分析 插值法 拉格朗日插值法 牛顿插值法
matlab数值分析 插值法 1 拉格朗日插值法 function yh=lagrange(x,y,xh) n=length(x); m=length(xh); yh=zeros(1,m); for ...
- 利用均差的牛顿插值法(Newton)
函数f的零阶均差定义为 ,一阶定义均差为: 一般地,函数f 的k阶均差定义为: 或者上面这个式子求的k+1阶均差 利用均差的牛顿插值法多项式为: 简单计算的时候可以观看下面的差商(均差)表: 怎么利用 ...
- Python03 拉格朗日插值法 牛顿插值法(附代码)
1.实验结果 (1)在定义的类中设置已知的函数值列表为: (2)在 test.py 中选择 Lagrange 插值法求解: 输入:需求的 y 值对应的 x 值: 输出:所求函数值: (3)选择 New ...
- 理解插值法(拉格朗日、牛顿插值法)
引言 我们首先理解下插值法主要用来做什么事:插值法就是利用已知的点建立合适的插值函数 f ( x ) f(x) f(x) ,未知点 x i x_i xi 由插值函数 f ( x ) f(x) f(x ...
- 数值分析1_拉格朗日插值法牛顿插值法
实验名称 拉格朗日插值法以及牛顿插值法的实现 实验要求 实现拉格朗日插值 验证随着插值结点的增多插值曲线的变化情况 实现牛顿插值,显示差商结果 比较拉格朗日 ...
- 牛顿插值法法——Java
一.插值条件 f(x)是未知函数,所以用所求的Nn(x)的已知函数代替未知函数求解问题 牛顿插值法要满足的条件:Nn(xi)=F(Xi) 二.牛顿插值法的差值公式 n+1个交点则有, Nn(x)=f( ...
- 【数值分析】拉格朗日插值法与牛顿插值法的C++实现
数值分析--拉格朗日插值法与牛顿插值法的C++实现 文章目录 数值分析--拉格朗日插值法与牛顿插值法的C++实现 一.插值法 1.1 插值法定义 1.2 插值多项式唯一性定理 二.拉格朗日(Lagra ...
- 牛顿法的matlab实现例题,【MATLAB|MATLAB牛顿插值法例题与程序Word版】
『易坊知识库摘要_MATLAB|MATLAB牛顿插值法例题与程序Word版』x12345678y22.523.324.421.7025.228.524.825.4二.数学原理假设有n+1个不同的节点及 ...
最新文章
- poj_2762,弱连通
- 客户需求分析8个维度_CRM准确数据分析,把控客户需求
- 关于Block Formatting Context--BFC和IE的hasLayout
- linux防火墙添加udp 123,centos下的ntp的安装和配置 (注意 防火牆的udp 123要打開,不然會不能用)...
- GinWin命令控制台执行指令
- 使用QT的一些小Tipster
- 浏览器DNS_PROBE_FINISHED_NXDOMAIN报错解决办法
- Linux中同步MySQL
- 【招聘内推】阿里高德地图招聘应用算法专家(P7,含推荐算法方向)
- 项目经理的商务指南系列之二:认识责任(敏捷开发,专家与杂家)
- XmlPullParser文件解析android
- 炮灰模型---------- 对女生选择追求者的数学模型的建立
- Android精品开源项目整理_V20140221(持续更新中..)
- ntsd.exe 附使用教程
- 【ENVI】利用矢量shp数据做裁剪报错及解决办法
- 钢笔墨水能否代替打印机墨水_喷墨打印机该用染料墨水还是颜料墨水,有什么区别,你会选吗?...
- 神经网络机器翻译技术
- 乐山市计算机学校灵异事件,真人真事:我们学校那些灵异的事情(西南交通大学灵异事件)...
- python_1_初识python
- 图片批量重命名方法(超详细 无需辅助软件 本地运行)