求解形式幂级数的一阶微分方程
为了方便本文的叙述,作出如下可能不严谨的定义:
\(1\)、如无特殊说明,\(f\)表示一个多项式。
\(2\)、如无特殊说明,\(F\)表示一个以多项式为参数的函数。
这篇文章主要是想求解这个东西:
\[\frac{d}{dx}f=F(f) (\bmod x^n)
\]
一般情况下\(f\)可以放到等式右边然后就可以用牛顿迭代来求零点了...然而这个微分非常讨厌,怎么办呢,我们还是来考虑倍增。
先来考虑泰勒展开式,假设上一次迭代的结果是\(\widehat f\),那么:
\[\frac{d}{dx}f=\sum_{i=0}^{\infty}\frac{F^{(i)}(\widehat f)}{i!}(f-\widehat f)^i
\]
显然\(i\geq 2\)的项都是没有用的,于是改写为:
\[\frac{d}{dx}f=F(\widehat f)+F'(\widehat f)(f-\widehat f)
\]
拆项、移项:
\[\frac{d}{dx}f-F'(\widehat f)f=F(\widehat f)-F'(\widehat f)\widehat f
\]
下面就是一波神仙操作了,我们设一个\(r\),其值为:
\[r=e^{-\int F'(\widehat f)\ dx}
\]
考虑其微分,利用复合函数求导法则得:
\[\frac{d}{dx}r=e^{-\int F'(\widehat f)\ dx}\cdot(-F'(\widehat f))=-F'(\widehat f)r
\]
考虑对之前得式子左右同乘\(r\):
\[\frac{d}{dx}f\cdot r-F'(\widehat f)f\cdot r=(F(\widehat f)-F'(\widehat f)\widehat f)\cdot r
\]
于是可以发现等式左边的第二项可以转化,变为\(f\cdot \frac{d}{dx}r\),于是等式左边就可以再利用求导法则转化:
\[\frac{d}{dx}f\cdot r+f\cdot \frac{d}{dx}r=\frac{d}{dx}(f\cdot r)=(F(\widehat f)-F'(\widehat f)\widehat f)\cdot r
\]
于是对两边进行积分:
\[f\cdot r=\int (F(\widehat f)-F'(\widehat f)\widehat f)\cdot r \ dx
\]
显然再同除以\(r\):
\[f=\frac{\int (F(\widehat f)-F'(\widehat f)\widehat f)\cdot r \ dx}{r}
\]
于是就可以倍增了...这操作真的是好强好强。
\(\rm upd\):分治\(\rm FFT\)好啊...常数可以吊打上面的做法...