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

为了方便本文的叙述,作出如下可能不严谨的定义: 1、如无特殊说明,f表示一个多项式。 2、如无特殊说明,F表示一个以多项式为参数的函数。

这篇文章主要是想求解这个东西:

ddxf=F(f)(modxn)

一般情况下f可以放到等式右边然后就可以用牛顿迭代来求零点了...然而这个微分非常讨厌,怎么办呢,我们还是来考虑倍增。

先来考虑泰勒展开式,假设上一次迭代的结果是f^,那么:

ddxf=i=0F(i)(f^)i!(ff^)i

显然i2的项都是没有用的,于是改写为:

ddxf=F(f^)+F(f^)(ff^)

拆项、移项:

ddxfF(f^)f=F(f^)F(f^)f^

下面就是一波神仙操作了,我们设一个r,其值为:

r=eF(f^)dx

考虑其微分,利用复合函数求导法则得:

ddxr=eF(f^)dx(F(f^))=F(f^)r

考虑对之前得式子左右同乘r

ddxfrF(f^)fr=(F(f^)F(f^)f^)r

于是可以发现等式左边的第二项可以转化,变为fddxr,于是等式左边就可以再利用求导法则转化:

ddxfr+fddxr=ddx(fr)=(F(f^)F(f^)f^)r

于是对两边进行积分:

fr=(F(f^)F(f^)f^)rdx

显然再同除以r

f=(F(f^)F(f^)f^)rdxr

于是就可以倍增了...这操作真的是好强好强。

upd:分治FFT好啊...常数可以吊打上面的做法...