メインコンテンツ

fibonacci

説明

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

すべて折りたたむ

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

f = fibonacci(6)
f = 
8

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

n = 1:10;
f = fibonacci(n)
f = 1×10

     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

yline(1.61803)
hold off

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

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

nth のフィボナッチ数を表現します。

syms n
f = fibonacci(n)
f = fibonacci(n)

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

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

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

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

f300double = double(f300sym)
f300double = 
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

Figure contains an axes object. The hidden axes object contains 24 objects of type rectangle, text, implicitfunctionline.

入力引数

すべて折りたたむ

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

詳細

すべて折りたたむ

バージョン履歴

R2017a で導入