漸化式

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

漸化式(ぜんかしき)とは、各がそれ以前の項の関数として定まるという意味で数列再帰的に定める等式。

概要[編集]

ある種の漸化式はしばしば差分方程式と呼ばれ、差分方程式という言葉を単に「漸化式」と同義なものとして扱うことも多い。
漸化式を解くとは、 添字に関する非再帰的な関数として一般項を表す式を得ることをいう。

数値解析で微分方程式の近似解を求める場合にも用いられる。例えば

dydx=3y+2

という微分方程式は、

YnYn1Δx=3Yn1+2

という漸化式で近似することができ、この結果得られるYnは、xΔx刻みで変化させた時のyの値の近似値として得ることができる。

解く上での考え方[編集]

まず漸化式を解く上で必要な前提知識だが、四則演算はもちろん、 分数指数累乗階乗なども登場する漸化式があるのでここら辺は押さえておきたい。 総和(Σ)も必須と言っても過言ではないだろう。対数総積(Π)、行列ベクトルを使うと便利なものもある。

また、特性方程式なる式も多々登場するが、この式は別の簡単な形に帰着させるための手法を定型化したようなものである。 なので、突き詰めれば特性方程式を知らずともよく意味を考えることで解けるが、公式のように覚えると楽だというものである。

そして、この「別の簡単な形に帰着させる」・「既知の方法に書き換える」という考え方は大変重要である。 何故なら、漸化式を解くのは微分方程式を解くように複雑で汎用的な方法はないし、複雑な場合は解ける保証もない。 行列のn乗のように複雑さを別のところに丸投げするというのもあるが、これも行列という研究されている別分野の問題に帰着させているのである。

解法[編集]

以下の様々な漸化式の解法を示していく。
Anを求める数列として、とくに断りのない限りnは1から始めるとする。 初期値などの定数は小文字で書いて、計算の仮定で導入する数列は大文字で書いて、両者を区別する。
また、ある漸化式は他の漸化式を包含している。 以下ではとくに断りのない限り一般の係数対してに解いているが、実際には特定の係数ではより簡単に解く方法もある。 例えば、階差数列で解いている数列は、係数を特定の値にすれば等差数列も表している。そのようなときは等差数列の解法で解いた方が簡単だろう。

等差数列[編集]

  • An+1=An+d
  • A1=a(初期値)

この形の漸化式で表される数列は、初項a,公差dの等差数列と呼ばれる。

An=A1+k=2n(AkAk1)((k=2nAk1)+An=A1+(k=2nAk))=a+k=2nd=a+(n1)d

等比数列[編集]

  • An+1=rAn
  • A1=a(初期値)

この形の漸化式で表される数列は、初項a,公比rの等比数列と呼ばれる。
a=0のときは常に0になるので、a≠0とする。また、r=0のとき第二項以降が常に0になるので、r≠0とする。

正攻法[編集]

An=A1k=2nAkAk1((k=2nAk1)An=A1(k=2nAk))=ak=2nr=arn1

対数を使う解法 [編集]

数列がAnが常に正(つまりa>0かつr>0)ならば対数を取ることで、等差数列に帰着できる。(とはいえ、そこまでするほど難しくないのでほとんどしない。)
つまり、

Bn=log(An)

を導入すると、

  • Bn+1=Bn+log(r)
  • B1=log(a)(初期値)

となって、これは、初項log(a),公差log(r)の等差数列であるので、

Bn=log(a)+(n1)log(r)

対数を戻して、

An=arn1

よって、上記の解法と答えが一致する。

階差数列[編集]

  • An+1=An+(pn+q)
  • A1=a(初期値)

この形の漸化式で表される数列は、階差数列と呼ばれる。

An=A1+k=2n(AkAk1)((k=2nAk1)+An=A1+(k=2nAk))=a+k=2n(pk+q)=a+pk=2nk+qk=2n1=a+p(n(n+1)21)+q(n1)=a+p(n2+n22)+q(n1)

より一般には、

  • An+1=An+f(n)
  • A1=a(初期値)

に対して、

An=A1+k=2n(AkAk1)((k=2nAk1)+An=A1+(k=2nAk))=a+k=2nf(n)

であって、f(n)の総和が求まるならば解が出る。

階比数列[編集]

  • An+1=pnAn
  • A1=a(初期値)

この形の漸化式で表される数列は、階比数列と呼ばれる。
a=0のときは常に0になるので、a≠0とする。また、p=0のとき第二項以降が常に0になるので、p≠0とする。

An=A1k=2nAkAk1((k=2nAk1)An=A1(k=2nAk))=ak=2npn=apn1n!

