目录

  • 1、原理
  • 2、涉及的Python库
  • 3、例子

1、原理

对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:
L(x)=∑j=0kyjℓj(x)L(x)=\sum_{j=0}^{k} y_{j} \ell_{j}(x) L(x)=j=0∑k​yj​ℓj​(x)
其中每个ℓj(x)\ell_{j}(x)ℓj​(x)为拉格朗日基本多项式(或称插值基函数),其表达式为:
ℓj(x)=∏i=0,i≠jkx−xixj−xi=(x−x0)(xj−x0)⋯(x−xj−1)(xj−xj−1)(x−xj+1)(xj−xj+1)⋯(x−xk)(xj−xk)\ell_{j}(x)=\prod_{i=0, i \neq j}^{k} \frac{x-x_{i}}{x_{j}-x_{i}}=\frac{\left(x-x_{0}\right)}{\left(x_{j}-x_{0}\right)} \cdots \frac{\left(x-x_{j-1}\right)}{\left(x_{j}-x_{j-1}\right)} \frac{\left(x-x_{j+1}\right)}{\left(x_{j}-x_{j+1}\right)} \cdots \frac{\left(x-x_{k}\right)}{\left(x_{j}-x_{k}\right)} ℓj​(x)=i=0,i​=j∏k​xj​−xi​x−xi​​=(xj​−x0​)(x−x0​)​⋯(xj​−xj−1​)(x−xj−1​)​(xj​−xj+1​)(x−xj+1​)​⋯(xj​−xk​)(x−xk​)​
例如:当k=3时,上面的公式变为:
f(x)=(x−x1)(x−x2)(x−x3)(x0−x1)(x0−x2)(x0−x3)y0+(x−x0)(x−x2)(x−x3)(x1−x0)(x1−x2)(x1−x3)y1+(x−x0)(x−x1)(x−x3)(x2−x0)(x2−x1)(x2−x3)y2+(x−x0)(x−x1)(x−x2)(x3−x0)(x3−x1)(x3−x2)y3f(x)=\frac{\left(x-x_{1}\right)\left(x-x_{2}\right)\left(x-x_{3}\right)}{\left(x_{0}-x_{1}\right)\left(x_{0}-x_{2}\right)\left(x_{0}-x_{3}\right)} y_{0}+\frac{\left(x-x_{0}\right)\left(x-x_{2}\right)\left(x-x_{3}\right)}{\left(x_{1}-x_{0}\right)\left(x_{1}-x_{2}\right)\left(x_{1}-x_{3}\right)} y_{1}+\frac{\left(x-x_{0}\right)\left(x-x_{1}\right)\left(x-x_{3}\right)}{\left(x_{2}-x_{0}\right)\left(x_{2}-x_{1}\right)\left(x_{2}-x_{3}\right)} y_{2}+\frac{\left(x-x_{0}\right)\left(x-x_{1}\right)\left(x-x_{2}\right)}{\left(x_{3}-x_{0}\right)\left(x_{3}-x_{1}\right)\left(x_{3}-x_{2}\right)} y_{3} f(x)=(x0​−x1​)(x0​−x2​)(x0​−x3​)(x−x1​)(x−x2​)(x−x3​)​y0​+(x1​−x0​)(x1​−x2​)(x1​−x3​)(x−x0​)(x−x2​)(x−x3​)​y1​+(x2​−x0​)(x2​−x1​)(x2​−x3​)(x−x0​)(x−x1​)(x−x3​)​y2​+(x3​−x0​)(x3​−x1​)(x3​−x2​)(x−x0​)(x−x1​)(x−x2​)​y3​

2、涉及的Python库

主要依赖于scipy

from scipy.interplotate import lagrange

直接调用lagrange(x,y)这个函数即可,返回 一个对象。参数x,y分别是对应各个点的x值和y值:例如

(1,2) (3,5) (5,9)这三个点的x,y分别是: x =[1,3,5]y =[2, 5, 9]
a = lagrange(x,y),直接输出该对象,就能看到插值的函数。

利用该对象,能得到很多特性。具体参见:https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.poly1d.html+https://docs.scipy.org/doc/scipy-1.0.0/reference/generated/scipy.interpolate.lagrange.html

继续上面的例子:

  • a.order得到阶
  • a[]得到系数
  • a()得到对应函数值
  • 此外可以对其进行加减乘除运算

3、例子

from scipy.interpolate import lagrange
x=[1,2,3,4,7]
y=[5,7,10,3,9]
a=lagrange(x,y)
print('插值函数\n',a)
print('\n==============================\n插值函数的阶数',a.order)
print('\n==============================\nx=1对应函数y值{},\nx=2对应函数y值{},\nx=3对应函数y值{}'.format(a(1),a(2),a(3)))
print('\n==============================\n常数项系数{},\n二阶项系数{},\n三阶项系数{}'.format(a[0],a[2],a[3]))


