多项式与点值式

Posted chasedeath

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多项式与点值式相关的知识,希望对你有一定的参考价值。

多项式与点值式

正常( ext{DFT/IDFT})是构造一个特殊的点值式,即(x_i=omega_{n}^i)

如果能通过题目条件构造出来这样的点值,就可以直接( ext{DFT/IDFT})

那如果不能的话。。。。。

多项式多点求值

一个多项式(F(x))我们求它在(x_0,x_0,cdots x_{m-1})上的点值

核心是分治+多项式取模,因此常数很大

对于当前分治区间([l,r]in[0,m-1])

需要快速构造一个长度为(frac{r-l+1}{2})的等价多项式进入分治区间

(G_{l,r}(x)=prod_l^r(1-x_i))

由于(G_{l,r(x_l)}=cdots=G_{l,r}(x_r)=0)

所以可以将(F(x))对于(G_{l,mid}(x))(G_{mid+1,r}(x))分别取模之后得到两个等价式

递归到([l=r])时,(F(x))只剩下常数项

需要被访问的(G(x))可以预先跑一遍分治NTT求出

那么复杂度就是(O(nlog ^2n))

[ ]


多项式快速插值

对于点对((x_i,y_i))

多项式拉格朗日插值的式子是

[egin{aligned}F(x) = sum_{i=0}^{n-1} y_i prod_{i e j} frac{x-x_j}{x_i-x_j}end{aligned} ]

那么需要快速求出(prod frac{1}{x_i-x_j})

构造多项式(G(x)=prod (x-x_i))

那么(prod (x_i-x_j)=frac{G}{x-x_i}(x_i))

由于(G(x),x-x_i)(x_i)上的点值均为(0)

我们要求的多项式就是(egin{aligned} prod_{i e j} (x_i-x_j) end{aligned}=frac{G(x)}{x-x_i})

即求出(frac{G}{x-x_i}(x_i))

分母分子均为(0),所以带入洛必达法则(egin{aligned}frac{G}{x-x_i}(x_i)=frac{G‘}{(x-x_i)‘}(x_i)=G‘(x_i)end{aligned})

那么求出(G‘(x)),然后多项式多点求值即可

剩下那一部分的答案,可以简单地分治合并上来,([l=r])时,多项式是一个常数

合并上来时

([l,mid])的答案补上(prod_{mid+1}^r (x-x_i))

([mid+1,r])的答案补上(prod_{l}^{mid} (x-x_i))

即复杂度为(O(nlog ^2n))

垃圾模板题卡常


以上是关于多项式与点值式的主要内容,如果未能解决你的问题,请参考以下文章

FFT

知识点:FFT详解

luogu3803 多项式乘法 (FFT)

FFT快速傅里叶变换

浅谈FFT

多项式插值(记公式)