より一般には、

  • An+1=f(n)An
  • A1=a(初期値)

に対して、(やはり、a=0のときは常に0になるので、a≠0とする。また、f(n)=0になるようなnが存在すれば、それ以降は0になるのでそうでない範囲を考える。)

An=A1k=2nAkAk1((k=2nAk1)An=A1(k=2nAk))=ak=2nf(n)

であって、f(n)の総積が求まるならば解が出る。

2項間漸化式[編集]

  • An+1=pAn+q
  • A1=a(初期値)

特性方程式

x=px+q

を解いて、その解をαとおく。 p=1のときは等差数列なのでp≠1として

α=q1p

よって、

An+1α=p(Anα)

ここで、

Bn=Anα

を導入すると、

  • Bn+1=pBn
  • B1=aα(初期値)

となって、これは、初項(a-α),公比pの等比数列であるので、

Bn=(aα)pn1

Anに戻して、

An=(aα)pn1+α

αをp,qに戻せば、

An=(aq1p)pn1+q1p

3項間漸化式[編集]

  • An+2=pAn+1+qAn
  • A1=a,A2=b(初期値)

フィボナッチ数列は3項間漸化式の例である。

特性方程式を使う解法[編集]

特性方程式

x2=px+q

を解いて、その解をα,βとおく。(重解の場合はαのみ。)

α,β=p±p2+4q2

よって、

  • An+2αAn+1=β(An+1αAn)
  • An+2βAn+1=α(An+1βAn)

ここで、

  • Bn=An+1αAn
  • Cn=An+1βAn

を導入すると、

  • Bn+1=βBn
  • B1=A2αA1=bαa(初期値)
  • Cn+1=βCn
  • C1=A2βA1=bβa(初期値)

となって、Bn,Cnともに等比数列に帰着する。よって、

  • Bn=(bαa)βn1
  • Cn=(bβa)αn1

Anに戻して、

  • An+1=αAn+(bαa)βn1
  • An+1=βAn+(bβa)αn1

重解でないとき(p2+4q0)は、2式の差より

(αβ)An=(bβa)αn1(bαa)βn1

よって、

An=(bβa)αn1(bαa)βn1αβ

一方で、以上の方法は重解のとき(p2+4q=0)にα=βとなるので0割りになってしまい使えない。 そのため、重解のときは

  • An+1=αAn+(bαa)αn1

を累乗を含む漸化式として再度解く必要がある。

行列を使う解法[編集]

An+2=pAn+1+qAn

より

  • An+2=pAn+1+qAn
  • An+1=1An+1+0An

を連立漸化式とみなして、行列を用いた解法に帰着できる。(連立漸化式を3項間漸化式に帰着させる方法もあるが、こちらは循環してしまうので注意。)

(An+2An+1)=(pq10)(An+1An)

よって、

(An+1An)=(pq10)n1(ba)

n項間漸化式[編集]

  • An+3=pAn+2+qAn+1+rAn
  • A1=a,A2=b,A3=c(初期値)

上記は、4項間漸化式で、3項間漸化式をさらに拡張したような形式である。 このようなn項間漸化式を解く際には、3項間漸化式の行列を使う解法と同様の方法が使える。

An+3=pAn+2+qAn+1+rAn

より

  • An+3=pAn+2+qAn+1+rAn
  • An+2=1An+2+0An+1+0An
  • An+1=0An+2+1An+1+0An

を連立漸化式とみなして、行列を用いた解法に帰着できる。

(An+3An+2An+1)=(pqr100010)(An+2An+1An)

よって、

(An+2An+1An)=(pqr100010)n1(cba)

なお、n項間漸化式で使用する行列は(n-1)次の正方行列になるので、nが増加すると問題は複雑になっていく。

累乗を含む漸化式[編集]

  • An+1=pAn+qrn
  • A1=a(初期値)

r=0のときは等比数列なのでr≠0として、rn+1で割って、

An+1rn+1=prAnrn+qr

ここで、

Bn=Anrn

を導入すると、

Bn+1=prBn+qr

となって、これは、p=rのときには等差数列、p≠rのときは(累乗を含まない)2項間漸化式の形になるので、それぞれの解法に帰着できる。 そうして得たBnrnをかければ、Anが得られる。

階乗を含む漸化式[編集]

  • An+1=pnAn+q(n!)
  • A1=a(初期値)

n!で割って、

An+1n!=pAn(n1)!+q

ここで、

Bn=An(n1)!

を導入すると、

Bn+1=pBn+q

となって、これは、p=1のときには等差数列、p≠1のときは(階乗を含まない)2項間漸化式の形になるので、それぞれの解法に帰着できる。 そうして得たBnに(n-1)!をかければ、Anが得られる。

