【数学】多项式插值

问题描述

给出 \(n + 1\) 个二维平面上的点对 \((x_0, y_0), (x_1, y_1), (x_2, y_2), \cdots, (x_{n}, y_{n})\) ,求一个经过这些点的不超过 \(n\) 次的多项式 \(P(x) = p_{n} \cdot x^{n} + p_{n - 1} \cdot x^{n - 1} + p_{n - 2} \cdot x^{n - 2} + \cdots + p_{1} \cdot x + p_{0}\) ,也就是 \(P(x_i) = y_i\) 。这个多项式是唯一的。

这个过程叫做插值,也是从多项式的点值表达转换成系数表达的问题。

注:这里使用从0开始的下标是为了让点的下标和多项式系数的下标还有 \(x\) 的幂次显得整齐,下面的代码中的下标不一定是从0开始的。

解决思路

拉格朗日插值

由这 \(n + 1\) 个点,可以构造对应的 \(n + 1\) 个多项式,其中第 \(i\) 的多项式的形式为:

\[l_i(x) = \prod\limits_{j = 0, \; j \neq i}^{n} \frac{(x - x_j)} {(x_i - x_j)} \]

把下标为 \(i\) 的点 \(x_i\) 代入,可以得到:

\[\begin{eqnarray} l_i(x_i) &=& \prod\limits_{j = 0, \; j \neq i}^{n} \frac{(x_i - x_j)} {(x_i - x_j)} \nonumber \\ &=& \prod\limits_{j = 0, \; j \neq i}^{n} 1 \nonumber \\ &=& 1 \nonumber \end{eqnarray} \]

把给定的点中,下标不为 \(i\) 的某个点 \(x_{j0}\) 代入,可以得到:

\[ \begin{eqnarray} l_i(x_{j0}) &=& \prod\limits_{j = 0, \; j \neq i}^{n} \frac{(x_{j0} - x_j)} {(x_i - x_j)} \nonumber \\ &=& 0 \nonumber \end{eqnarray} \]

因为分子部分总存在 $ (x_{j0} - x_{j0}) = 0 $ 所以上式为 \(0\)

把不在给定的点中的任意点 \(x\) 代入,显然有 \(n\) 项,所以,这是一个 \(n\) 次的多项式。

于是,把上面的 \(n + 1\) 个不同的 \(l_i(x)\)\(y_i\) 相乘,再相加,即可构造下面的多项式:

\[L(x) = \sum\limits_{i = 0}^{n} y_i \cdot l_i(x) \]

由上面的推理可知, $ L(x_i) = y_i $ ,并且 \(L(x_i)\) 是一个不超过 \(n\) 次的多项式(由于最高次的系数可能会被抵消,导致次数降低)。

由唯一性定理可知,这个 \(L(x)\) 就是我们要找的 \(P(x)\) ,即

\[P(x) = L(x) \]

模板:【数学】多项式插值 - 拉格朗日插值

牛顿插值

多项式快速插值

高斯消元

求解未知数为 \(p_i, i = 0, 1, 2, \cdots, n\) 的方程组

\[\begin{bmatrix} x_0^{n} & x_0^{n - 1} & x_0^{n - 2} & \cdots & x_0 \\ x_1^{n} & x_1^{n - 1} & x_1^{n - 2} & \cdots & x_1 \\ x_2^{n} & x_2^{n - 1} & x_2^{n - 2} & \cdots & x_2 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ x_{n}^{n} & x_{n}^{n - 1} & x_{n}^{n - 2} & \cdots & x_{n} \end{bmatrix} = \begin{bmatrix} y_0 \\ y_1 \\ y_2 \\ \vdots \\ y_{n} \end{bmatrix} \]

利用高斯消元在 \(O(n^3)\) 时间内求出这个方程组的解。

引申阅读

重心拉格朗日插值法、差分法、龙格现象

https://www.luogu.com.cn/problem/solution/P4781

posted @ 2024-04-10 20:57  purinliang  阅读(18)  评论(0编辑  收藏  举报