把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

[学习笔记]多项式&&生成函数

发现自己多项式学得跟【】一样,恶补力。

防止遗忘,所以自己写一个小结吧。

由于苯人才疏学浅,所以内容很少且没有代码,欢迎查错~

前置知识:FFT,NTT,微积分,导数,泰勒展开,牛顿迭代。

拉格朗日插值

好像就是一个公式?

\[f(k)=\sum _{i=0}^n y_i \prod_{i\ne j} \frac {k-x_j}{x_i-x_j} \]

多项式乘法逆

假设已知 \(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}) $$

\[(G(x)-H(x))^2 \equiv 0 (\bmod x^n) \]

\[G(x)^2+H(x)^2-2G(x)H(x) \equiv 0 (\bmod x^n) \]

将两边同乘 \(F(x)\) ,则有:

\[F(x)G(x)^2+F(x)H(x)^2-2F(x)G(x)H(x) \equiv 0 (\bmod x^n) \]

又因为 $$F(x)G(x) \equiv 0 (\bmod x^n)$$

可得 $$G(x)+F(x)H(x)^2-2H(x) \equiv 0 (\bmod x^n) $$

\[G(x)=2H(x)-F(x)H(x)^2 \equiv 0 (\bmod x^n) \]

然后就可以递推力(轻松加愉快)。

代码:

多项式除法&多项式取模

考虑对于一个 \(F(x)\) ,将其变成 $$F(x)=Q(x)G(x)+R(x)$$

\[F(\frac {1}{x}) = Q(\frac {1}{x})G(\frac {1}{x})+R(\frac {1}{x}) \]

定义对于一个 \(n\) 次函数 \(A(x)\) , \(A_R(x) = x^nA(\frac {1}{x})\) , 易得, \(A_R(i)=A(n-i)\)

我们将两边同时乘上 \(x^n\) 后,柿子belike:

\[x^nF(\frac {1}{x})=x^{n-m}Q(\frac {1}{x})x^mG(\frac {1}{x})+x^{n-m+1}x^{m-1}R(\frac {1}{x}) \]

\[F_R(x)=Q_R(x)G_R(x)+x^{n-m+1}R_R(x) \]

接着:

\[F_R(x) \equiv Q_R(x)G_R(x)+R_R(x) (\bmod x^{n-m+1}) \]

\[Q_R(x) \equiv F_R(x)G_R(x)^{-1} (\bmod x^{n-m+1}) \]

\[R_R(x) \equiv F_R(x)-Q_R(x)G_R(x) (\bmod x^{n-m+1}) \]

然后就很好搞力。

代码:

多项式对数函数(ln)

emm首先。 \(ln(A(x))\) 显然是个复合函数。

\(B(x)=ln(A(x))\) 求个导,得: $$B(x)^\prime = \frac {1}{A(x)} A(x)^\prime$$

\[B(x)^\prime = \frac {A(x)^\prime}{A(x)} \]

然后求个导再积个分撒花

求导: \((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)\)image

题目中要求: $$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}}\) 时的答案。

继续转化:

\[F(x) \equiv F_0(x)(1-ln F_0(x)+A(x)) (\bmod x^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)-H(x))^2 \equiv 0 (\bmod x^n) \]

\[G(x)^2+H(x)^2-2G(x)H(x) \equiv 0 (\bmod x^n) \]

\[F(x)+H(x)^2-2G(x)H(x) \equiv 0 (\bmod x^n) \]

\[G(x) \equiv \frac {F(x)+H(x)^2}{2H(x)} (\bmod x^n) \]

然后就可以递推力(轻松加愉快)。

代码:

多项式快速幂

要求 $$G(x)\equiv F(x)^k (\bmod x^n)$$
不难推出:$$\ln G(x)\equiv k \ln F(x) (\bmod x^n)$$

\[G(x)\equiv e^{k\ln F(x)} (\bmod x^n) \]

然后把板子挎过来(

代码:

多项式快速插值

等我学完再来。

常系数齐次线性递推

题目:求一个满足 \(k\) 阶齐次线性递推数列 \(ai\) 的第 \(n\) 项,即:

\[a_n= \sum _{i=1}^k f_i \times a_{n−i} \]

手玩一下,发现这会是什么?

举个例子,考虑斐波那契数列,从后往前递推,当 \(n=4\) 时,有:

\[f_4=f_3+f_2 \]

\[=f_2+f_1+f_1+f_0 \]

\[=3f_1+2f_0 \]

推广一下:\(f_i=p_1f_{i−1}+p_2f_{i−2}+⋯+p_kf_{i−k}\)

要求 \(f_n\) ,只要求多项式 \(x_n\)

\[p(x)=x_k−p_1x_{k−1}−p_2x_{k−2}−⋯−p_kx_0 \]

取模的结果。因为「多项式取模」的过程恰好与「每次按递推式展开下标最大的那项」的过程一致,都可以用「替换」来解读。

然后把多项式取模挎过来(

代码:

常系数非齐次线性递推

鸽了。

posted @ 2023-02-24 15:06  Fire_Weed_yue  阅读(65)  评论(1编辑  收藏  举报
浏览器标题切换
浏览器标题切换end