一尘不染

如何实现线性插值?

python

假设我得到的数据如下:

x = [1, 2.5, 3.4, 5.8, 6]
y = [2, 4, 5.8, 4.3, 4]

我想设计一个函数,该函数将使用Python在12.52.5至之间进行线性插值3.4

我曾尝试浏览本Python教程,但仍然无法理解。


阅读 170

收藏
2020-12-20

共1个答案

一尘不染

据我了解您的问题,您想编写一些函数y = interpolate(x_values, y_values, x),这将给您带来y一些价值x?然后,基本思路如下:

  1. 查找x_values定义了包含的间隔的值的索引x。例如,对于x=3您的示例列表,包含间隔为[x1,x2]=[2.5,3.4],索引为i1=1i2=2
  2. (y_values[i2]-y_values[i1])/(x_values[i2]-x_values[i1])(即dy/dx)计算该间隔的斜率。
  3. 的值在x是现在值x1加上斜率乘以从距离x1

您还需要确定如果x在的间隔之外,会发生什么情况x_values,要么是错误的,要么可以向内插“向后”,前提是斜率与第一个/最后一个间隔相同。

这是有帮助的,还是您需要更具体的建议?

2020-12-20