拉格朗日插值法是以法國18世紀數學家約瑟夫·拉格朗日命名的一種多項式插值方法。拉格朗日插值定理主要是用來解決下面這樣的問題:
給出 n 個點 (xi,yi)(保證 xi 互不相同),要求找出乙個過所有點的多項式函式 f(x)。顯然最直觀的方法是採用高斯消元,但高斯消元時間複雜度較高且有精度誤差
這時候就可以考慮用拉格朗日插值定理了
顯然對於每個點,我們嘗試找出乙個函式 fi(x),使得 fi(xi) = yi, 並且對於其他的所有橫座標 xj(j!=i) 有 fi(xj) = 0。那麼把 n 個 fi(x) 加起來就能得到要求的函式 f(x) 了
可以推出式子:
時間複雜度 o(n^2)
#include#define ll long longusing
namespace
std;
inline ll read()
while(ch
0'||ch>'9'
);
dowhile(ch>='
0'&&ch<='9'
);
return f*x;
}const
int maxn = 2000 + 10
;const ll mod = 998244353
;inline ll pow(ll a,ll b)
return
ans;
}inline ll inv(ll a)
ll n,k;
ll x[maxn],y[maxn];
ll ans;
intmain()
ans = (ans + (res1 * inv(res2) % mod)%mod) %mod;
}cout
<< ans <
}
拉格朗日插值法的公式結構整齊緊湊,在理論分析中十分方便,然而在計算中,當插值點增加或減少乙個時,所對應的基本多項式就需要全部重新計算,將拉格朗日插值定理變形為:於是整個公式都會變化,非常繁瑣。這時可以用重心拉格朗日插值法
其中 g =
然後另 ti =
當增加乙個點時直接增加ti即可
模板 數學 多項式 拉格朗日插值
已知 n 1 個點,擬合乙個多項式 f 求 f x 的值。拉格朗日插值多項式為 f x sum limits y i frac x x j x i x j 從陣列 x 和 y 的 0,n 共 n 1 個點,插值出乙個 n 次多項式 f 然後求出 f x i 返回。int lagrange int n...
拉格朗日插值多項式Matlab教學程式
拉格朗日插值多項式 lagrange interpolating polynomial 計算公式 matlab教學程式 lagrange.m lagrange interpolating polynomial 拉格朗日插值多項式 xi 插值節點 行向量 yi 插值節點函式值 行向量 x 插值點 行向...
插值方法 拉格朗日多項式
定義 f x 為定義在區間 a,b 上的函式,x0,x1,xn為 a,b 上n 1個互不相同的點,為給定的某一函式類。若 上有函式 x 滿足 xi f xi i 0,1,n 則稱 x 為f x 關於節點x0,x1,xn在 上的插值函式。x0,x1,xn為插值節點,為插值型值點 插值點 f x 為插值...