数据分析-插值-python实现

1,插值的概念:

插值是一种在离散数据点的基础上,通过一定的数学方法构造出一个连续函数(或近似连续函数),从而对数据点之间的值进行估计的技术。

简单来说,假如我们有一些已知的数据点,比如在某个实验中,我们测量了不同时刻物体的温度,这些时刻是离散的。插值就是找到一种方式,去推测在这些测量时刻之间的温度大概是多少。

例如,我们已知函数y = f(x)  在$x_0,x_1,\cdots,x_n$  这些点上的值分别为$y_0,y_1,\cdots,y_n$ ,插值就是要构造一个函数$P(x)$ ,使得 P(x_i)=y_i$i = 0,1,\cdots,n$,并且可以用  $P(x)$来估算在$x_i$  和$x_{i + 1}$ 之间的  $x$对应的函数值。

2,插值的方式以及对应的用途:

2.1,线性插值算:

2.1.1:算法介绍:

线性插值是一种简单的插值方法。它假设在两个已知数据点之间,函数呈线性变化。给定两个数据点$(x_0,y_0)$$(x_1,y_1)$,线性插值的目的是估计在$x_0$$x_1$之间的某个对应的值。

2.1.2:计算公式:

设要估计$x$的满足$x_0\leq x\leq x_1$,则线性插值得到的值计算公式为:

                                                    $y = y_0+\frac{(y_1 - y_0)}{(x_1 - x_0)}(x - x_0)$

这个公式的原理是先计算两点之间$y$的变化率$\frac{(y_1 - y_0)}{(x_1 - x_0)}$,然后根据$x$$x_0$的距离来计算y值相对于$y_0$的增量,最后得到估计的$y$值。

2.1.3:计算例子:

假设我们知道在温度$x_0 = 10^{\circ}C$时,某种物质的体积$y_0 = 20$立方厘米,在温度$x_1 = 20^{\circ}C$时,体积$y_1 = 25$立方厘米。现在我们要估计温度$x = 15^{\circ}C$为时该物质的体积?

根据线性插值公式:

首先计算变化率

                                               $\frac{(y_1 - y_0)}{(x_1 - x_0)}=\frac{(25 - 20)}{(20 - 10)} = 0.5$

然后计算

                   $y = y_0+\frac{(y_1 - y_0)}{(x_1 - x_0)}(x - x_0)=20 + 0.5\times(15 - 10)=20 + 2.5 = 22.5$

所以估计温度为$15^{\circ}C$时该物质的体积为22.5立方厘米。

2.1.4,代码实现:

def linear_interpolation(x0, y0, x1, y1, x):
    if x0 <= x <= x1:
        slope = (y1 - y0) / (x1 - x0)
        y = y0 + slope * (x - x0)
        return y
    else:
        raise ValueError("x should be between x0 and x1")

# 示例用法
x0, y0 = 10, 20
x1, y1 = 20, 25
x = 15
print(linear_interpolation(x0, y0, x1, y1, x))

2.2,多项式插值-拉格朗日插值多项式:

2.2.1:算法介绍:

拉格朗日插值法是一种多项式插值方法。其核心思想是通过已知的$n + 1$个数据点$(x_0,y_0),(x_1,y_1),\cdots,(x_n,y_n)$,构造一个次数不超过n的多项式$L(x)$,使得这个多项式在给定的数据点处的函数值与已知数据点的y值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值