Image Description
hotman78
  • 2021-12-21

【競技プログラミング】形式的冪級数(多項式)を係数倍するテク

はじめに

twitter.com
twitter.com favicon https://twitter.com/hotmanww/status/1309050292277784577

これが解けるようになります。

形式的冪級数(多項式)を係数倍するテク

∑n=0∞1n!zn=ez\sum_{n=0}^{\infty}\frac{1}{n!}z^n=e^zと言うのは有名な式ですよね
では∑n=0∞nan!zn\sum_{n=0}^{\infty}\frac{n^a}{n!}z^nは何でしょうかと言うのが今回の議題です。
これがわかればzzにbbを代入することで答えを求めることが出来ます。

結論:微分して z 倍する。

dzndz×z=nzn\frac{dz^n}{dz}\times z=nz^nなので、うまくいきます。
これをオイラー作用素等と呼ばれたりもするようです。
今回の場合、
∑n=0∞nan!zn\sum_{n=0}^{\infty}\frac{n^a}{n!}z^nは
a=0a=0の時eze^z
a=1a=1の時(ez)′×z(e^z)'\times z=(z2+z)ez(z^2+z)e^z
a=2a=2の時((z2+z)ez)′×z=(z3+3z2+z)ez((z^2+z)e^z)'\times z=(z^3+3z^2+z)e^z
と続いて行きます
この漸化式を整理するとfi+1(z)=fi(z)+fi′(z)f_{i+1}(z)=f_i(z)+f_i'(z)のような式になって、
S(n+1,k)=kS(n,k)+S(n,k−1)S(n+1,k)=kS(n,k)+S(n,k-1)のような式になって、
これが第二種スターリング数だとわかります。
あとはFFT (NTT) 関連 -memo(いつもお世話になっております)
で出来ます。

おまけ

(xd/dx)kf(x)(xd/dx)^kf(x)はどうなるのでしょうか
k=0k=0の時f(x)f(x)
k=1k=1の時xf′(x)xf'(x)
k=2k=2の時xf′(x)+x2f′′(x)xf'(x)+x^2f''(x)
k=2k=2の時xf′(x)+3x2f′′(x)+x3f′′′(x)xf'(x)+3x^2f''(x)+x^3f'''(x)
より第二種スターリング数を用いて
∑t=0kS(k,t)xtf(t)(x)\sum_{t=0}^kS(k,t)x^tf^{(t)}(x)と表せます。(数学的帰納法で証明できます。) #練習問題
sum_of_exponential_times_polynomial_limit
sum_of_exponential_times_polynomial

ヒント 式を求めずとも形がわかればラグランジュ補間が出来ます

参考

min-25.hatenablog.com
min-25.hatenablog.com favicon https://min-25.hatenablog.com/entry/2019/10/08/214743
;