主要内容

fibonacci

斐波那契数

说明

f = fibonacci(n) 返回第 n斐波那契数

示例

示例

全部折叠

使用 fibonacci 求第六个斐波那契数。

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 返回该输入。

表示第 n 个斐波那契数。

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

通过使用 sym 以符号形式指定输入来求大斐波那契数。符号输入会返回精确的符号输出,而非双精度输出。使用 double 函数将符号数转换为双精度数。

求第 300 个斐波那契数。

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

fib300 转换为双精度数。结果是一个浮点近似值。

f300double = double(f300sym)
f300double = 
2.2223e+62

有关符号算术和双精度算术的详细信息,请参阅Choose Numeric or Symbolic Arithmetic

斐波那契数通常通过绘制斐波那契螺旋来可视化。斐波那契螺旋逼近黄金螺旋。

为前 8 个斐波那契数逼近黄金螺旋。使用 switch 语句定义图中右侧、顶部、左侧和底部正方形的四种情况。通过在 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 中推出