5

z変換:フィボナッチ数列の一般項を求める。

204
0

目的

フィボナッチ数列の一般項をz変換を使って求める。

定義

解法に進む前に準備としていくつか定義を述べる。

z変換

0以上の整数nに対して定義されたf(n)についてz変換を
Z[f(n)]:=n=0f(n)zn(zC)
と定義する。ただしz|n=0f(n)zn|<を満たす。またこの条件を満たす領域を収束領域と呼ぶ。

離散デルタ関数

δ(n):={1(n=0)0(n0)ただしn0以上の整数

単位階段関数

u(n):=k=0δ(nk)ただしn0以上の整数

この定義から単位階段関数は以下の性質をもつことがわかる。

単位階段関数のシフト則

u(nl)=u(n)k=0l1δ(nk)ただしn,l0以上の整数でnl

単位階段関数の定義から
u(nl)=k=0δ((nl)k)=k=0δ(n(l+k))ここでm=l+kとおいて
u(nl)=m=lδ(nm)=m=0δ(nm)m=0l1δ(nm)ここでmkに置き換えて
u(nl)=k=0δ(nk)k=0l1δ(nk)=u(n)m=0l1δ(nk)となり示された。

解法

フィボナッチ数列

n番目のフィボナッチ数をf(n)としたとき漸化式は
f(n):={0(n=0)1(n=1)f(n1)+f(n2)(n2)で与えられる。ただしn0以上の整数

漸化式に初期値を埋め込む

与えられたf(n)は離散デルタ関数と単位階段関数を使って
f(n)=f(0)δ(n)+f(1)δ(n1)+{f(n1)+f(n2)}u(n2)とあらわせる。離散デルタ関数と単位階段関数を使って漸化式に初期値が埋め込まれている。
ここでu(n2)は単位階段関数の性質から
u(n2)=u(n11)=u(n1)k=00δ(n1k)=u(n1)δ(n1)なので、f(n)
f(n)=f(0)δ(n)+f(1)δ(n1)+f(n1)u(n2)+f(n2)u(n2)=f(0)δ(n)+f(1)δ(n1)+f(n1){u(n1)δ(n1)}+f(n2)u(n2)=f(0)δ(n)+f(1)δ(n1)+f(n1)u(n1)f(n1)δ(n1)+f(n2)u(n2)=f(0)δ(n)+f(1)δ(n1)f(n1)δ(n1)+f(n1)u(n1)+f(n2)u(n2)となる。

z変換

f(n)z変換する。z変換の線形性、シフト則、および離散デルタ関数のz変換を適用して
F(z)=Z[f(n)]=f(0)+f(1)z1f(0)z1+z1F(z)+z2F(z)を得る。式を整理して
F(z)=f(0)+{f(1)f(0)}z11z1z2=f(0)z2+{f(1)f(0)}zz2z1
f(n)z変換が得られた。
部分分数分解する前に両辺をzで割る。
F(z)z=f(0)z+{f(1)f(0)}z2z1

部分分数分解

右辺をヘビサイドの展開定理をもちいて部分分数分解する。分母の多項式z2z1の2つの解をα,βとおくと
F(z)z=Azα+Bzβ ただし
A=limzα(zα)F(z)z=limzαf(0)z+{f(1)f(0)}zβ=f(0)α+{f(1)f(0)}αβ=1αβB=limzβ(zβ)F(z)z=limzβf(0)z+{f(1)f(0)}zα=f(0)β+{f(1)f(0)}βα=1βα=1αβ両辺にzを掛けて整理して
F(z)=Azzα+Bzzβ=1αβ(zzαzzβ)
収束領域は|z|>max(α,β)

z変換

両辺を逆z変換する。
f(n)=1αβ(αnβn)=αnβnαβここでα=1+52,β=152を代入して
f(n)=15((1+52)n(152)n)
フィボナッチ数列の一般項が得られた。この公式はビネの公式と呼ばれる。

参考文献

投稿日:2020129
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

zeta
34
3994

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 目的
  2. 定義
  3. 解法
  4. 漸化式に初期値を埋め込む
  5. z変換
  6. z変換
  7. 参考文献