拉格朗日插值法python实现
目录
- 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∑kyjℓ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∏kxj−xix−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实现相关推荐
- 解读 拉格朗日插值法python,保你学明白
文章目录 概述拉格朗日插值法 什么是插值法 拉格朗日插值法的原理 拉格朗日公式 拉格朗日插值法的代码实现 Python 进行拉格朗日插值的主要知识点 Polyfit 函数 Polyval 函数 Lin ...
- 拉格朗日插值法+python实现
拉格朗日插值法 1.数学原理 1.1 线性插值 1.2二次插值 1.3 n次拉格朗日插值多项式 2.Python实现 本文将介绍拉格朗日插值法得数学原理,并用Python实现. 1.数学原理 首先我们 ...
- 缺失值处理 - 拉格朗日插值法 - Python代码
目录 缺失值处理 拉格朗日差值法的理论基础 拉格朗日插值法代码实现 其他数据预处理方法 缺失值处理 处理缺失值常用的办法可分为三类:删除记录.数据插补.不处理. 其中常见的数据插补法有: 如果通过删除 ...
- 拉格朗日插值法--python
数据分析 数据清洗:缺失值处理.1删除记录 2数据插补 3不处理 数据 链接:https://pan.baidu.com/s/1jiIOoselsqVQR4P_EaS3pA 提取码:t970 常见插补 ...
- 拉格朗日插值法——python代码实现
一.拉格朗日的基本思想: 二.线性插值 三.多个点 四.代码实现 def lagrange(xx,y):l=len(y)l_n = 0for k in range(l):xxx=xx.copy()x_ ...
- 拉格朗日插值法《python数据分析与挖掘实践》
数据清洗 数据清洗主要是删除原始数据集中地无关数据.重复数据.平滑噪声数据,筛选掉与挖掘主题无关的数据,处理缺失值.异常值等. 缺失值处理的方法可分为3类:删除记录.数据插补和不处理. 删除含有缺失值 ...
- 拉格朗日插值法 【python】
一.插值 设函数y=f(x)在区间[a,b]上连续,给定n+1个点 a≤x0<x1<....<xn≤b 已知,f(xk)=yk(k=0,1....n),在函数类P中寻找一个函数Φ(x ...
- python拉格朗日插值法_Python实现的拉格朗日插值法示例
本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...
- 拉格朗日插值python代码_Python实现的拉格朗日插值法示例
本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...
最新文章
- 这样的独处,能让你变得越来越优秀
- 分别打印三位整数的个位、十位、百位
- Windows 8 图标前面的勾选
- Python的pycurl库升级升级失败的解决方法
- OPA 7 - opaTest
- scrapy.spider
- 模糊查询是如何进行实现的_模糊查找,不是近似查找!在Excel中应该如何进行模糊匹配...
- java 抽奖算法_Java实现游戏抽奖算法
- sql 获取当前之后某天的日期
- coreos_CoreOS简介
- 树莓派GPIO引脚介绍
- 如何设置Mosek的最大迭代次数?
- C#写简单HTML报表
- SpringBoot+Mybatis-plus+aop实现一个类似JPA的@Audited注解(字段审计)功能
- ChemDraw如何画聚合物,看完就知道了!
- 三国杀ol服务器维护时间 11月6日,三国杀ol11月6日更新一览 聚宝盆功能上线
- CSS3新增特性:选择器、盒子模型、其他属性
- A. Arena of Greed(博弈+贪心)2020 ICPC, COMPFEST 12, Indonesia Multi-Provincial Contest
- 中秋将至,通过代码实现嫦娥奔月庆祝佳节
- 盘点 | AAAI2020中的四篇推荐系统好文