分数型の漸化式1[編集]

  • An+1=AnpAn+q
  • A1=a(初期値)

数列がAnが常に非零ならば逆数を取ることで、等差数列あるいは2項間漸化式に帰着できる。
つまり、

Bn=1An

を導入すると、

  • Bn+1=qBn+p
  • B1=1a(初期値)

となって、これはq=1のときは等差数列、q≠1のときは2項間漸化式の形になるので、それぞれの解法に帰着できる。 そうして得た Bnの逆数を取ることで、Anが得られる。

分数型の漸化式2[編集]

  • An+1=An+pqAn+r
  • A1=a(初期値)

q=0かつr=1のときは等差数列、q=0かつr≠1のときは2項間漸化式なので、q≠0とする。
特性方程式

x=x+pqx+r(つまり、qx2+(r1)xp=0)

を解いて、その解をα,βとおく。(重解の場合はαのみ。)

α,β=1r±(1r)2+4pq2q

よって、

An+1α=(1αq)(Anα)q(Anα)+(r+qα)

(ここではαを使用したが、αβのどちらでも可)
ここで、

Bn=Anα

を導入すると、

Bn+1=(1αq)BnqBn+(r+qα)

となって、分母分子を(1αq)で割ると、分数型の漸化式1 に帰着できる。そうして得た Bnαを加えることで、Anが得られる。

次数の異なる漸化式[編集]

  • An+1=p(An)q
  • A1=a(初期値)

数列がAnが常に正(つまりa>0かつp>0)ならば対数を取ることで、等差数列に帰着できる。
つまり、

Bn=log(An)

を導入すると、

  • Bn+1=qBn+log(p)
  • B1=log(a)(初期値)

となって、これはp=1のときは等比数列、p≠1のときは2項間漸化式の形になるので、それぞれの解法に帰着できる。 そうして得た Bnを対数から戻して、Anが得られる。

連立漸化式[編集]

  • An+1=pAn+qBn(1)式
  • Bn+1=rAn+sBn(2)式
  • A1=a,B1=b(初期値)

行列を使う解法[編集]

上の様な漸化式は、行列を使うと次の様に書ける。

(An+1Bn+1)=(pqrs)(AnBn)

この式は、行列の等比数列の様な式になっているので、数の等比数列と同じ様に、次の式で解くことができる。

(AnBn)=(pqrs)n1(ab)

行列のn乗を(一般的に)求める方法として、対角化などがある。

3項間漸化式などに帰着する解法[編集]

q=0のときは(1)式についてAnを等比数列として解いて、その結果を(2)式に代入してBnを累乗を含む漸化式として解ける。
同様に、r=0のときもAnBnを逆にして求まる。
q≠0かつr≠0のときは、(1)式より

An+1=pAn+qBn

より

Bn=1qAn+1pqAn

これを(2)式に代入して

1qAn+2pqAn+1=rAn+sqAn+1psqAn

整理して、

1qAn+2=s+pqAn+1+rqpsqAn
An+2=(s+p)An+1+(rqps)An

となって、これは3項間漸化式に帰着する。
AnBnを逆にして同様の計算を実行することにより、Bnも3項間漸化式に帰着する。

  • An+2=(s+p)An+1+(rqps)An
  • Bn+2=(s+p)Bn+1+(rqps)Bn

ここで、AnBnで漸化式は同じになっていて、初期値だけが違うことがわかる。 なお、3項間漸化式を解くには最初の2項が初期値として必要なので、第2項は漸化式から計算しておく必要がある。 そして、3項間漸化式の係数は行列 R=(pqrs)(行列なので慣例的に大文字で表記した) のトレース行列式になっていることがわかる。
つまり、

  • An+2=tr(R)An+1det(R)An
  • Bn+2=tr(R)Bn+1det(R)Bn

2つの等比数列に帰着する解法[編集]

r=0のときは、3項間漸化式などに帰着する解法 に記した通りなのでr≠0とする。
連立特性方程式

  • p+rx=y
  • q+sx=xy

を解いて、(x,y)=(α,β)とおく。
上の式を下に代入して、

q+sx=x(p+rx)(つまり、rx2+(ps)xq=0)

よって、

α=sp±(sp)2+qr2r((sp)2+qr≠0であり重解でないとする)

したがって、

(α,β)=(sp±(sp)2+qr2r,p+rsp±(sp)2+qr2r)(複号同順)

よって、((α,β)の複号を添え字として)

  • An+1+α+Bn+1=β+(An+α+Bn)
  • An+1+αBn+1=β(An+αBn)

