part 1
拉格朗日插值法,给出 (n+1) 个点对,可以 (O(n^2)) 求出一个 (n) 次多项式的值
我们当前有(n+1)个点对,(x_i,y_i) , 代表 (f(x_i)=y_i)
给出 (k) 求 (f(k))
公式为 (sumlimits_{i=0}^ny_i*prodlimits_{j!=i} frac {k-x_j}{x_i-x_j})
正确性:
带入 (x_i) 则 (y_i*prodlimits_{j!=i}frac {k-x_j}{x_i-x_j}=y_i*1)
设 (t~!=i) 则 (prodlimits_{j!=t}frac {k-x_j}{x_t-x_j}) 中一定有 (frac{x_i-x_i}{x_t-x_i}=0) 所以 (prodlimits_{j!=t}frac {x_i-x_j}{x_t-x_j}=0)
因此 当 (k=x_i) 时 (sumlimits_{i=0}^ny_i*prodlimits_{j!=i} frac {k-x_j}{x_i-x_j} = y_i)
part 2
当 (x_i) 连续 则公式变为 (sumlimits_{i=0}^ny_i*prodlimits_{j!=i} frac {k-j}{i-j}) , 我们可以将它优化到 (O(n))
设 (pre_i= prodlimits_{j=0}^ik-j) , (suf_i= prodlimits_{j=i}^nk-j,fac_i=i ~!)
则 (f(k)=sumlimits_{i=0}^n y_i* dfrac{pre_{i-1}*suf_{i+1}}{fac_i*fac_{n-i}*(-1^{n-i})})
将 (fac_i*fac_{n-i}* -1^{n-i}) 线性求逆元 即可做到 (O(n))