logo

生成関数とは何か? 📂関数

生成関数とは何か?

定義

シーケンス {an}\left\{ a_{n} \right\} に対して、 g(x)=n=0anxn=a0+a1x+a2x2+ g(x) =\sum \limits _{n=0}^{\infty}a_{n}x^{n}= a_{0} + a_{1} x + a_{2} x^2 + \cdots の形で表される関数 gg数列 {an}\left\{ a_{n}\right\} の生成関数または単に生成関数という。数列が an=an(x)a_{n}=a_{n}(x) の場合、下記のように表記されることもある。 G(x,t)=n=0an(x)tn G(x,t)=\sum \limits _{n=0}^{\infty}a_{n}(x)t^{n}

説明

鋭い読者なら気づいただろうが、テイラー級数も同様の形をしている。鋭くない読者でも、高校時代に「冪級数」という名前でこの似た形に接していただろう。等差数列と等比数列の合計を求める過程を数学的に理解しているかを確認するのに適しているからこそ、試験問題にはとてもふさわしいのだ。

歴史的に「生成関数」という名前はラプラスが名付けたものと知られている。両辺をnn回微分した後x=0x=0を代入するとg(n)(x)=ann!g^{(n)} (x) = a_{n} n!となり、したがってan=g(n)(x)n!\displaystyle a_{n} = {{g^{(n)} (x) } \over {n!}}を求めることができる。その意味で、生成関数は元々与えられた数列を復元あるいは「生成できる関数」と考えることができるものだ。

特別なケースとしては前述したようにマクローリン級数 f(x)=n=0f(n)(0)n!xn\displaystyle f(x) = \sum_{n=0}^{\infty} {{f^{(n)} (0)}\over{n!}} {x}^nがある。マクローリン級数は、与えられた関数のnn階微分係数として数列 ana_{n}を取っている場合だ。

1=a0=a1=a2=1 = a_{0} = a_{1} = a_{2} = \cdotsすなわち、全ての項の係数が1の場合、喜んでも無限等比級数 g(x)=1+x+x2+=11x g(x) = 1 + x + x^2 + \cdots = {{1} \over {1-x}} になる。一方an=n+1a_{n} = n+1、すなわち自然数の数列の場合はg(x)=11x\displaystyle g(x) = {{1} \over {1-x}}の両面をxxで微分したものと同じだ。その結果はもちろん以下の通り。 g(x)=1+2x+3x2+=1(1x)2 g ' (x) = 1 + 2 x + 3 x^2 + \cdots = {{1} \over {(1-x)^2 }} 生成関数に対する研究は一見全く無駄に思えるかもしれないが、統計学をはじめとする様々な応用数学に冪関数として一般化されて幅広く使用されている。(驚くことではないが、このような名前が付く前からすでに、オイラーは解析学や数論の問題を解くために使用していたと言われている。)