偽計数学妨害罪

うるせぇ、こっちは遊びで数学やってんだよ

数列の家庭事情

こんにちは、108Hassiumです。


突然ですが、皆さんは「母関数」という単語をご存知でしょうか。

f:id:Hassium277:20200806221425j:plain
☝「ボカン数」のイメージ

\displaystyle\sum_{n=0}^{\infty}a_nx^n=a_0+a_1x+a_2x^2+a_3x^3+...を数列a_nの母関数という。


例えばa_n=2^nとすると、a_nの母関数は1+2x+4x^2+8x^3+...になります。


ところで、'母'関数という名称から、数列の方が'子'であると解釈することができます。


つまり関数と数列が親子関係にあるということですが、そうなるとこの親子の家庭環境が気になります。


というわけで、関数と数列の家庭事情について考えました。

いろいろな親子

先程例として挙げた1+2x+4x^2+8x^3+...という無限級数ですが、|x|が十分小さければ\frac{1}{1-2x}と等しくなることが知られています。

f:id:Hassium277:20200807234642g:plain
☝緑が\frac{1}{1-2x}、赤が1+2x+4x^2+8x^3+...


つまり、「a_n=2^nの母関数は\frac{1}{1-2x}である」と表現することができます。


ある数列の母関数の話をするときには、このように無限級数を使わない形(「閉じた形」といいます)で表すこともよくあります。


というわけで、まずは手始めに色々な数列の母関数を求めてみましょう。

  • a_n=r^n


まず、無限級数表示の式にrxを掛けます。


rx(1+rx+r^2x^2+r^3x^3+...)=rx+r^2x^2+r^3x^3+r^4x^4+...


次に、掛ける前後の式の差をとります。


(1+rx+r^2x^2+r^3x^3+...)-(rx+r^2x^2+r^3x^3+r^4x^4+...)

=1


ということは母関数をf(x)とすると、f(x)-rxf(x)=1が成り立つことになります。


あとはこれを変形すれば、f(x)=\frac{1}{1-rx}という式が得られます。

  • a_n=n


まず、無限級数表示にxを掛けます。


x(0+x+2x^2+3x^3+...)=0x+x^2+2x^3+3x^4+...


次に、掛ける前後の式の差をとります。


(0+x+2x^2+3x^3+...)-(0x+x^2+2x^3+3x^4+...)

=0+(1-0)x+(2-1)x^2+(3-2)x^3+...

=x+x^2+x^3+...

=-1+1+1x+1^2x^2+1^3x^3+...

-1+\frac{1}{1-x}=\frac{x}{1-x}


よって、母関数をf(x)とすると、f(x)-xf(x)=\frac{x}{1-x}が成り立つことになります。


これを変形すると、f(x)=\frac{x}{(1-x)^2}になります。

  • a_n=a_{n-1}+a_{n-2}a_0=0a_1=1


フィボナッチ数列の場合は、f(x)xf(x)x^2f(x)を使うと上手くいきます。


xf(x)=a_0x+a_1x^2+a_2x^3+a_3x^4...

x^2f(x)=a_0x^2+a_1x^3+a_2x^4+a_3x^5+...

xf(x)+x^2f(x)=a_0x+(a_0+a_1)x^2+(a_1+a_2)x^3+(a_2+a_3)x^4+...

=a_2x^2+a_3x^3+a_4x^4+...

=f(x)-x

f(x)=\frac{x}{1-x-x^2}




さて、ここまでは特定の数列の母関数を求めることを考えてきましたが、逆にある関数について、それを母関数とするような数列を求めることもできます。


※以下、f(x)a_nの母関数であるとき「a_nf(x)の子数列である」ということにします。*1


その際に便利な概念として、テイラー級数というものがあります。

テイラー級数

f(x)=\displaystyle\sum_{n=0}^{\infty}\frac{f^{(n)}(\alpha)}{n!}(x-\alpha)^n

ただし、f^{(n)}(\alpha)f(x)n微分して\alphaを代入した値。


\alpha=0とすると母関数の定義式と似た形になり、\frac{f^{(n)}(0)}{n!}f(x)の子数列であるということがわかります。


これを利用することで、いろいろな関数の子数列を簡単に求めることができます。

  • f(x)=e^x


e^xは何回微分してもe^xのままなので、f^{(n)}(0)は常に1です。


ということで、\frac{1}{n!}e^xの子数列です。

  • f(x)=x^3+x^2+x+1


f^{(n)}(x)を実際に計算してみます。


f^{(1)}(x)=3x^2+2x+1

f^{(2)}(x)=6x+2

f^{(3)}(x)=6

f^{(4)}(x)=0


f^{(4)}(x)=0なので、以降の導関数も全て0になります。


ということは、1,1,1,1,0,0,0...(この後ずっと0)がx^3+x^2+x+1の子数列であることが分かります。


このように閉じた形の関数でも、その子数列が変な形になることがあります。




さて前置きが長くなってしまいましたが、ここからいよいよ数列の家庭事情について踏み込んでいきたいと思います。

兄弟姉妹はいないのか?

