拉格朗日插值2
其他
2020-01-02 23:34:13
阅读次数: 0
拉格朗日插值2
拉格朗日插值法的优化
- 拉格朗日插值法可以\(O(n^2)\)求出插值多项式。
- 当然算法是有优化空间的,先来观察一下拉格朗日多项式。
- \(F(x)=\sum_{i=0}^ny_i*\prod_{j\neq i}\frac{x-x_j}{x_i-x_j}\).
- 当我们用到的\(x_i\)取值如果是连续的话,这样就就可以把算法的时间复杂度优化到\(O(n)\)。
- 把\(x_i\)换成\(i\),这样就是连续的了,新的式子为:\(F(k)=\sum_{i=0}^ny_i*\prod_{j\neq i}\frac{k-j}{i-j}\).
- 首先维护分子来说,维护处前缀积和后缀积。
- \(pre(i)=\prod_{j=1}^ik-j\).
- \(suf(i)=\prod_{j=i}^nk-j\).
- 对于分母来说,他是一个阶乘的形式,设\(fac(i)=i!\)。
- \(F(k)=\sum_{i=0}^ny_i*\prod_{j\neq i}\frac{pre(i-1)*suf(i+1)}{fac(i)*fac(n-i)}\).
重心拉格朗日插值
- \(F(k)=\sum_{i=0}^ny_i*\prod_{j\neq i}\frac{k-x_j}{x_i-x_j}\)。
- 设\(g=\prod_{i=0}^nk-x_i\).
- \(F(k)=g\sum_{i=0}^n\prod_{j\neq i}\frac{y_i}{(k-x_i)(x_i-x_j)}\).
- 设\(t_i=\frac{y_i}{\prod_{j\neq i}{x_i-x_j}}\).
- \(F(x)=g\sum_{i=0}^n\frac{t_i}{k-x_i}\).
- 这样复杂度就被优化到了\(O(n)\)。
转载自www.cnblogs.com/zxytxdy/p/12142721.html