Python 中的 Hermite 插值,无需使用 scipy 库

问题描述 投票:0回答:1
def hermite_interpolation(x, y, yp, xi):
    n = len(x) - 1
    result = 0.0

    for j in range(n + 1):
        term = y[j]
        for i in range(n + 1):
            if i != j and x[j] != x[i]:
                term *= (xi - x[i]) / (x[j] - x[i])
        result += term * (1 + 2 * (xi - x[j]) / (x[j] - x[i])) * (xi - x[j]) ** 2

    return result

错误:

标量除法中遇到的除以零

result += term * (1 + 2 * (xi - x[j]) / (x[j] - x[i] )) * (xi - x[j])**2

我想要插值的函数是

y = 1 / (x**2 + 1)
,在 [0,1] 区间内等距点。 我尝试向其中添加 epsilon,但插值误差显着增加,我该怎么办?

python scipy interpolation numerical-methods hermite
1个回答
0
投票

您需要更改方法。一个可能的搜索术语是接触插值

© www.soinside.com 2019 - 2024. All rights reserved.