拉格朗日插值法学习笔记

对于一个n次函数 P(x)=a0+a1x+a2x2+....anxn P ( x ) = a 0 + a 1 x + a 2 x 2 + . . . . a n x n
如果要求这个函数的系数,有两种通用的方法,一种是 n3  n 3   的高斯消元,一种是 n2logn  n 2 l o g n   的拉格朗日插值
但如果要求这个函数在 x=k  x = k   处的点值,拉格朗日插值可以做到 O(n) O ( n ) (或者 O(nlogn) O ( n l o g n )

这个东西主要是一个构造
一个n次函数要至少n+1个点才能唯一确定,我们先取 (x0,y0),(x1,y1).....(xn,yn) ( x 0 , y 0 ) , ( x 1 , y 1 ) . . . . . ( x n , y n ) 这n+1个点
然后我们构造出一些多项式
l(i)=nj=0,ji(xxj)(xixj) l ( i ) = ∏ j = 0 , j ≠ i n ( x − x j ) ( x i − x j ) ,可以发现, l(i) l ( i ) 只有在 xi x i 处取到值1,在 xj(ji)  x j ( j ≠ i )   处都取到0
那么 yil(i)  y i l ( i )   这个多项式就可以取到点 (xi,yi)  ( x i , y i )   且不影响其他n个点

P(x)=ni=0l(i)yi P ( x ) = ∑ i = 0 n l ( i ) y i

然后这个东西用fft加速卷积的话,可以 n2logn   n 2 l o g n     找到一个n次多项式,如果是取一个点的值的话,发现分子那里可以 O(n)  O ( n )   算出n+1个数的乘积再乘上对应的逆元,分子那里是两个阶乘乘积,注意一下符号,如果逆元那里可以做到 O(n) O ( n ) 就可以 O(n) O ( n ) 求点值

一道例题:bzoj3453
先对g(i)做插值,卷积可以直接暴力卷,n^3求出一个k+2次的多项式,然后要求g(A)+g(A+d)+g(A+2d)….+g(A+nd),可以枚举我们插出来的g(i)的多项式的第i项,相当于要计算 Ai+(A+d)i+....+(A+nd)i A i + ( A + d ) i + . . . . + ( A + n d ) i ,这个东西是个i+1次的多项式,我们可以用上面提到的那个方法, O(nlogn) O ( n l o g n ) 得到他在n处的值,带进g(i)的多项式

你可能感兴趣的:(乱七八糟的东西,拉格朗日插值)