拉格朗日插值公式以及一些變形
拉格朗日插值公式看起來很復雜,其實自己舉一個例子解一解就很容易明白了。讀書的過程中發(fā)現,越是歸結為簡單形式的式子,用計算機編程實現起來越容易,優(yōu)化的地方也就越多;舉完例子發(fā)現,這玩意如果式子長了的話,還真不是人解的……
跟我們的目標接近一下(我們的目標是求C(x),且C(x)=A(x)*B(x)),那么對A,B的任意一點(xk,yk),都有C(xk)=A(xk)*B(xk)。
所以,想求兩個多項式的乘積的時候,除了直接用系數表達來求,還可以用點值表達來求:
先求出A(x)、B(x)的點值表達,再相乘。這個過程需要O(n)。再將點值表達插值轉成系數表達需要O(n^2)。
乍一看和前面描述的直接用系數表達求得結果的復雜度一樣,都是O(n^2)的。實際上,點值表達中取點可以影響計算。用FFT可以將復雜度降到O(nlgn)。