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代码实现相关推荐

  1. 线性插值法的原理和python代码实现

    假设我们已知坐标 (x0, y0) 与 (x1, y1),要得到 [x0, x1] 区间内某一位置 x 在直线上的值.根据图中所示,我们得到 由于 x 值已知,所以可以从公式得到 y 的值 已知 y  ...

  2. 单链表反转的原理和python代码实现

    链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...

  3. 【图像处理】——图像质量评价指标信噪比(PSNR)和结构相似性(SSIM)(含原理和Python代码)

    目录 一.信噪比(PSNR) 1.信噪比的原理与计算公式 2.Python常规代码实现PSNR计算 3.TensorFlow实现PSNR计算 4.skimage实现PSNR计算 5.三种方法计算的结果 ...

  4. DS1320原理和C51代码实现解读

    DS1320原理和C51代码实现解读 DS封装 引脚介绍 VCC2 V_{CC2}为主电源, VCC1 V_{CC1}为备用电源,当 VCC2 V_{CC2}> VCC1 V_{CC1} + 0 ...

  5. 机器学习笔记——2 简单线性模型及局部加权线性模型的基本原理和python实现(参数估计的两个基本角度:几何直观和概率直观。函数最值问题的两大基本算法:梯度方法与迭代方法)

    简单线性模型及局部加权线性模型的基本原理和python实现(参数估计的两个基本角度:几何直观和概率直观.函数最值问题的两大基本算法:梯度方法与迭代方法) 线性模型是什么? 线性模型是监督学习的各类学习 ...

  6. 浪漫的python代码_七夕,最浪漫的Python代码送给陷入爱河的Python男同胞

    七夕,最浪漫的Python代码送给陷入爱河的Python男同胞 image.gif ​ 三句话情书,我们听过.如何用python写一段浪漫的代码?可以是简短有韵味的情书式, 也欢迎冗长而效果拔群的万行 ...

  7. java怎么调用python_如何在Java中调用Python代码

    Jython(原JPython),是一个用2113Java语言写的Python解释5261器.在没有第三方模块的情况下4102,通常选择利用Jython来调用1653Python代码,它是一个开源的J ...

  8. 安卓如何运行python_如何在android上运行Python代码?

    这个非常简单,Termux和QPython3这2个安卓APP就可以,都集成了Python解释器,可以直接编辑运行Python代码,下面我简单介绍一下: Termux 这是一个安卓高级终端APP,类似于 ...

  9. 新闻采集系统python_抓取网易新闻的python代码示例

    这篇文章主要介绍了Python正则抓取网易新闻的方法,结合实例形式较为详细的分析了Python使用正则进行网易新闻抓取操作的相关实现技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python正则 ...

最新文章

  1. (线段树)Just a Hook -- hdu -- 1689
  2. Django从理论到实战(part23)--模板继承
  3. Cloud for Customer UI toolbar里按钮的渲染逻辑
  4. php中 和 的优先级,理解php中的运算符优先级
  5. [POJ1961 Period]
  6. LCP 19. 秋叶收藏集
  7. FTP服务器FileZilla Server配置及使用方法
  8. phython基础之数据类型和变量
  9. 百分点感知智能实验室:声纹识别技术发展及未来趋势研究
  10. iOS开发:获取WiFi名称(解决iOS12.0以上系统不能正常获取WiFi名称的方法)
  11. 上海海大计算机科学,上海海洋计算机科学拟录取名单平台
  12. md5加密md5解密
  13. 阿里云,华为云哪个更好?
  14. 贾扬清:我对人工智能方向的一点浅见 1
  15. Vue-cli构建步骤
  16. Chrome的下载与安装使用-Windows64位系统(2)【图文并茂的小白级教程】
  17. 2021年最有前途的10种编程语言
  18. zabbix监控网络设备
  19. 银行SWIFT/BIC编码介绍
  20. 数据压缩作业:png图像格式分析

热门文章

  1. Day 32 淘宝网店+斐波那契凤尾
  2. python数组冒泡排序法_python 冒泡排序法
  3. vuedraggable拖拽组件布局一个列表上下左右拖动
  4. 性能测试、压力测试与负载测试的区别
  5. JAVA毕设项目建材公司管理系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  6. 前端——HTML(全)
  7. 卡尔曼滤波-数据融合
  8. Time Reversal Resonating Strength
  9. 新电脑不显示文件后缀名/文件扩展名
  10. 【UE4 shader】扰动水流Shader