【学习笔记】拉格朗日插值

拉格朗日插值

类似三个点可以确定二次函数解析式,\(n+1\) 个点可以确定一个 \(n\) 项式

问题:给定 \(k\) , \(n+1\) 个数和每个数对应的函数值 \(y_i\),如何求 \(f_k\)P4181

高斯消元的复杂度 \(n^3\),拉格朗日插值可以 \(n^2\) 解决这个问题

表达式:

\[f(x)=\sum\limits_{i=1}^{n}y_i \prod\limits_{j\ne i} \frac{x-x_j}{x_i-x_j} \]

推导:

我们考虑构造一个函数 \(L_i(x)\) , 使得 \(L_i(x_i)=1\),对于任意 \(1 \leq j \leq n\)\(j \neq i\)\(L_i(x_j)=0\)

这样使 $f(x)=\sum\limits_{i=1}^n y_i L_i(x) $ 对于任意 \(1\leq i\leq n\) 都成立

则:\(L_i(x)=\prod\limits_{j \neq i} \frac{x-x_j}{x_i-x_j}\),当 \(x=x_i\) 时函数值为 \(1\),其余为 \(0\)

故表达式为 \(f(x)=\sum\limits_{i=1}^n y_i L_i(x)=\sum\limits_{i=1}^{n}y_i \prod\limits_{j\ne i} \frac{x-x_j}{x_i-x_j}\),复杂度 \(O(n^2)\)

oiwiki上还有一种类似中国剩余定理的推导,用到了多项式在模意义下的逆元

横坐标是连续整数的拉格朗日插值

\[f(x)=\sum\limits_{i=1}^{n}y_i \frac{ \prod\limits_{j=1}^{n}(x-j)}{(x-i)(-1)^{n-i}(i-1)!(n-i)!} \]

这个柿子预处理完是 \(O(n)\)

推导:

\[\begin{aligned} f(x) & =\sum\limits_{i=1}^{n}y_i \prod\limits_{j\ne i} \frac{x-x_j}{x_i-x_j} \\ & =\sum\limits_{i=1}^{n}y_i \prod\limits_{j\ne i} \frac{x-j}{i-j} \end{aligned}\]

分别处理分子和分母,则分子可以改写成 \(\frac{ \prod\limits_{j=1}^n (x-j)}{x-i}\)

分母分为 \(j<i\)\(j>i\) 考虑,对于小于那部分数轴上 \(j\)\(i\) 的距离从 \(1\) 累乘到 \(i-1\),即 \((i-1)!\),大于那部分同理,为 \((n-i)!\),需要注意因为 \(j>i\),当 \(n-i\) 为奇数时贡献为负,所以再乘上 \((-1)^{n-i}\)

故表达式为 \(f(x)=\sum\limits_{i=1}^{n}y_i \frac{ \prod\limits_{j=1}^{n}(x-j)}{(x-i)(-1)^{n-i}(i-1)!(n-i)!}\),复杂度为 \(O(n)\)

posted @ 2023-10-05 07:32  CCComfy  阅读(151)  评论(4编辑  收藏  举报