各种数值算法

不知道以后这里是不是只有Lagrange插值。很大概率是的。

Lagrange插值

给出\(n\)个点\((x_i,y_i)\),求确定的\(n-1\)次多项式。

Sol:

利用点值的可加性,先构造出\(n\)\(F_i(x)\)使之满足在\(x=x_i\)处取\(y_i\),在\(x\ne x_i\)处取\(0\),最终\(F(x)=\sum\limits_{i=0}^{n-1}F_i(x)\)。(中国剩余定理运用了类似的思想。实际上将中国剩余定理拓展到多项式中便是Lagrange插值。)

考虑构造\(F_i(x)\)。为了使\(F_i(x_j)=0\)\(j\ne i\)),\(F_i(x)\)中应含有因式\(\prod\limits_{j\ne i}(x-x_j)\),但此时\(F_i(x_i)\)不一定等于\(y_i\),要调整\(F_i(x)\)系数,乘上\(\frac{y_i}{F_i(x_i)}\)即可。

得到:\(F_i(x)=y_i\prod\limits_{j\ne i}\frac{x-x_j}{x_i-x_j}\)

于是\(F(x)=\sum\limits_{i=0}^{n-1}y_i\prod\limits_{j\ne i}\frac{x-x_j}{x_i-x_j}\)

求原函数或点值\(O(n^2)\)

一些拓展

连续取值插值

\(x_i\)的取值连续时可以快速单点插值。这里以\(x_i=i\)为例。

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

分子为\(\prod\limits_{i=0}^{n-1}(x-i)\)挖去一项,经典维护前后缀积,设\(p_i=\prod\limits_{j=0}^{i-1}(x-j),s_i=\prod\limits_{j=i+1}^{n-1}(x-j)\)

分母对于\(i>j\)\(\prod\limits_{j=0}^{i-1}(i-j)=i!\),对于\(i<j\)\(\prod\limits_{j=i+1}^{n-1}(i-j)=(-1)(-2)\dots(i-n+1)=(-1)^{n-i-1}(n-i-1)!\)

于是\(F(x)=\sum\limits_{i=0}^{n-1}y_i\frac{p_is_i}{i!(-1)^{n-i-1}(n-i-1)!}\)

预处理一下,\(O(n)\)

求连续自然数幂和

\(\sum\limits_{i=1}^ni^k\)

Sol:

有第二类斯特林数的做法。

注意到每一项可以看做一个\(k\)次多项式,那么前缀和就是一个\(k+1\)次多项式。(由于前缀和与差分互逆,一个\(k+1\)次多项式差分会得到一个\(k\)次多项式即证明了该结论。)

那么求出前缀和的\(k+2\)项,然后对前缀和插值就做完了。

重心Lagrange插值

普通插值计算的过程有很多重复,考虑化简式子:

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

\(P(x)=\prod(x-x_j),w_i=\frac{y_i}{\prod\limits_{j\ne i}(x_i-x_j)}\),那么:

\[F(x)=P(x)\sum\limits_{i=0}^{n-1}\frac{w_i}{x-x_i} \]

预处理和求原函数\(O(n^2)\),求点值\(O(n)\)

牛顿插值

感觉没什么用。上 oi-wiki 看。

自适应辛普森法

用于求积分。

posted @ 2024-12-23 17:22  RandomShuffle  阅读(28)  评论(0)    收藏  举报