HOWTO · MATLAB
MATLAB フィボナッチ数列
MATLAB の fibonacci()関数を使用してフィボナッチ数を生成できます。
このページの内容
MATLAB の fibonacci() 関数を使うと、1つのフィボナッチ数を計算したり、添字のベクトルに対応する値をまとめて求めたりできます。大きな値を正確に扱うには、sym() で作成した記号添字を渡します。これらの関数を使うには Symbolic Math Toolbox が必要です。
MATLABでフィボナッチ数を1つ計算する
フィボナッチ数列では、最初の2つの値の後は、直前の2つの値を足して次の値を求めます。この記事では F₁ = 1、F₂ = 1 とするため、n ≥ 3 では Fₙ = Fₙ₋₁ + Fₙ₋₂ です。添字 n は数列の中の位置を表し、生成する値の個数ではありません。
10番目の値を求めるには、fn = fibonacci(10) と入力します。この数列の定義では、結果は 55 です。設定された実行環境では MATLAB を実行できないため、MATLAB の呼び出しは本文中に示しており、出力はここで独立に実行確認していません。
ベクトルでフィボナッチ数列を生成する
添字のベクトルを fibonacci() に渡すと、1回の呼び出しで対応する値を取得できます。最初の10個の値を求めるには、v = 1:10; fn = fibonacci(v) を使います。これにより行ベクトル [1 1 2 3 5 8 13 21 34 55] が得られます。v の各要素は数列内の位置を示し、結果の各要素は同じ位置にある添字に対応します。
この記事で示す MATLAB の式は、実行可能なコードフェンスではなく本文中に記載しています。この記事で利用できる実行環境に MATLAB がないためです。ここに挙げた値は、上記の漸化式と F₁ = F₂ = 1 の定義に基づいています。
大きなフィボナッチ数を記号表現で扱う
大きな添字に対する数値結果は、科学表記で表示され、表示桁が丸められることがあります。整数を正確に保つには、fibonacci() を呼び出す前に添字を記号にします。例: fn = fibonacci(sym(300))。比較すると、fibonacci(300) は数値としておよそ 2.2223e+62 と表示されますが、記号による呼び出しでは300番目のフィボナッチ数を正確な整数 222232244629420445529739893461909967206666939096499764990979600 として表します。
浮動小数点による近似ではなく整数全体が必要な場合は、記号表現が役立ちます。関数の詳細は MathWorks の fibonacci ドキュメントを参照してください。この記事の MATLAB の例は、設定された実行環境では実行していません。