先程「母関数から子数列を求める方法」を紹介しましたが、この方法で求まる数列は1種類のみでした。


では、数列は必ず一人っ子なのでしょうか?


一般に、生物が個体数を維持するには一匹の雌は2匹以上の子を産まなければならないと言われています。


では、数列達は滅びを待つしかないのでしょうか?


否。1つの母関数から生まれる子数列は、1つとは限りません。


テイラー級数の定義をもう1度見てみましょう。

テイラー級数

f(x)=\displaystyle\sum_{n=0}^{\infty}\frac{f^{(n)}(\alpha)}{n!}(x-\alpha)^n


子数列の計算で全く使わなかった、\alphaという変数があります。


実は、この\alphaにはこんな性質があります。

収束半径r

テイラー級数は、ある正の定数rについて\alpha-r<x<\alpha+xのときf(x)と一致する。*2


例えば最初の方で紹介した\displaystyle\sum_{n=0}^{\infty}2^nx^nという式は\frac{1}{1-2x}\alpha=0としてテイラー展開したもので、-\frac{1}{2}<x<\frac{1}{2}のとき\frac{1}{1-2x}と一致します。


ここで\alphaを0以外の値にずらしてみると、\frac{1}{1-2x}と一致する範囲も変わることが分かります。

f:id:Hassium277:20200809141202g:plain
\alphaをずらしたときの、\frac{1}{1-2x}のテイラー級数のグラフ(n=20)


収束する範囲が違うという事は、級数としては別物であると考えられます。


ということは、テイラー級数(x-\alpha)^nの部分を展開して整理すれば、\alphaの値ごとに違う子数列が得られることになります。


というわけで、実際に展開してみましょう。


\displaystyle\sum_{n=0}^{\infty}\frac{f^{(n)}(\alpha)}{n!}(x-\alpha)^n

=\frac{f^{(0)}(\alpha){}_0C_0(-\alpha)^0x^0}{0!}

+\frac{f^{(1)}(\alpha){}_1C_0(-\alpha)^1x^0}{1!}+\frac{f^{(1)}(\alpha){}_1C_1(-\alpha)^0x^1}{1!}

+\frac{f^{(2)}(\alpha){}_2C_0(-\alpha)^2x^0}{2!}+\frac{f^{(2)}(\alpha){}_2C_1(-\alpha)^1x^1}{2!}+\frac{f^{(2)}(\alpha){}_2C_2(-\alpha)^0x^2}{2!}

+\frac{f^{(3)}(\alpha){}_3C_0(-\alpha)^3x^0}{3!}+\frac{f^{(3)}(\alpha){}_3C_1(-\alpha)^2x^1}{3!}+\frac{f^{(3)}(\alpha){}_3C_2(-\alpha)^1x^2}{3!}+\frac{f^{(3)}(\alpha){}_3C_3(-\alpha)^0x^3}{3!}+...

=\displaystyle\sum_{n=0}^{\infty}\left(\displaystyle\sum_{k=0}^{\infty}\frac{f^{(k+n)}(\alpha){}_{k+n}C_n(-\alpha)^k}{(k+n)!}\right)x^n

=\displaystyle\sum_{n=0}^{\infty}\left(\displaystyle\sum_{k=0}^{\infty}\frac{f^{(k+n)}(\alpha)(-\alpha)^k}{(k+n)!}\frac{(k+n)!}{k!n!}\right)x^n

=\displaystyle\sum_{n=0}^{\infty}\left(\displaystyle\sum_{k=0}^{\infty}\frac{f^{(k+n)}(\alpha)(-\alpha)^k}{k!n!}\right)x^n


\displaystyle\sum_{k=0}^{\infty}\frac{f^{(k+n)}(\alpha)(-\alpha)^k}{k!n!}を閉じた形で表すのは困難ですが、この部分が\frac{f^{(n)}(0)}{n!}と異なる値になれば別の子数列が存在することになります。*3


というわけで\frac{f^{(n)}(0)}{n!}には\alphaの値の数だけ兄弟姉妹が存在し得ることが分かりました。


一人っ子かと思いきや、なんと兄弟姉妹が無限に存在するようです。

父親はいないのか?

'母'関数」というからには、「父ナントカ」が存在してもおかしくはないでしょう。


数列には非可算無限の兄弟姉妹が存在し\alphaの大小関係を年齢の上下関係に例えればいくらでも年が離れた兄が存在することになります。


よって、父親がいないことにより寂しい思いをすることは無いと思われますが、それでも存在するかどうかは気になります。


さて、Wikipediaにはこんな記述があります。


f:id:Hassium277:20200809163058p:plain
母関数 - Wikipedia


今まで母関数と呼んでいたのは「通常型母関数」というもので、他にも母関数の定義は存在するようです。


具体的には、


指数型母関数:\displaystyle\sum_{n=0}^{\infty}a_n\frac{x^n}{n!}

ポアソン母関数:\displaystyle\sum_{n=0}^{\infty}a_n\frac{e^{-x}x^n}{n!}

ランベルト級数\displaystyle\sum_{n=1}^{\infty}a_n\frac{x^n}{1-x^n}