尝试同时输出多个y值

x=[1,2,3,4,7]
a(x)

参考:
http://liao.cpython.org/scipy11/

拉格朗日插值法python实现相关推荐

  1. 解读 拉格朗日插值法python,保你学明白

    文章目录 概述拉格朗日插值法 什么是插值法 拉格朗日插值法的原理 拉格朗日公式 拉格朗日插值法的代码实现 Python 进行拉格朗日插值的主要知识点 Polyfit 函数 Polyval 函数 Lin ...

  2. 拉格朗日插值法+python实现

    拉格朗日插值法 1.数学原理 1.1 线性插值 1.2二次插值 1.3 n次拉格朗日插值多项式 2.Python实现 本文将介绍拉格朗日插值法得数学原理,并用Python实现. 1.数学原理 首先我们 ...

  3. 缺失值处理 - 拉格朗日插值法 - Python代码

    目录 缺失值处理 拉格朗日差值法的理论基础 拉格朗日插值法代码实现 其他数据预处理方法 缺失值处理 处理缺失值常用的办法可分为三类:删除记录.数据插补.不处理. 其中常见的数据插补法有: 如果通过删除 ...

  4. 拉格朗日插值法--python

    数据分析 数据清洗:缺失值处理.1删除记录 2数据插补 3不处理 数据 链接:https://pan.baidu.com/s/1jiIOoselsqVQR4P_EaS3pA 提取码:t970 常见插补 ...

  5. 拉格朗日插值法——python代码实现

    一.拉格朗日的基本思想: 二.线性插值 三.多个点 四.代码实现 def lagrange(xx,y):l=len(y)l_n = 0for k in range(l):xxx=xx.copy()x_ ...

  6. 拉格朗日插值法《python数据分析与挖掘实践》

    数据清洗 数据清洗主要是删除原始数据集中地无关数据.重复数据.平滑噪声数据,筛选掉与挖掘主题无关的数据,处理缺失值.异常值等. 缺失值处理的方法可分为3类:删除记录.数据插补和不处理. 删除含有缺失值 ...

  7. 拉格朗日插值法 【python】

    一.插值 设函数y=f(x)在区间[a,b]上连续,给定n+1个点 a≤x0<x1<....<xn≤b 已知,f(xk)=yk(k=0,1....n),在函数类P中寻找一个函数Φ(x ...

  8. python拉格朗日插值法_Python实现的拉格朗日插值法示例

    本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...

  9. 拉格朗日插值python代码_Python实现的拉格朗日插值法示例

    本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...

最新文章

  1. 这样的独处,能让你变得越来越优秀
  2. 分别打印三位整数的个位、十位、百位
  3. Windows 8 图标前面的勾选
  4. Python的pycurl库升级升级失败的解决方法
  5. OPA 7 - opaTest
  6. scrapy.spider
  7. 模糊查询是如何进行实现的_模糊查找,不是近似查找!在Excel中应该如何进行模糊匹配...
  8. java 抽奖算法_Java实现游戏抽奖算法
  9. sql 获取当前之后某天的日期
  10. coreos_CoreOS简介
  11. 树莓派GPIO引脚介绍
  12. 如何设置Mosek的最大迭代次数?
  13. C#写简单HTML报表
  14. SpringBoot+Mybatis-plus+aop实现一个类似JPA的@Audited注解(字段审计)功能
  15. ChemDraw如何画聚合物,看完就知道了!
  16. 三国杀ol服务器维护时间 11月6日,三国杀ol11月6日更新一览 聚宝盆功能上线
  17. CSS3新增特性:选择器、盒子模型、其他属性
  18. A. Arena of Greed(博弈+贪心)2020 ICPC, COMPFEST 12, Indonesia Multi-Provincial Contest
  19. 中秋将至,通过代码实现嫦娥奔月庆祝佳节
  20. 盘点 | AAAI2020中的四篇推荐系统好文

热门文章

  1. 合同诈骗罪中“一女多嫁”的诈骗认定
  2. 超详解六西格玛管理法与案例分享|优思学院
  3. ABB Advance 助力可再生能源超级电网
  4. 面试问题1 谈谈你对加班的看法
  5. FullCalendar demo实例
  6. 关于primarykey 和key的注意事项
  7. 3721彻底清除方法
  8. Python飞机大战两个问题, 1.字体font 2.import路径
  9. Python 实现高德地图找房
  10. DiscoveryClient导包出错