📜  牛顿除数差插值公式(1)

📅  最后修改于: 2023-12-03 14:56:12.728000             🧑  作者: Mango

牛顿除数差插值公式介绍

什么是牛顿除数差插值公式

牛顿除数差插值公式是一种常用的数值分析方法,用于在一段给定的区间内,利用其已知的一些点的函数值,推导出该函数在该区间内未知点的函数值。

公式表示

牛顿除数差插值公式的数学表示为:

$$ f(x) = f[x_0] + fx_0, x_1 + fx_0, x_1, x_2(x-x_1) + \cdots + fx_0, x_1, \cdots, x_n(x-x_1)\cdots(x-x_{n-1}) $$

其中, $f[x_0], f[x_0,x_1], f[x_0,x_1,x_2], \cdots, f[x_0, x_1, \cdots, x_n]$ 是牛顿差商,表示函数 $f(x)$ 在不同阶段上的差分。

实现代码

在此给出 python 实现牛顿除数差插值公式的代码。

def newton_divided_differences(x: list, y: list, xi: float) -> float:
    """
    Implementation of Newton divided differences for interpolation

    Args:
    x - given list of x points
    y - given list of y points
    xi - required x for which we need to find y

    Return:
    yi - required value of yi
    """
    n = len(x)
    fdd = [[0 for j in range(n)]
           for i in range(n)]

    for i in range(n):
        fdd[i][0] = y[i]

    for j in range(1, n):
        for i in range(n - j):
            fdd[i][j] = (fdd[i + 1][j - 1] -
                         fdd[i][j - 1]) / (x[i + j] - x[i])

    yi = fdd[0][0]
    temp = 1
    for j in range(1, n):
        temp *= xi - x[j - 1]
        yi += temp * fdd[0][j]

    return yi

这是一个简单的牛顿除数差插值公式的实现代码,接收三个参数,分别是给定的 $x$ 点, $y$ 点和 $xi$,返回 $yi$ 点。

总结

在数值分析中,牛顿除数差插值公式是一个广泛使用的方法,可以很好地实现函数的插值以及函数值的求解。Python 中可以很方便地实现这一公式,是一个值得掌握的重要工具。