我想实现一个函数interpolate(x,y,X_new),该函数在一个新点x_new上计算未知函数f的线性插值。样本以两个序列x和y的形式给出。这两个序列具有相同的长度,并且它们的元素是数字。 x序列包含已采样函数的点,y序列包含相应点的函数值。 (不使用import语句)。
答案 0 :(得分:0)
据我所知,您想编写一些函数y = interpolate(x_values, y_values, x)
,它将为您提供y
处的x
值吗?然后,基本思路如下:
x_values
中查找值的索引,这些索引定义了包含x
的间隔。例如,对于带有示例列表的x=3
,包含间隔为[x1,x2]=[2.5,3.4]
,索引为i1=1
,i2=2
(y_values[i2]-y_values[i1])/(x_values[i2]-x_values[i1])
(即dy/dx
)计算该间隔的斜率。x
的值现在是x1
的值加上斜率乘以与x1
的距离。如果x
在x_values
的间隔之外,您还需要决定会发生什么情况,这是一个错误,或者您可以向内插“向后”,假设斜率与第一个相同。 /最后间隔。
有此帮助吗?还是您需要更具体的建议?