\(n + 1\) 個點\((x_i, y_i)\)可以唯一地確定乙個不超過\(n\)次的多項式
比較直觀的做法是待定係數法然後高斯消元解方程
不過複雜度是\(o(n^3)\)的,不是特別優秀
那有沒有更快的做法呢?
考慮建構函式\(l(x)\),使得\(l(x)\)隨著自變數\(x_i\)的變化,對應的就是\(y_i\)這個值
\[l(x) ~=~ \sum_^y_i ℓ_i(x)
\]其中\(ℓ_i(x)\)為拉格朗日基本多項式,其表示式為:
\[ℓ_i(x) ~=~ \prod_ \frac
\]發現對於給定的 \(n + 1\) 個 \(x\),當且僅當 \(x = x_i\) 時 \(ℓ_i(x) = 1\),否則 \(ℓ_i(x) = 0\),這表明了構造成立
當需要求 \(x=k\) 時的函式值時,可以直接將 \(k\) 帶入 \(l(x)\) 即可,複雜度 \(o(n^2)\)
若給定點值的 \(x\) 是連續的整數時,可以預處理階乘做到 \(o(n)\) 求點值
拉格朗日重心插值法是拉格朗日插值法的一種改進
不難發現每次計算\(ℓ_i\)時其實是算了很多重複的東西,我們可以把它簡化一下
設\[ℓ(x) = \prod_^ (x - x_i)
\]定義重心權
\[w_i = \frac 1 ^(x_i - x_j)}
\]可以將拉格朗日基本多項式重新寫為:
\[ℓ_i(x) ~=~ ℓ(x)\frac \]則
\[l(x) ~=~ ℓ(x)\sum_^n \frac
\]優勢:
每次新增加乙個點,一般拉格朗日插值會重新計算一次達到\(~o(n^2)~\)的複雜度,而重心拉格朗日插值只需要\(~o(n)~\)計算\(~w_i~\)即可
\(\color \)
拉格朗日插值
拉格朗日插值基函式 li x x x 0 x xi 1 x xi 1 x x n x i x0 xi xi 1 xi xi 1 xi xn 拉格朗日差值函式 ln x i 0 nyil i x 其中,x為缺失值對應的下表序號,ln x 為缺失值的插值結果,xi 為缺失值yi 的下表序號。對全部缺失值...
拉格朗日插值
function s larg1 x,y,xi m length x 求出插值節點向量長度 n length y if m n error 向量x與y的長度必須一致 這裡肯定一致,只是為了消除直接選取x,y資料的時候出錯而設定的 end s 0 for i 1 n z ones 1,length x...
拉格朗日插值
存在性和唯一性的證明以後再補。拉格朗日插值,emmmm,名字挺高階的 joy 它有什麼應用呢?我們在fft中講到過 設 n 1 次多項式為 y sum a i x i 有乙個顯然的結論 如果給定 n 個互不相同的點 x,y 則該 n 1 次多項式被唯一確定 那麼如果給定了這互不相同的 n 個點,利用...