筆記 拉格朗日插值法

2022-03-30 06:42:52 字數 2178 閱讀 2336

問題:給你 \(n+1\) 個點值,求這 \(n+1\) 個點確定的 \(n\) 次多項式 \(f(x)\)(求出給定點 \(x_0\) 的值 \(f(x_0)\) 即可)。

我們可以直接高斯消元,\(\mathcal(n^3)\)

一般的拉格朗日插值法

簡單來說,拉格朗日插值法可以找出乙個恰好經過直角座標系內 \(n\) 個給定點的函式。

我們設所求的多項式為 \(f(x)\) ,點的座標為 \((x_i,y_i)\) ,那麼我們有:

\[f(x_0)=\sum_^n y_i \prod_ \frac

\]我們發現,代入任意乙個 \(x_k,k\in[1,n]\) ,當 \(k\neq i\) 時,後面的 \(\prod_ \frac\) 為 \(0\) ;而 \(k==i\) 時,後面的 \(\prod_ \frac\) 為 \(1\) 。

時間複雜度 \(\mathcal(n^2)\)

在 \(x\) 取值連續時的拉格朗日插值法

很多時候我們做題都是先發現某個函式是多少次的多項式,然後自己取一些值代入插值求 \(f(x_0)\)。

這時我們爆算的點的橫座標可以從 \(1\) 開始連續取,這樣我們把上面的式子中的 \(x_i\) 換成 \(i\) 有:

\[f(x_0)=\sum_^y_i \prod_ \frac

\]我們發現:

對於分子我們可以與處理字首積和字尾積:

\(pl[i]=\prod_^i (x_0-j)\)

\(pr[i]=\prod_^n(x_0-j)\)

這樣可以 \(\mathcal(1)\) 求分子;

對於分母,我們可以預處理階乘,分母實際上就是:

\((-1)^(i-1)!\cdot (n-i)!\)

這樣我們可以乙個 \(\mathcal(\log n)\) 求出分母。(如果你預處理逆元則可以 \(\mathcal(1)\) )

重心拉格朗日插值法

我們發現,一般的拉格朗日插值法每多加入乙個點時就要整個重新計算,考慮如何利用已經計算的資訊。

我們對於

\(f(x_0)=\sum_^n y_i \prod_ \frac\)

把分子提取出來,設為 \(g=\prod_^n x_0-x_i\) ,則此時:

\(f(x_0)=g \times \sum_^n \prod_ \frac\)

設 \(t_i=\frac x_i-x_j}\) 則:

\(f(x_0)=g\times \sum_^n \frac\)

因此每次多加入乙個點只需要重新 \(\mathcal(n)\)算它的 \(t_i\) 就好了。

拉格朗日插值法的應用

暴力算式子:確定題目中的某個函式的次數,就可以暴力代入,然後差值去算出這個式子。

或是說題目給定的式子不確定,你需要在程式中算出來(有回校內考試出現過

拉格朗日插值法的板子(?

luogu p4781 【模板】拉格朗日插值

#include#include#define ll long long

#define r register int

using namespace std;

namespace luitaryi const int n=2010,m=998244353;

int n,k;

int x[n],y[n];

inline ll qpow(ll a,ll b)

inline int lagrange(const int& n,const int& k,int* x,int* y) return ret;

}inline void main()

} signed main()

cf622f the sum of the k-th powers

#include#define r register int

using namespace std;

namespace luitaryi const int n=1000010,m=1000000007;

int n,k,ans;

int fac[n],pl[n],pr[n];

inline int qpow(int a,int b)

inline void main() printf("%d\n",(ans+m)%m);

}} signed main()

拉格朗日插值法

拉格朗日插值法 拉格朗日插值法可以幫助我們解決以下的問題 已知x取值0,1,1,2時,f取值2,2,0,6 求x 3時f的值。示例1 intxs intys f 3 intval lagrangepolynomial 3,xs,ys staticint lagrangepolynomial intx...

拉格朗日插值法

模板題 給出n nn個點 xi yi x i,y i xi y i 讓你確定這個n 1 n 1n 1次方程並代入求值 這個有三種求法 第一種是差分法,只適用於xi ix i i xi i的情況,就是不斷做差分直到序列變成乙個定值就可以求出所有項的係數,複雜度o n 2 o n 2 o n2 第二種是...

拉格朗日插值法

function p lagrange x,y p lagrange x,y 其中x和y是向量,p是返回的多項式向量 m獲取x的個數 m length x for k 1 1 m 表示乙個插值函式的起始值 v 1 for i 1 1 m if k i 注意 以後凡是在遇到乙個在數學上是 x 1 等包...