ディリクレ級数\displaystyle\sum_{n=1}^{\infty}a_n\frac{1}{n^x}


というものがあり、これらは共通して\sum a_nF(x,n)という形をしています。


Wikipediaの記事内ではa_nに対して母関数の定義を変える(=F(x,n)を変える)ことにより異なる母関数が導かれることが書かれていますが、見方を変えれば母関数とF(x,n)を変えると異なる子数列が生まれると考えることもできます。


というわけで、F(x,n)のことを父関数と呼ぶことにします。


母関数と違って父関数には2つの変数がありますが、「有性生殖における雄と雌の役割は非対象である」「女性はY染色体を持たない」という点を考慮すると「現実を反映した妥当な定義」であると思えなくもない気がします。



さて今までは父関数としてF(x,n)=x^nとしていましたが、これを変更することで生まれてくる子数列も変わります。


例えば母関数を\frac{1}{1-2x}として父関数を\frac{x^n}{n!}とすると、テイラー展開から生成される子数列は2^nn!に変わります。


また、子数列を2^n、父関数を\frac{x^n}{n!}とした場合、母関数はe^{2x}になります。


漫画「ドラえもん」の第1話にて主人公の孫が「過去改変により主人公の結婚相手が変わっても、自分が生まれてくる可能性はある」という発言をしていましたが、数列の場合なら両親が変わっても同じ子が生まれてくることがあるようです。

孫や祖父母はいないのか?

※父関数の存在は一旦忘れて読んでください。


今まで数列と関数を別物として扱っていましたが、数列も(整数から実数への)関数とみなすことができます。


特にa_n=2^nという数列は、nに実数を代入して連続関数にすることができます。


ということは、f(x)=2^xという関数を母関数として、その子数列を考えることができます。


2^xn微分すると(\text{ln}2)^n2^xになるので、\alpha=0テイラー展開すると2^x=\displaystyle\sum_{n=0}^{\infty}\frac{(\text{ln}2)^n}{n!}x^nとなります。


ということは\frac{(\text{ln}2)^n}{n!}2^xの子数列、つまり\frac{1}{1-2x}の孫数列という事になります。


この先を計算するには\frac{(\text{ln}2)^n}{n!}微分しなければならず、私の手には負えないので一旦ここで計算をやめることにします。*4


この他にもいくつかパターンを試してみましたが、どのパターンでも途中で計算できなくなり無限に続く家系は見つかりませんでした。


というわけで、子数列の列が無限に計算できるような関数を探してみます。


具体的には、以下の式を満たす関数を求めます。


f(x)=\displaystyle\sum_{n=0}^{\infty}f(n)x^n


子数列が元の関数と等しいような関数、つまり親と子が同一であるクローンファミリーを求めます。


まず、近似値を計算して様子を見ます。


具体的には、f_k(x)=\displaystyle\sum_{n=0}^{k}f_{k-1}(n)x^nという関数列の収束の様子を観察します。


とりあえず初期値として、f_0(0)=f_0(1)=\betaと設定します。

  • f_1(x)=\beta+\beta x

f_1(0)=\betaf_1(1)=2\betaf_1(2)=3\beta

  • f_2(x)=\beta+2\beta x+3\beta x^2

f_2(0)=\betaf_2(1)=6\betaf_2(2)=15\betaf_2(3)=34\beta

  • f_3(x)=\beta+6\beta x+15\beta x^2+34\beta x^3

f_3(0)=\betaf_3(1)=56\betaf_3(2)=345\betaf_3(3)=1072\betaf_3(4)=2441\beta


...あれ?\beta=0じゃないと発散するんじゃね?


てか、f(x)=0って最初の式満たしてるんじゃね?


あっ。





...ということで、代々続くクローン名家、由緒正しき零関数一族の存在が明らかになりました。


ちなみにこの零関数一族、父関数を変えても子数列は必ずa_n=0にしかなりません。


現実で言えば、どんな男が父親になっても同じ顔の子供が生まれる一族という事になります。怖。

最後に

ここまで意図的に触れないようにしていましたが、数列を父関数にする合理的な方法は見つかりませんでした。


そのため、母関数から新たな父関数が生まれることは無く、父関数は妻をとっかえひっかえして永遠に子作りをし続ける謎の存在となってしまっています。


...おそらく、数列の家庭事情というのは我々人間の常識の範囲内で推察できるようなものではないのでしょう。


というわけで、さようなら。






*1:造語です。

*2:別の関数を場合分けで無理矢理繋げたような関数だと成り立たちませんが、今回はそのような関数は扱いません。

*3:f(x)=e^xとすると、\displaystyle\sum_{k=0}^{\infty}\frac{f^{(k+n)}(\alpha)(-\alpha)^k}{k!n!}\alphaの値に関係なく\frac{1}{n!}に収束するようです。実はe^xの収束半径は∞であり、「収束する範囲が違うから違う級数である」という理屈は通用しません。

*4:階乗を連続化した関数は存在しますが、微分係数の計算方法が分かりませんでした。 ガンマ関数 - Wikipedia