求解形式幂级数的一阶微分方程

为了方便本文的叙述,作出如下可能不严谨的定义:
\(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\)好啊...常数可以吊打上面的做法...

posted @ 2018-11-07 17:56  Mr_Spade  阅读(673)  评论(1编辑  收藏  举报