ここで、

  • Cn=An+α+Bn
  • Dn=An+αBn

を導入すると、

  • Cn+1=β+Cn
  • C1=A1+α+B1=a+α+b(初期値)
  • Dn+1=βDn
  • D1=A1+αB1=a+αb(初期値)

となって、Cn,Dnともに等比数列に帰着する。よって、

  • Cn=(a+α+b)β+n1
  • Dn=(a+αb)βn1

An,Bnに戻して、

  • An+α+Bn=(a+α+b)β+n1
  • An+αBn=(a+αb)βn1

2式の差より(先に重解でないと仮定したが、重解だとここで0割りになる)

Bn=(a+α+b)β+n1(a+αb)βn1α+α

また、Bnを消去して

An=α(a+α+b)β+n1α+(a+αb)βn1αα+

また、対称性からAn,Bnを逆にするような解き方でも同様。 (つまり、連立特性方程式の段階からAn,Bnや係数がすべて入れかえた解き方。)

応用[編集]

漸化式は数(実数や複素数)だけでなく、#解法の連立漸化式のようにベクトルの間にも考えられた。 さらには、関数多項式、行列の間にも同様の考え方ができる。

エルミート多項式[編集]

エルミート多項式Hn(x)=(1)nex2dndnxex2は、漸化式

  • Hn+1(x)=2xHn(x)2nHn1(x)
  • ddxHn(x)=2nHn1(x)
  • ddxHn(x)=2xHn(x)Hn+1(x)

を満たす。 多項式の漸化式なので、四則演算だけでなく微分演算も使用できる。

ルジャンドル多項式[編集]

ルジャンドル多項式 Pn(x)=2nk=0nxk(nk)(n+k+12n) は、ボネの漸化式

  • (n+1)Pn+1(x)=(2n+1)xPn(x)nPn1(x)

を満たす。

二項係数[編集]

二項係数(nk)=n!k!(nk)!のnを固定してkについて数列とみると、漸化式

  • (nk)=n+1kk(nk1)

を満たす。 他にも

  • (nk)=(n1k1)+(n1k)(パスカルの法則)
  • (nk)=nk(n1k1)
  • n2kn(nk)=(n1k)(n1k1)

などを満たす。

指数タワー[編集]

漸化式

  • An+1=aAn
  • A1=a(初期値)

は、指数にAnがある形である。
この解は、入れ子構造になって指数タワー(タワー関数)になる。

An=aan...(n回の累乗)

このタワー関数はa=2などでは指数や階乗に比べて急速に増大する。

コラッツ予想[編集]

コラッツ予想は、任意の正の整数nに対して、 nが偶数ならnを2で割り、 nが奇数ならnに3を掛けて1を足す。 このとき、どんな初期値nから始めても有限回の操作ので1に到達する(そして1→4→2→1というループに入る)という予想である。

これを漸化式で表せば、

  • An+1={An2if An03An+1if An1(mod2)

は、 任意の初期値A1=aに対して、AN=1を満たすようなNが存在するということである。 (このとき、1→4→2→1というループになることは明らか)

ここで、「Anが奇数ならAnに3を掛けて1を足す」についてだが、Anが奇数なら3An+1は偶数なので、 An+1は偶数になって次の処理は偶数の「Anが偶数ならAnを2で割る」である。 また、コラッツ予想は途中の値ではなく最終的に1に到達するかが重要なので、途中の値をショートカットしても良さそうである。
よって、コラッツ予想はショートカットした形式の

  • An+1={An2if An03An+12if An1(mod2)

と書ける。(上記の漸化式とは個々の項は対応していないので注意。ループも4がスキップされて、1→2→1になる)

だた、この漸化式は場合分けが入っていてそのまま解けそうにはない。そこで漸化式の書き換えを試みよう。
Anが偶数のときに上の処理、奇数のときに下の処理を実行する漸化式にしたいので、

  • An+1=(1Bn)An2+Bn3An+12
  • Bn={0if An01if An1(mod2)

とすれば良い。ここで、以上のようなBnの例としてBn=1(1)An2などがある。 この例で、漸化式を整理すると

  • An+1=12(An+2AnBn+Bn)
  • Bn=1(1)An2

となる。
ここで、上の式はBnにかかわらず成立する式である。 一方で下の式はBnに依存し、指数にAnがある形であり解くことが困難である。

しかしながら、この方法では初期値を任意の正の整数に限る必要がなくなる。なぜなら偶数や奇数といった表現を使っていないからである。 そのため、整数に限らず複素数全体を初期値にすることができる。さらに行列指数関数を利用することで正方行列も入れることができる。

関連項目[編集]