Python 实现拉格朗日插值

作者: Black先森 | 来源:发表于2017-01-24 18:39 被阅读0次

一般在数据处理的过程中,会遇到缺失值的情况,对于缺失值的处理一般会删除或者插值补充。其中拉格朗日插值就是一种最简单的插值方法。本文主要涉及两个内容
1、拉格朗日插值的数学理论
2、Python实现拉格朗日插值

1、拉格朗日插值
对于所取得的n个样本数据(xi, yi)(其中n=1,2,...,n),满足的n次多项式,然后计算多项式在兴趣点的值,把这种方法叫做拉格朗日插值,其实就是解方程组。对于有n个数据样本,需要n-1次多项式函数,将n个数据带入函数中,得到n元一次的方程组,解出方程组就能得到函数。于是就能计算你感兴趣的x对应的y值了。
n-1次多项式函数为

![](http://www.forkosh.com/mathtex.cgi? \large y=\sum_{i=0}{n-1}a_ixi)
将n个样本数据带入以上方程中得到:
![](http://www.forkosh.com/mathtex.cgi? \large \mathbf{Y}=\mathbf{XA})
其中:

方程的解的问题就转化为矩阵X是否可逆,如果可逆那么方程就有解。而解的个数取决于X的秩,如果X的秩为n有唯一解,X的秩小于n,方程就有无数个解。

2、Python实现拉格朗日插值
只需要导入scipy.interpolatelagrange方法

# -*- coding:utf-8 -*-
from scipy.interpolate import lagrange
import numpy as np
import matplotlib.pyplot as plt


def interp_lagrange(x, y, xx):
    # 调用拉格朗日插值,得到插值函数p
    p = lagrange(x, y)
    yy = p(xx)
    plt.plot(x, y, "b*")
    plt.plot(xx, yy, "ro")
    plt.show()


if __name__ == '__main__':
    NUMBER = 20
    eps = np.random.rand(NUMBER) * 2

    # 构造样本数据
    x = np.linspace(0, 20, NUMBER)
    y = np.linspace(2, 14, NUMBER) + eps

    # 兴趣点数据
    xx = np.linspace(12, 15, 10)
    interp_lagrange(x, y, xx)
根据20个样本点插值结果

注意
1、很多人可能觉得样本数据越多,得到的插值数据会越精确,这样想法是不正确的。理论上说,样本数据过多,得到的插值函数的次数就越高,插值的结果的误差可能会更大。拉格朗日插值的稳定性不太好,出现不稳定的现象称为龙格现象,解决的办法就是分段用较低次数的插值多项式
2、插值一般采用内插法,也就是只计算样本点内部的数据。

相关文章

  • 如何分摊秘密(七)

    十、拉格朗日插值法 本节介绍拉格朗日插值法,学过的读者请略过。 从数值分析的角度来看,拉格朗日插值法常被描述成是用...

  • Python 实现拉格朗日插值

    一般在数据处理的过程中,会遇到缺失值的情况,对于缺失值的处理一般会删除或者插值补充。其中拉格朗日插值就是一种最简单...

  • 拉格朗日插值法实例

    关于拉格朗日插值法,参考: 拉格朗日插值法 数据集 加载我们的数据集 这个是每天的销量数据 缺失值 前面我们知道,...

  • 缺失值处理-拉格朗日插值

    常用的插值法有:一维插值法:拉格朗日插值、牛顿插值、分段低次插值、埃尔米特插值、样条插值。二维插值法:双线性插值、...

  • 《算法导论》读书笔记 kirai 16/11/18 第30章 多

    拉格朗日插值公式以及一些变形 拉格朗日插值公式看起来很复杂,其实自己举一个例子解一解就很容易明白了。读书的过程中发...

  • 数学建模&matlab之插值与拟合

    1. 拉格朗日多项式插值 了解概念 插值多项式插值节点范德蒙特(Vandermonde)行列式截断误差、插值余项...

  • 插值-拉格朗日插值法

    朗格朗日插值法的定义 原理 一般地,若已知[ ]在互不相同 n+1 个点[ ]处的函数值[ ]( 即该函数过[ ]...

  • 插值及截图

    1插值 将4352乘3840的矩阵data插值为4410乘3850的矩阵datas 2截图 3拉格朗日插值 htt...

  • 拉格朗日插值法

    scipy.interpolate.lagrange scipy.interpolate.lagrange(x, ...

  • 拉格朗日插值方法

    提出问题,对于某一个未知函数的一组观测或者实验数据,寻找一个多项式函数,使这个多项式函数能够过这些点 拉格朗日插值...

网友评论

    本文标题:Python 实现拉格朗日插值

    本文链接:https://www.haomeiwen.com/subject/zqgzbttx.html