解説

昨日の記事にアップしたことの意味について、できるだけ簡単に説明します。

かの有名なフィボナッチ数列
f_{n+2}=f_{n+1}+f_n, f_1=f_2=1…(1)
の形で定義されます。
このような式のことを漸化式といいます。
また、(1)を一般化すると、次のようになります。
\sum_{i=0}^r a_i f_{n+r-i}=0…(2)
これを難しい言葉で「定数係数 r 階線形同次差分方程式」といいます。

定数係数 r 階線形同次差分方程式において、f_n を表す式を具体的に求めることを、その差分方程式を解くといいます。
差分方程式を解く方法には色々あるのですが、特性方程式を使うのが一般的です。
特性方程式というのは、(2)で f_{n+i}x^i に置き換えた方程式のことです。
そして、特性方程式の解が分かれば、それを使って差分方程式を解くことができることが知られています。
ところが、特性方程式は、もとの差分方程式が r 階なら r 次の方程式になり、次数が5以上の方程式には一般に解の公式が存在しないことから、特性方程式を解くことができない場合が往々にしてあり得ます。
すると、特性方程式を解くことによって差分方程式を解くということができなくなってしまうわけです。
そこで、自分は考えました。特性方程式を解くとまではいかなくとも、特性方程式の各項の係数を使って差分方程式を解くことはできないかと。
実際、これは充分に可能であるように思われました。根拠があったのです。
そこで、いくつもの具体的な例について、Mathematicaを使って計算し、そこから規則性を探っていきました。
この作業は難航しましたが、少しずつですが、規則性を一つ一つ、積み上げていくことはできました。
そうして、最終的に出来上がったのが、昨日の記事に書いた公式なのです。

公式のポイントは、特性方程式を解く必要がないこともさることながら、特性方程式の解について何の制限もない、というところも重要です。
例えば、解が無理数になろうが、解が虚数になろうが、重解を持とうが、さらには解を具体的に求めることが不可能であろうが、公式を適用することができます。
ただ、実際に公式から f_n を求めるのは困難ですし、漸化式に従って計算した方がはるかに早く f_n を求めることができるため、公式に実用性は全くありません。
しかしながら、f_n を表す有限な閉じた式を具体的に書き下すことができたというところに今回の結果の意義があるのだと思っています。
以上。

あー、長くなってしまいました。
ここに書き切れなかったことについては、後々、PDFファイルで公開しようと思ってます♪
Mathematicaで何度も計算実験をしたから、合っているはず。
もちろん、近々証明もするつもりです。

ちなみに、公式をMathematicaで実装し、30番目のトリボナッチ数を求めるプログラムを書くと次のようになります。

r=3;
n=30;
s=0;
For[i=1,i<=r,i++,
t=0;
P=Partitions[n-i,r];
For[g=1,g<=Length[P],g++,
If[Length[Select[P[[g]],#>=r+1-i&]]>0,
code=(-1)^(n+i+Sum[Count[P[[g]],l],{l,1,r}]);
coef=Sum[UnitStep[i+j-r-1] Factorial[Sum[Count[P[[g]],k],{k,1,r}]-1] Count[P[[g]],j ]/(Product[Factorial[Count[P[[g]],k]],{k,1,r}]),{j,1,r}];
t+=code coef Product[If[Count[P[[g]],l]==0,1,e[l]^Count[P[[g]],l]],{l,1,r}]
]
];
s+=t f[i];
]
f[1]=f[2]=0;
f[3]=1;
e[1]=e[3]=1;
e[2]=-1;
Print[s];

実行すると、確かに「8646064」と表示されます。