4

拡張されたフィボナッチ数列(k-ナッチ数)の一般項を線形代数を使って求める

420
0

はじめに

Mathlogで フィボナッチ数を一般化したk-ナッチ数の一般項 という記事を拝見し、自分も同じようなことを別のアプローチからやっていたことを思い出したので、書いてみました。厳密なものではないのでその点はご承知ください。また、ヴァンデルモンド行列式を使った式変形が面白いので、そこだけでもぜひご覧ください。

問題

拡張フィボナッチ数の一般項

kを2以上の自然数として、次の漸化式を満たす数列{an}を拡張フィボナッチ数列と定義する。
{an+k=an+k1+an+k2++an=i=nn+k1aia0=a1==ak2=0ak1=1
拡張フィボナッチ数の一般項を求めよ。

解答

基底を求める

漸化式を満たす実数の数列のなす空間をVとする。

数列{an}の最初のka0,a1,,ak1 が与えられているので、nkにおいて数列 {an} は一意に定まる。k個のベクトルを次のように定義する。

v0={1,0,0,,0k,1,}v1={0,1,0,,0,1,}vk1={0,0,0,,1,1,}

c0,c1,,ck1に対して、c0v0+c1v1++ck1vk1=0が成り立ったとすると、
c0v0+c1v1++ck1vk1=c0{1,0,0,}+c1{0,1,0,}++ck1{0,,0,1,}={c0,c1,,ck1,}={0,0,,0,}
となるので、c0=c1==ck1=0 である。よって、v0,v1,,vk1は一次独立である。
a={a0,a1,,ak1,}
Vの勝手な元とすると、
a={a0,0,0,}+{0,a1,0,}++{0,,0,ak1,}=a0{1,0,0,}+a1{0,1,0,}++ak1{0,,0,1,}=a0v0+a1v1++ak1vk1

となり、v0,v1,,vk1 の一次結合で表せる。よって、v0,v1,,vk1Vを生成する。

以上より、v0,v1,,vk1 は一次独立かつVを生成するので、Vの基底である。

v0,v1,,vk1Vの基底である。

線形写像の定義

定義語句(任意)

写像 f:VVを以下のように定義する。

f({an}n=0)={an}n=1

a={a0,a1,a2,}Vのとき、f(a)={a1,a2,a3,}も漸化式を満たすので、f(a)Vである。

a={an}n=0Vb={bn}n=0V
とすると、定数 c に対して、

f(a+b)=f({an+bn}n=0)={an+bn}n=1={an}n=1+{bn}n=1=f(a)+f(b)f(ca)=f(c{an}n=0)=c{an}n=1=cf(a)
が成り立つので、fVの線形変換である。

fVの線形変換である。

漸化式を行列で表現

v0,v1,,vk1 に関して、

f(v0)={0,0,,0,1,}=vk1f(v1)={1,0,,0,1,}=v0+vk1f(v2)={0,1,,0,1,}=v1+vk1f(vk1)={0,0,,1,1,}=vk2+vk1
なので、

[f(v0)f(v1)f(v2)f(vk1)]=[v0 v1 v2vk1][0100000100000100000111111]
と表せる。よって、fの基底 v0,v1,,vk1 に関する表現行列は、

[0100000100000100000111111]kk
である。この表現行列をAとする。

fの基底 v0,v1,,vk1 に関する表現行列は、
A=[0100000100000100000111111]kk
である。

固有値と公比の関係

p={rn}n=0={1,r,r2,}
Vに属したとすると、

f(p)=f({rn}n=0)={rn}n=1={rn+1}n=0=r{rn}n=0=rp
より、pは固有値rの固有ベクトルになる。逆に、上の式からfの固有値 rの固有ベクトルは、公比rの等比数列になることも分かる。よって、公比と固有値は等しいとわかる。

等比数列の公比と固有値は等しい。

固有値を求める

fの固有値を求める。Aの固有多項式は、Iを単位行列として、

φk(λ)=|AλI|=|λ100000λ100000λ1000000λ1111111λ|
ここで、λ=1と仮定すると、
φk(1)=|110000011000001100000011111110|=|100000011000001100000011121110|(1列目を2列目に加える)=(i1列目をi列目に加える)=|1000000100000010000000101234k1k|(k1列目をk列目に加える)=|10000001000000100000001000000k|(i行目×ik行目に加える)=(1)k1k
より、φk(1)0なので、λ=1は固有値ではない。

1列目に沿って余因子展開すると、

φk=(1)1+1(λ)|λ1000λ1000011111λ|+(1)k+11|1000λ1000λ100001|=λφk1(1)k11=λφk1(1)k
と漸化式のように表せる。両辺を(1)kで割ると、

φk(1)k=λφk1(1)k1=λφk1(1)k11
bk=φk(1)kとおくと、λ1より、

bk=λbk11bk1λ1=λ(bk11λ1)==λk2(b21λ1)
であり、初項は、

b21λ1=φ2(1)21λ1=φ21λ1=|λ111λ|1λ1=λ2λ11λ1=λ32λ2λ1
よって、

bk1λ1=λk2λ32λ2λ1bk=λk+12λkλ1+1λ1=λk+12λk+1λ1=λkλk1λk2λ2λ1()=λki=0k1λi=i=0k(1)δikλi
が導出された。ただし、δijはクロネッカーのデルタである。また、方程式 φk(λ)=(1)kbk=0 は、bk=0bk=0と同値である。すなわち、
g(λ)=(λ1)bk=λk+12λk+1=0
λ=1以外のk個の解が求める固有値である。しかし、これは簡単に求めることはできないので、計算機などを使って求める。

Aの固有値は、方程式g(λ)=λk+12λk+1=0λ=1以外のk個の解

k 個の解を λ0,λ1,,λk1とする。また、それぞれの解に対応する固有ベクトルである等比数列を
u0={λ0n}n=0u1={λ1n}n=0uk1={λk1n}n=0
と定義する。u0,u1,,uk1Vに属する。

ここで、g(λ)=0が重解α1を持つと仮定する。このとき、g(λ)=(λα)2h(λ)と表せる。
dg(λ)dλ=2(λα)h(λ)+(λα)2dh(λ)dλ=(λα)(2h(λ)+(λα)dh(λ)dλ)
より、αdg(λ)dλ=0でも解となる。

dg(λ)dλ=(k+1)λk2kλk1={(k+1)λ2k}λk1=0
より、解はλ=2kk+1,0である。
g(2kk+1)=(2kk+1)k+12(2kk+1)k+1=(2k)k+12(2k)k(k+1)+(k+1)k+1(k+1)k+1=2k+1kk+12k+1kk(k+1)+(k+1)k+1(k+1)k+1=2k+1kk+12k+1kk+12k+1kk+(k+1)k+1(k+1)k+1=2k+1kk+(k+1)k+1(k+1)k+1=12k+1(2kk+1)k

k>1では、2k>k+1が成り立ち、g(2k/(k+1))k>1では常に負になるので、g(λ)=0の解ではない。また、g(0)=1なのでλ=0g(λ)=0の解ではない。よって、g(λ)=0λ=1以外のk個の解λ0,λ1,,λk1は全て異なる。

方程式g(λ)=λk+12λk+1=0λ=1以外のk個の解λ0,λ1,,λk1は全て異なる。

λ0,λ1,,λk1 が全て異なることより、fの相異なる固有値に対応する固有ベクトルなので一次独立である。また、dimV=k である。よって、u0,u1,,uk1Vの基底となる。

u0,u1,,uk1Vの基底である。

係数の決定

以上より、ある c0,c1,,ck1が存在して、

an=c0u0+c1u1++ck1uk1
と表せるので、

an=c0u0+c1u1++ck1uk1{a0,a1,,ak1,}=c0{λ0n}n=0+c1{λ1n}n=0++ck1{λk1n}n=0{0,0,,1,}=c0{1,λ0,,λ0k1,}+c1{1,λ1,,λ1k1,}++ck1{1,λk1,,λk1k1,}{0,0,,1,}={c0+c1++ck1, c0λ0+c1λ1++ck1λk1,,c0λ0k1+c1λk1++ck1λk1,}
これを行列で表現すると、

[1111λ0λ1λ2λk1λ02λ12λ22λk12λ0k1λ1k1λ2k1λk1k1][c1c2c3ck1]=[0001]

ヴァンデルモンド行列式

左の行列の行列式は、ヴァンデルモンド行列式 Vk であり、
Vk=|1111λ0λ1λ2λk1λ02λ12λ22λk12λ0k1λ1k1λ2k1λk1k1|=0i<jk1(λjλi)
である。

クラメルの公式を用いると、0mk1 に対して

cm=|111011λ0λ1λm10λm+1λk1λ02λ12λm120λm+12λk12λ0k1λ1k1λm1k11λm+1k1λk1k1|Vk=(1)m|0111110λ0λ1λm1λm+1λk10λ02λ12λm12λm+12λk1201λ0k1λ1k1λm1k1λm+1k1λk1k1|Vk(m)=(1)m+k1|1λ0k1λ1k1λm1k1λm+1k1λk1k10111110λ0λ1λm1λm+1λk10λ02λ12λm12λm+12λk1200λ0k2λ1k2λm1k2λm+1k2λk1k2|Vk(k1)=(1)m+k1|11111λ0λ1λm1λm+1λk1λ02λ12λm12λm+12λk12λ0k2λ1k2λm1k2λm+1k2λk1k2|Vk=(1)m+k10i<jk1imjm(λjλi)0i<jk1(λjλi)()=(1)m+k10i<jk1(i=mj=m)(λjλi)=(1)m+k10i<m(λmλi)m<jk1(λjλm)=(1)m+k10i<m(λmλi)m<jk1(1)(λmλj)=(1)m+k10i<m(λmλi)(1)km1m<jk1(λmλj)=(1)(m+k1)(km1)0i<m(λmλi)m<jk1(λmλj)=(1)2m0i<m(λmλi)m<jk1(λmλj)=10i<m,m<ik1(λmλi)
が求められる。

以上より、

an=c0u0+c1u1++ck1uk1={λ0n1ik1(λ0λi)+λ1n0i<1,1<jk1(λ1λi)++λk1n0ik2(λk1λi)}n=0={i=0k1λin0j<i,i<jk1(λiλj)}n=0

である。

一般項

以上より、一般項を求めることができた。

拡張フィボナッチ数列の一般項

S={0,1,2,,k1}とする。iSに対して、λiλk+12λk+1=0λ=1以外のk個の解とする。n0に対して、拡張フィボナッチ数列の一般項は、

an=i=0k1λin0j<i,i<jk1(λiλj)=iSλinjS{i}(λiλj)
である。

投稿日:20201230
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 問題
  3. 解答
  4. 基底を求める
  5. 線形写像の定義
  6. 漸化式を行列で表現
  7. 固有値と公比の関係
  8. 固有値を求める
  9. 係数の決定
  10. 一般項