[学习笔记]多项式&&生成函数
发现自己多项式学得跟【】一样,恶补力。
防止遗忘,所以自己写一个小结吧。
由于苯人才疏学浅,所以内容很少且没有代码,欢迎查错~
前置知识:FFT,NTT,微积分,导数,泰勒展开,牛顿迭代。
拉格朗日插值
好像就是一个公式?
多项式乘法逆
假设已知 \(H(x)\) ,存在 $F(x)H(x) \equiv 1 (\bmod x^{\left \lceil \frac{n}{2} \right \rceil}) $ 。
则有 $$G(x)-H(x) \equiv 0 (\bmod x^{\left \lceil \frac{2}{n} \right \rceil}) $$
将两边同乘 \(F(x)\) ,则有:
又因为 $$F(x)G(x) \equiv 0 (\bmod x^n)$$
可得 $$G(x)+F(x)H(x)^2-2H(x) \equiv 0 (\bmod x^n) $$
然后就可以递推力(轻松加愉快)。
代码:
多项式除法&多项式取模
考虑对于一个 \(F(x)\) ,将其变成 $$F(x)=Q(x)G(x)+R(x)$$
定义对于一个 \(n\) 次函数 \(A(x)\) , \(A_R(x) = x^nA(\frac {1}{x})\) , 易得, \(A_R(i)=A(n-i)\) 。
我们将两边同时乘上 \(x^n\) 后,柿子belike:
接着:
然后就很好搞力。
代码:
多项式对数函数(ln)
emm首先。 \(ln(A(x))\) 显然是个复合函数。
对 \(B(x)=ln(A(x))\) 求个导,得: $$B(x)^\prime = \frac {1}{A(x)} A(x)^\prime$$
然后求个导再积个分撒花
求导: \((x^a)^\prime = ax^{a-1}\),积分: \(\int x^a\,{\rm d x} = \frac {1}{a+1}x^{a+1}\) 。
代码:
多项式指数函数(exp)
泰勒展开:$$F(x)=\lim_{n \to \infty} \frac{F^{(n)}(x_0)}{n!}(x-x_0)$$
牛顿迭代(转自luogu题解区):牛顿迭代可以用来求一个函数的零点,多项式牛顿迭代自然是用来求多项式的零点的,即对于一个函数 \(G(x)\) ,求满足条件 \(G(F(z))≡0(modz^n)\) 的多项式 \(F(z)\) 。
题目中要求: $$B(x) \equiv e^{A(x)} (\bmod x^n)$$转化一下,就是要求: \(ln B(x)-A(x) \equiv 0 (\bmod x^n)\)$
设 \(G(F(x))=ln F(x)-A(x)\) ,求个导: $$G(F(x))^\prime = \frac {1}{F(x)}$$
根据牛顿迭代: $$F(x) \equiv F_0(x)- \frac {G(F_0(x))}{G(F_0(x))^\prime} (\bmod x^n)$$
其中 \(F_0(x)\) 是式子在 \(\bmod x^{\frac {2}{n}}\) 时的答案。
继续转化:
然后把前面的东西挎过来就可以了(
代码:
多项式开根
这个的推导过程和乘法逆有点像。
假设已知 \(H(x)\) ,存在 $H(x)^2 \equiv F(x) (\bmod x^{\left \lceil \frac{n}{2} \right \rceil}) $ 。
则有 $$G(x)-H(x) \equiv 0 (\bmod x^{\left \lceil \frac{2}{n} \right \rceil}) $$
然后就可以递推力(轻松加愉快)。
代码:
多项式快速幂
要求 $$G(x)\equiv F(x)^k (\bmod x^n)$$
不难推出:$$\ln G(x)\equiv k \ln F(x) (\bmod x^n)$$
然后把板子挎过来(
代码:
多项式快速插值
等我学完再来。
常系数齐次线性递推
题目:求一个满足 \(k\) 阶齐次线性递推数列 \(ai\) 的第 \(n\) 项,即:
手玩一下,发现这会是什么?
举个例子,考虑斐波那契数列,从后往前递推,当 \(n=4\) 时,有:
推广一下:\(f_i=p_1f_{i−1}+p_2f_{i−2}+⋯+p_kf_{i−k}\) 。
要求 \(f_n\) ,只要求多项式 \(x_n\) 对
取模的结果。因为「多项式取模」的过程恰好与「每次按递推式展开下标最大的那项」的过程一致,都可以用「替换」来解读。
然后把多项式取模挎过来(
代码:
常系数非齐次线性递推
鸽了。