Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fibonacci

説明

fibonacci(n)nthフィボナッチ数を返します。

フィボナッチ数を求める

fibonacci を使用して 6 番目のフィボナッチ数を求めます。

fibonacci(6)
ans =
     8

フィボナッチ数の最初の 10 個を求めます。

n = 1:10;
fibonacci(n)
ans =
     1     1     2     3     5     8    13    21    34    55

フィボナッチ数列で黄金比を近似する

隣接するフィボナッチ数の比は黄金比 1.61803... に収束します。最初の 10 個のフィボナッチ数について、この比を黄金比に対しプロットすることで収束の様子を示します。

n = 2:10;
ratio = fibonacci(n)./fibonacci(n-1);

plot(n,ratio,'--o')
hold on

line(xlim,[1.618 1.618])
hold off

Figure contains an axes object. The axes object contains 2 objects of type line.

フィボナッチ数をシンボリックに表現する

フィボナッチ数をシンボリックな入力により表現することで、シンボリック演算の中で使用します。fibonacci が入力を返します。

n 番目 のフィボナッチ数を表現します。

syms n
fibonacci(n)
ans =
fibonacci(n)

大きなフィボナッチ数を求める

sym により入力をシンボリックに指定することで、大きなフィボナッチ数を求めます。シンボリックな入力は、double 型の出力の代わりにシンボリック厳密解の出力を返します。関数 double を使用してシンボリック数を double 型に変換します。

300 番目のフィボナッチ数を求めます。

num = sym(300);
fib300 = fibonacci(num)
fib300 =
222232244629420445529739893461909967206666939096499764990979600

fib300 を double に変換します。結果は浮動小数点数近似です。

double(fib300)
ans =
   2.2223e+62

シンボリック演算および倍精度演算の詳細は、数値演算またはシンボリック演算の選択を参照してください。

フィボナッチ数を用いたゴールデン スパイラル

フィボナッチ数は一般的に、フィボナッチ スパイラルをプロットすることで可視化されます。フィボナッチ スパイラルはゴールデン スパイラルを近似します。

最初の 8 つのフィボナッチ数を用いてゴールデン スパイラルを近似します。switch ステートメントを使用して、プロット内の右、上、左、下の正方形それぞれに対応する 4 つの場合分けを定義します。eqnArc の各正方形を通過する弧の方程式を定義して、スパイラルを形にします。rectanglefimplicit をそれぞれ使用して、正方形と弧を描画します。

x = 0;
y = 1;
syms v u

axis off
hold on

for n = 1:8

    a = fibonacci(n);

    % Define squares and arcs
    switch mod(n,4)
        case 0
            y = y - fibonacci(n-2);
            x = x - a;
            eqnArc = (u-(x+a))^2 + (v-y)^2 == a^2;
        case 1
            y = y - a;
            eqnArc = (u-(x+a))^2 + (v-(y+a))^2 == a^2;
        case 2
            x = x + fibonacci(n-1);
            eqnArc = (u-x)^2 + (v-(y+a))^2 == a^2;
        case 3
            x = x - fibonacci(n-2);
            y = y + fibonacci(n-1);
            eqnArc = (u-x)^2 + (v-y)^2 == a^2;
    end

    % Draw square
    pos = [x y a a];
    rectangle('Position', pos)

    % Add Fibonacci number
    xText = (x+x+a)/2;
    yText = (y+y+a)/2;
    text(xText, yText, num2str(a))

    % Draw arc
    interval = [x x+a y y+a];
    fimplicit(eqnArc, interval, 'b')

end

入力引数

すべて折りたたむ

入力。数値、ベクトル、行列または多次元配列、あるいはシンボリック数、変数、ベクトル、行列、多次元配列、関数または式として指定します。

詳細

すべて折りたたむ

フィボナッチ数

フィボナッチ数は数列 0、1、1、2、3、5、8、13、21… です。

最初の 2 つの数字を 0 と 1 とした場合、nth のフィボナッチ数は次のとおりです。

Fn = Fn–1 + Fn–2.

この公式を繰り返し適用することでフィボナッチ数が生成されます。

バージョン履歴

R2017a で導入