拉格朗日插值法

  • 1.数学原理
  • 1.1 线性插值
  • 1.2二次插值
  • 1.3 n次拉格朗日插值多项式
  • 2.Python实现

本文将介绍拉格朗日插值法得数学原理,并用Python实现。

1.数学原理

首先我们得知道一个定理:给定n+1个互异节点,则它的n次插值多项式是唯一存在的。

1.1 线性插值

线性插值即一次插值
已知:

求解:L1(x)=a1x+a0L_1(x)=a_1x+a_0 L1​(x)=a1​x+a0​
根据点斜式得到:
L1(x)=y0+(y1−y0)(x1−x0)(x−x0)L_1(x)=y_0+\frac{(y_1-y_0)}{(x_1-x_0)}(x-x_0) L1​(x)=y0​+(x1​−x0​)(y1​−y0​)​(x−x0​)
即:
L1(x)=(x−x1)(x0−x1)y0+(x−x0)(x1−x0)y1L_1(x)=\frac{(x-x1)}{(x_0-x_1)}y_0+\frac{(x-x0)}{(x_1-x_0)}y_1 L1​(x)=(x0​−x1​)(x−x1)​y0​+(x1​−x0​)(x−x0)​y1​
这就是一次拉格朗日多项式

l0(x)=(x−x1)(x0−x1)l_0(x)=\frac{(x-x1)}{(x_0-x_1)} l0​(x)=(x0​−x1​)(x−x1)​
l1(x)=(x−x0)(x1−x0)l_1(x)=\frac{(x-x0)}{(x_1-x_0)} l1​(x)=(x1​−x0​)(x−x0)​
则一次拉格朗日多项式就可以表示为
l1(x)=y0l0(x)+y1l1(x)l_1(x)=y_0l_0(x)+y_1l_1(x) l1​(x)=y0​l0​(x)+y1​l1​(x)

1.2二次插值

已知:

求解:
L2(x)=a2x2+a1x+a0L_2(x)=a_2x^2+a_1x+a_0 L2​(x)=a2​x2+a1​x+a0​
采用以下方法构造,令
L2(x)=A(x−x1)(x−x2)+B(x−x0)(x−x2)+C(x−x0)(x−x1)L_2(x)=A(x-x_1)(x-x_2)+B(x-x_0)(x-x_2)+C(x-x_0)(x-x_1) L2​(x)=A(x−x1​)(x−x2​)+B(x−x0​)(x−x2​)+C(x−x0​)(x−x1​)
可以解出:
A=y0(x0−x1)(x0−x2)A=\frac{y_0}{(x_0-x_1)(x_0-x_2)} A=(x0​−x1​)(x0​−x2​)y0​​
B=y1(x1−x0)(x1−x2)B=\frac{y_1}{(x_1-x_0)(x_1-x_2)} B=(x1​−x0​)(x1​−x2​)y1​​
C=y2(x2−x0)(x2−x1)C=\frac{y_2}{(x_2-x_0)(x_2-x_1)} C=(x2​−x0​)(x2​−x1​)y2​​
于是可以得到:
L2(x)=∑i=12(∏i=0,i≠j2x−xixj−xi)yjL_2(x)=\sum\limits_{i=1}^{2}(\prod\limits_{i=0,i\neq{j}}^{2}\frac{x-x_i}{x_j-x_i})y_j L2​(x)=i=1∑2​(i=0,i​=j∏2​xj​−xi​x−xi​​)yj​
该式称为二次拉格朗日多项式
如果令:
l0(x)=(x−x1)(x−x2)(x0−x1)(x0−x2)l_0(x)=\frac{(x-x1)(x-x_2)}{(x_0-x_1)(x_0-x_2)} l0​(x)=(x0​−x1​)(x0​−x2​)(x−x1)(x−x2​)​
l1(x)=(x−x0)(x−x2)(x1−x0)(x1−x2)l_1(x)=\frac{(x-x0)(x-x_2)}{(x_1-x_0)(x_1-x_2)} l1​(x)=(x1​−x0​)(x1​−x2​)(x−x0)(x−x2​)​
l2(x)=(x−x0)(x−x1)(x2−x0)(x2−x1)l_2(x)=\frac{(x-x0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} l2​(x)=(x2​−x0​)(x2​−x1​)(x−x0)(x−x1​)​

L2(x)=y0l0(x)+y1l1(x)+y2l2(x)L_2(x)=y_0l_0(x)+y_1l_1(x)+y_2l_2(x) L2​(x)=y0​l0​(x)+y1​l1​(x)+y2​l2​(x)

1.3 n次拉格朗日插值多项式

由前面得规律可以得到n次拉格朗日插值多项式:
L2(x)=∑i=1n(∏i=0,i≠jnx−xixj−xi)yjL_2(x)=\sum\limits_{i=1}^{n }(\prod\limits_{i=0,i\neq{j}}^{n}\frac{x-x_i}{x_j-x_i})y_j L2​(x)=i=1∑n​(i=0,i​=j∏n​xj​−xi​x−xi​​)yj​

2.Python实现

import numpy as npdef LagrangeInterpolation(x):grid_x = np.array([4, 5, 6])k = len(grid_x)value = np.array([10, 5.25, 1])result = 0for j in range(k):result_l = 1for i in range(k):if i != j:result_l = result_l * (x - grid_x[i]) / (grid_x[j] - grid_x[i])result = result + value[j] * result_lreturn resultif __name__ == '__main__':x=18result=LagrangeInterpolation(x)print(result)

结果如下:

-11.0
参考:https://blog.csdn.net/u011699626/article/details/120394802

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

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

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

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

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

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

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

  4. 拉格朗日插值法python实现

    目录 1.原理 2.涉及的Python库 3.例子 1.原理 对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: L(x)=∑j= ...

  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. HDU2899(二分查找+or+模拟退火算法)
  2. git fetch比较差异
  3. linux程序员的proc文件系统
  4. HDU 4556 Stern-Brocot Tree
  5. 李宏毅深度学习——Backpropagation
  6. 债券指数(Bond Index)
  7. [Golang]slice值传递存在的问题
  8. Vue项目 报错TypeError [ERR INVALID ARG TYPE]: The “path“ argument must be of type string
  9. 基于DevExpress XtraGrid控件实现的凭证式显示
  10. paip.支付宝即时到账接口改双功能接口.txt
  11. java右移位_Java移位运算
  12. 计算机中丢失msvcp120.dll是什么意思,win7系统玩游戏提示“msvcp120.dll丢失”怎么修复...
  13. 使用财务系统所用到的会计基础知识(一)
  14. html写一个轮播图响应式布局,响应式banner图片轮播布局代码
  15. 明日之后什么服务器物品最便宜,明日之后:玩家晒物价最低的服务器,看到uzi标价,观众直接酸了...
  16. 这些商业心理你了解吗?
  17. 砂土液化判别计算工具
  18. linux修改ipaddr,并保存
  19. adb shell bugreport分析
  20. 小米扫地机器人充电座指示灯不亮_小米扫地机器人常见问题处理 充电后无法取电怎么办?...

热门文章

  1. matlab 差分方程画图,怎样用Matlab求解差分方程题概念.ppt
  2. 如何合理而有效的进行控制系统冗余设计
  3. ping不通阿里云服务器的公网ip的解决
  4. idea工具栏添加快捷图标(添加快速打开文件所在电脑位置图标)
  5. js找你妹微信小游戏源码
  6. UE-c++ className.generated.h报错:generated header must be included last in a list of includes
  7. Django开发个人博客网站——16、给博客添加上评论功能
  8. 电驱动系列:十七、相绕组的磁势、分布系数、绕组系数及齿谐波(电机篇)
  9. weka_ 聚类分析实例演练
  10. python 文本聚类分析案例——从若干文本中聚类出一些主题词团