10

漸化式の母関数解法

1690
0

初めに

f(x)=k=0Akxkとおくことで色々な漸化式を解くことが出来るらしいです。
z変換チートシート-Qiita を参考に少し変わった式変形をします。
各項をそれぞれ別々に変換するだけで母関数が得られます。

フィボナッチ数列

Ak+2=Ak+1+Akより、
k=0Ak+2xk=k=0Ak+1xk+k=0Akxk
となるので、
f(x)A1xA0x2=f(x)A0x+f(x)
より
f(x)=A0+(A1A0)x1xx2

邪魔な項を引いてから項数をあわせるだけです。

カタラン数

A0=1,Ak+1=i=0kAiAki
f(x)1x=f(x)2
が成り立つので
f(x)=114x2x
参考

一般化

母関数内の各項について、その項をg(k)とすると、k=0g(k)xkが求まれば良さそうだとわかります。
これには、テイラー展開や級数の公式が適用できて嬉しいです。
自分が昔書いた記事ですが、
【競技プログラミング】形式的冪級数(多項式)を係数倍するテク-Qiita
も参考にしてみて下さい。
ランベルトのW関数 - wikipedia
Lagrange inversion theorem - wikipedia
なども使えそうです。
これだけで大学入試程度なら瞬殺だと思います。

無限に有る公式の一部

  • k=0Ak+1xk=(f(x)A0)x
  • k=0Ak+2xk=f(x)A1xA0x2
  • k=0Ak+sxk=f(x)i=0sAixixs
  • k=0kAkxk=xf(x)
  • k=0k2Akxk=xf(x)+x2f(x)
  • k=0ksAkxk=t=0sS(s,t)xtf(t)(x)(S(s,t) 第二スターリング数 )
  • k=0xk=11x
  • k=0akxk=11ax
  • k=0kxk=x(1x)2
  • k=0k2xk=x(x+1)(1x)3
  • k=0k3xk=x(x2+4x+1)(1x)4
  • k=0ksxk=As(x)x(1x)n+1(ただしAs(x) オイラリアン数 )
  • k=0k1xk=log(1x)(=Li1(x))
  • k=0ksxk=Lis(x)(ただし、Lis(x) 多重対数関数 )
  • k=01k!xk=ex
  • k=0ksk!xk=t=0sS(s,t)xtex
    etc...

演習問題

  • n項間漸化式k=0nCkAk=0の母関数を求めなさい。(Ckは定数)
  • Ak+1=k2Ak+akの母関数を求めなさい。(aは定数)
投稿日:2020117
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

hotman
10
1690

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 初めに
  2. フィボナッチ数列
  3. カタラン数
  4. 一般化
  5. 無限に有る公式の一部
  6. 演習問題