有可能将其向量化吗?

时间:2019-05-26 22:38:43

标签: python numpy

当前,我正在从事实现三次样条插值的项目。到目前为止,我已经设法为方程式计算系数。 现在,我试图返回一个插值函数,该函数对于任何x都会返回y。

我们假设我们有

x = [1, 3, 5]  
y = [6, -2, 4]  

我们得到的系数如下:

[ 6, -5.75, 0, 0.4375, -2, -0.5, 2.625, -0.4375]  

等于

[ a<sub>0</sub>, b<sub>0</sub>, c<sub>0</sub>, d<sub>0</sub>, a<sub>1</sub>, b<sub>1</sub>, c<sub>1</sub>, d<sub>1</sub>]  

插值多项式为

S<sub>0</sub>(x) = a<sub>0</sub> + b<sub>0</sub>*x + c<sub>0</sub>*x<sup>2</sup> + d<sub>0</sub>*x<sup>3</sup> x ∈ [1, 3]  
S<sub>1</sub>(x) = a<sub>1</sub> + b<sub>1</sub>*x + c<sub>1</sub>*x<sup>2</sup> + d<sub>1</sub>*x<sup>3</sup> x ∈ (3, 5]  

以此类推-只能计算3点以上

现在,我实现了一种方法,该方法仅在给定一个x作为输入的情况下有效。

def interpolate_spline(x, x_array, coefficients):
    i = 1
    while x_array[i] < x:
        i += 1
    i = i - 1

    a = coefficients[4 * i]
    b = coefficients[4 * i + 1]
    c = coefficients[4 * i + 2]
    d = coefficients[4 * i + 3]

    return a + b * x + c * (x ** 2) + d * (x ** 3)

回到我的问题:是否有可能将其向量化或至少将整个数组作为输入?
我不知道这是否重要,但假设x_array已排序

0 个答案:

没有答案