python 中的 Hermite 插值,不使用 scipy 库

Hermite interpolation in python with out using scipy library

提问人:Elias 提问时间:11/13/2023 最后编辑:AKXElias 更新时间:11/13/2023 访问量:33

问:

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

对于等间隔点,我要插值的函数在 [0,1] 的区间内。 我试图将 epsilon 添加到其中,但插值误差显着增加,我该怎么办?y = 1 / (x**2 + 1)

Python scipy 数值方法 隐士

评论

0赞 jared 11/13/2023
你有重复的积分吗?你确定你写的公式正确吗?结果行位于 for 循环之外,但您仍在引用 .ii
0赞 hpaulj 11/13/2023
确定何时为 0。x[j] - x[i]

答:

0赞 ev-br 11/13/2023 #1

您需要更改方法。一个可能的搜索词是振荡插值。