线性插值的代码python_线性插值法的原理和python代码实现
importmatplotlib.pyplot as plt"""@brief: 计算n阶差商 f[x0, x1, x2 ... xn]
@param: xi 所有插值节点的横坐标集合 o
@param: fi 所有插值节点的纵坐标集合 / \
@return: 返回xi的i阶差商(i为xi长度减1) o o
@notice: a. 必须确保xi与fi长度相等 / \ / \
b. 由于用到了递归,所以留意不要爆栈了. o o o o
c. 递归减递归(每层递归包含两个递归函数), 每层递归次数呈二次幂增长,总次数是一个满二叉树的所有节点数量(所以极易栈溢出)"""
def get_order_diff_quot(xi = [], fi =[]):if len(xi) > 2 and len(fi) > 2:return (get_order_diff_quot(xi[:len(xi) - 1], fi[:len(fi) - 1]) - get_order_diff_quot(xi[1:len(xi)], fi[1:len(fi)])) / float(xi[0] - xi[-1])return (fi[0] - fi[1]) / float(xi[0] - xi[1])"""@brief: 获得Wi(x)函数;
Wi的含义举例 W1 = (x - x0); W2 = (x - x0)(x - x1); W3 = (x - x0)(x - x1)(x - x2)
@param: i i阶(i次多项式)
@param: xi 所有插值节点的横坐标集合
@return: 返回Wi(x)函数"""
def get_Wi(i = 0, xi =[]):defWi(x):
result= 1.0
for each inrange(i):
result*= (x -xi[each])returnresultreturnWi"""@brief: 获得牛顿插值函数
@"""
def get_Newton_inter(xi = [], fi =[]):defNewton_inter(x):
result=fi[0]for i in range(2, len(xi)):
result+= (get_order_diff_quot(xi[:i], fi[:i]) * get_Wi(i-1, xi)(x))returnresultreturnNewton_inter"""demo:"""
if __name__ == '__main__':'''插值节点, 这里用二次函数生成插值节点,每两个节点x轴距离位10'''sr_x= [i for i in range(-50, 51, 10)]
sr_fx= [i**2 for i insr_x]
Nx= get_Newton_inter(sr_x, sr_fx) #获得插值函数
tmp_x= [i for i in range(-50, 51)] #测试用例
tmp_y = [Nx(i) for i in tmp_x] #根据插值函数获得测试用例的纵坐标
'''画图'''plt.figure("I love china")
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()~
~
"linear_test.py" 81L, 2764C written 45,5 Bot
线性插值的代码python_线性插值法的原理和python代码实现相关推荐
- 线性插值法的原理和python代码实现
假设我们已知坐标 (x0, y0) 与 (x1, y1),要得到 [x0, x1] 区间内某一位置 x 在直线上的值.根据图中所示,我们得到 由于 x 值已知,所以可以从公式得到 y 的值 已知 y ...
- 单链表反转的原理和python代码实现
链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...
- 【图像处理】——图像质量评价指标信噪比(PSNR)和结构相似性(SSIM)(含原理和Python代码)
目录 一.信噪比(PSNR) 1.信噪比的原理与计算公式 2.Python常规代码实现PSNR计算 3.TensorFlow实现PSNR计算 4.skimage实现PSNR计算 5.三种方法计算的结果 ...
- DS1320原理和C51代码实现解读
DS1320原理和C51代码实现解读 DS封装 引脚介绍 VCC2 V_{CC2}为主电源, VCC1 V_{CC1}为备用电源,当 VCC2 V_{CC2}> VCC1 V_{CC1} + 0 ...
- 机器学习笔记——2 简单线性模型及局部加权线性模型的基本原理和python实现(参数估计的两个基本角度:几何直观和概率直观。函数最值问题的两大基本算法:梯度方法与迭代方法)
简单线性模型及局部加权线性模型的基本原理和python实现(参数估计的两个基本角度:几何直观和概率直观.函数最值问题的两大基本算法:梯度方法与迭代方法) 线性模型是什么? 线性模型是监督学习的各类学习 ...
- 浪漫的python代码_七夕,最浪漫的Python代码送给陷入爱河的Python男同胞
七夕,最浪漫的Python代码送给陷入爱河的Python男同胞 image.gif 三句话情书,我们听过.如何用python写一段浪漫的代码?可以是简短有韵味的情书式, 也欢迎冗长而效果拔群的万行 ...
- java怎么调用python_如何在Java中调用Python代码
Jython(原JPython),是一个用2113Java语言写的Python解释5261器.在没有第三方模块的情况下4102,通常选择利用Jython来调用1653Python代码,它是一个开源的J ...
- 安卓如何运行python_如何在android上运行Python代码?
这个非常简单,Termux和QPython3这2个安卓APP就可以,都集成了Python解释器,可以直接编辑运行Python代码,下面我简单介绍一下: Termux 这是一个安卓高级终端APP,类似于 ...
- 新闻采集系统python_抓取网易新闻的python代码示例
这篇文章主要介绍了Python正则抓取网易新闻的方法,结合实例形式较为详细的分析了Python使用正则进行网易新闻抓取操作的相关实现技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python正则 ...
最新文章
- (线段树)Just a Hook -- hdu -- 1689
- Django从理论到实战(part23)--模板继承
- Cloud for Customer UI toolbar里按钮的渲染逻辑
- php中 和 的优先级,理解php中的运算符优先级
- [POJ1961 Period]
- LCP 19. 秋叶收藏集
- FTP服务器FileZilla Server配置及使用方法
- phython基础之数据类型和变量
- 百分点感知智能实验室:声纹识别技术发展及未来趋势研究
- iOS开发:获取WiFi名称(解决iOS12.0以上系统不能正常获取WiFi名称的方法)
- 上海海大计算机科学,上海海洋计算机科学拟录取名单平台
- md5加密md5解密
- 阿里云,华为云哪个更好?
- 贾扬清:我对人工智能方向的一点浅见 1
- Vue-cli构建步骤
- Chrome的下载与安装使用-Windows64位系统(2)【图文并茂的小白级教程】
- 2021年最有前途的10种编程语言
- zabbix监控网络设备
- 银行SWIFT/BIC编码介绍
- 数据压缩作业:png图像格式分析