当前位置:   article > 正文

插值法-python及matlab实现_hermite插值python代码

hermite插值python代码

目录

零.基础知识

(1)np的相关函数

 (2)plot的相关函数

一.插值法的应用场景

二.插值法

2.1 插值多项式(一般插值法)

2.1.1 高次插值

(1)拉格朗日插值

(2)牛顿插值

(3)两种插值法的比较

2.1.2 分段二次插值

2.2 埃尔米特 (Hermite)插值

python内置函数

2.3 三次样条插值


零.基础知识

(1) np的相关函数

1. np.linspace的相关参数

np.linspace生成一个指定大小,指定数据区间的均匀分布序列

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

2. 返回值

np.linspace()返回数组

np.arrange()返回数组

np.array就是转换成数组

np.sin()返回数组

np.pi数字

List: 列表

python 中的 list 是 python 的内置数据类型,list 中的数据类型不必相同,

在 list 中保存的是数据的存放的地址,即指针,并非数据。

array:数组

array() 是 numpy 包中的一个函数,array 里的元素都是同一类型。

 (2) plot的相关函数

1. 给横纵坐标加标签

plt.xlabel('')

plt.ylabel('')

2. plot的相关参数设置

plt.plot()函数是matplotlib.pyplot模块下的一个函数, 用于画图

* x为x轴数据, y为y轴数据

* x, y可传入(元组), [列表], np.array, pd.Series, pd.DataFrame

* 可传入多组x, y

* plt.plot(x, y, "格式控制字符串")

    *  "格式控制字符串"最多可以包括三部分, "颜色", "点型", "线型"

    * color=['b','g','r','c','m','y','k','w']

      b-blue g-green r-red c-cyan m-magenta y-yellow k-black w-white

      linestyle=['-','--','-.',':']

      marker=['.',',','o','v','^','<','>','1','2','3','4','s','p','*','h','H','+','x','D','d','|','_','.',',']

3. 多条线绘于一张图

plt.legend()

* 给plt.plot( )中参数label=''传入字符串类型的值,也就是图例的名称

* 使用plt.legend( )使上述代码产生效果

* plt.legend( )中有handles、labels和loc三个参数

    * loc = 'best'

    * labels显示线条名称,上面的plt.plot有label,其实这个并不需要

一.插值法的应用场景

* 数据量过少时,不足以支撑分析的进行,插值法可以模拟产生一些新的靠谱的数据

* 根据已知的点进行数据、模型的处理和分析,可以用来预测数据

二.插值法

2.1 插值多项式(一般插值法)

定理一 

设有n+1个互不相同的结点  (x_i,y_i)  (i = 0,1,2,...n) 则存在唯一的多项式:

L_n\left ( x \right )= a_0 + a_1x+a_2x^{2}+...+a_nx^{n} (1)

使得L_n\left ( x_j \right )= y_j\left ( j=0,1,2,...n \right ) (2)

证明

对于方程组

\left\{\begin{matrix} a_0+a_1x_0+a_2x_0^{2}+...+a_nx_0^{n}= y_0 \\ a_0+a_1x_1+a_2x_1^{2}+...+a_nx_1^{n}= y_1 \\ .......... \\ a_0+a_1x_2+a_2x_2^{2}+...+a_nx_2^{n}= y_2 \end{matrix}\right.

A = \begin{bmatrix}1 \;\;\; x_0\;\;\;\;...\;\;\;\;x_0^{n} & & & \\ 1 \;\;\; x_1\;\;\;\;...\;\;\;\;x_1^{n} & & & \\ ..................... & & & \\ 1 \;\;\; x_n\;\;\;\;...\;\;\;\;x_n^{n} & & & \end{bmatrix}            X= \begin{bmatrix}a_0 \\ a_1 \\ ... \\ a_n \end{bmatrix}               Y= \begin{bmatrix}y_0 \\ y_1 \\ ... \\ y_n \end{bmatrix}

方程组的矩阵形式如下:

AX= Y

有范德蒙列行列式得:由于x_i\neq x_j

方程组有唯一解

L_n\left ( x \right )= a_0 + a_1x+a_2x^{2}+...+a_nx^{n}有唯一系数。

注意:如果不限制多项式的次数,插值多项式不唯一。

2.1.1 高次插值
(1)拉格朗日插值

(2)牛顿插值

(3)两种插值法的比较

1. 均会出现runge现象,即在两端处波动极大,产生明显的动荡。->我们可以采用分段插值

给定n+1个点,过所有点的函数不一定是n次函数。

2.牛顿差值法的第n+1项只与前n项的值有关,与拉格朗日插值法相比,牛顿插值法的计算过程具有继承性。

3.均不能全面反映被插函数的形态,如一阶导,二阶导等。

2.1.2 分段二次插值

选取跟节点最近的5个结点进行二次插值,在每个区间上,用拉格朗日插值法求取二次函数,取离节点最近的三个结点组成的区间

2.2 埃尔米特 (Hermite)插值

要求一阶导相等

matlab内置函数:

p = pchip(x,y,new_x)

python内置函数

from scipy.interpolate import KroghInterpolator

2.3 三次样条插值

要求一阶导相等,二阶连续可微

matlab内置函数

p = spline(x,y,new_x)

 python内置函数

from scipy.interpolate import CubicSpline

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/803840
推荐阅读
相关标签
  

闽ICP备14008679号