斐波那契数列计算器
输入 n,即可得到第 n 个斐波那契数,并以精确的整数表示——甚至是 F(100000),它有 20,899 位。除此之外,您还能得到与精确结果核对过的比内闭式公式、相邻项之比趋近黄金比例的过程,以及您所选任意一段数列的表格。免费,无需注册,在您的浏览器中运行。
0 至 100,000 之间的整数。F(0) = 0,F(1) = 1。
结果
354224848179261915075
F(100)
21
位数
比内公式
F(n) = (φⁿ − ψⁿ) ÷ √5,其中 φ = (1 + √5) ÷ 2 ≈ 1.6180339887,ψ = (1 − √5) ÷ 2 ≈ −0.6180339887。由于 |ψ| < 1,第二项会逐渐消失,因此 F(n) 就是 φⁿ ÷ √5 四舍五入到最近的整数。
φ^100 ≈ 7.920708398E20
ψ^100 ≈ 1.262513338E-21
φ^100 ÷ √5 ≈ 3.542248482E20
(φ^100 − ψ^100) ÷ √5,按双精度运算四舍五入 = 354224848179263111168
这与精确的 F(100) = 354224848179261915075 不同。双精度数大约保留 16 位有效数字,因此普通浮点运算下的比内公式从 n 约 70 起就会偏离。此处的精确数值采用整数运算得出。
相邻项之比
随着 n 增大,F(n + 1) ÷ F(n) 趋近于黄金比例 φ,并在其上下交替。
φ = 1.618033988749894848204586834365……
F(101) ÷ F(100) = 1.618033988749894848204586834365……
这些值在前 30 位小数上与 φ 一致。
数列
最多 100 项。
| n | F(n) | F(n + 1) ÷ F(n),截取到 10 位 |
|---|---|---|
| 0 | 0 | — |
| 1 | 1 | 1.0000000000 |
| 2 | 1 | 2.0000000000 |
| 3 | 2 | 1.5000000000 |
| 4 | 3 | 1.6666666666 |
| 5 | 5 | 1.6000000000 |
| 6 | 8 | 1.6250000000 |
| 7 | 13 | 1.6153846153 |
| 8 | 21 | 1.6190476190 |
| 9 | 34 | 1.6176470588 |
| 10 | 55 | 1.6181818181 |
| 11 | 89 | 1.6179775280 |
| 12 | 144 | 1.6180555555 |
| 13 | 233 | 1.6180257510 |
| 14 | 377 | 1.6180371352 |
| 15 | 610 | 1.6180327868 |
| 16 | 987 | 1.6180344478 |
| 17 | 1597 | 1.6180338134 |
| 18 | 2584 | 1.6180340557 |
| 19 | 4181 | 1.6180339631 |
如何使用斐波那契数列计算器
- 1. 输入 n。 0 至 100000 之间的任意整数。工具采用的编号为 F(0) = 0、F(1) = 1、F(2) = 1、F(3) = 2。
- 2. 读取 F(n)。 结果会连同位数一起显示。超过 40 位时,卡片显示首尾数字,复制全部数字会复制每一位。
- 3. 比较各个公式。 比内部分把 φⁿ、ψⁿ 以及四舍五入后的结果与精确的项并列显示,让您看到浮点运算从何时起不再可靠。比率部分把 F(n + 1) ÷ F(n) 精确到 30 位小数,并与 φ 并列显示。
- 4. 列出各项。 在数列部分,选择起始项以及要显示的项数(最多 100 项),即可得到 F(n) 及各比值 F(n + 1) ÷ F(n) 的表格。
什么是斐波那契数列
每一项都是它前面两项之和:F(n) = F(n − 1) + F(n − 2),从 0、1 开始:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144。比萨的列奥纳多(斐波那契)在《算盘书》(Liber Abaci,1202 年)中用它来模拟兔子的繁殖,不过这些数字在印度关于诗律的著作中已经出现过。有些书从 F(1) = F(2) = 1 开始,省略 F(0);数值相同,只是位置编号不同。
一些值得了解的恒等式:前 n 项之和为 F(1) + F(2) + … + F(n) = F(n + 2) − 1(1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 = 143 = F(12) − 1);每三项中有一个是偶数;只要 m 整除 n,F(m) 就整除 F(n);而卡西尼恒等式说 F(n − 1)·F(n + 1) − F(n)² = (−1)ⁿ。
比内公式及其局限
比内公式直接给出 F(n):F(n) = (φⁿ − ψⁿ) ÷ √5,其中 φ = (1 + √5) ÷ 2,ψ = (1 − √5) ÷ 2。由于 ψ 约为 −0.618,ψⁿ 会缩小并趋近于 0,因此 F(n) 就是 φⁿ ÷ √5 四舍五入到最近的整数。对于 n = 10,φ10 ≈ 122.9919,ψ10 ≈ 0.0081,(122.9919 − 0.0081) ÷ 2.2361 = 55。
为什么本计算器不直接使用比内公式
普通计算器或电子表格只保存约 16 位有效数字。在双精度浮点运算中,比内公式在 n = 71 时首次出错,得到 308061521170130,而真实的 F(71) 为 308061521170129,并且误差会随之增大。本工具使用精确的整数运算来计算各项(采用快速倍增恒等式 F(2k) = F(k)(2F(k+1) − F(k)) 与 F(2k+1) = F(k)² + F(k+1)²),并且只把比内公式作为比较展示。
黄金比例
将每一项除以前一项,结果会逼近 φ = 1.6180339887…,即黄金比例。它们围绕 φ 上下摆动——2、1.5、1.667、1.6、1.625、1.615……——并且每个比值都比上一个更接近。在 20 项之后,F(21) ÷ F(20) = 10946 ÷ 6765,与 φ 在小数点后 7 位一致;F(41) ÷ F(40) 在 16 位一致;F(101) ÷ F(100) 则在计算器显示的全部 30 位上都一致。原因与比内公式相同:F(n + 1) ÷ F(n) ≈ φⁿ⁺¹ ÷ φⁿ = φ。
示例:F(100)
F(100) = 354224848179261915075 (21 位) 按公式算出的位数:⌊100 × 0.20898764 − 0.34948500⌋ + 1 = 21 F(101) ÷ F(100) = 1.618033988749894848204586834365…
常见问题
- 第 100 个斐波那契数是多少?
- F(100) = 354,224,848,179,261,915,075,是一个 21 位数。这里采用 F(0) = 0、F(1) = 1 的约定。如果您的来源从 1, 1, 2, 3, …… 开始编号,那么它的第 100 项也是 F(100);只有去掉开头那个 1 的来源,位置才会相差一位。
- 不列出每一项,如何求第 n 个斐波那契数?
- 小的 n 可以用比内公式;要得到精确结果,则可用快速倍增:它用 F(n ÷ 2) 与 F(n ÷ 2 + 1) 只需几次乘法即可构造出 F(n),因此即使是 F(100000) 也只需约 17 次倍增。逐项相加也可以,但需要 n 步。
- 斐波那契数列从 0 还是从 1 开始?
- 两种约定都在使用。数学上通常从 F(0) = 0、F(1) = 1 开始(本计算器采用这种方式)。许多教科书和谜题从 1, 1 开始。起始之后的各项是相同的,因此在比较答案之前,请先确认您的问题所用的编号。
- 斐波那契数列与黄金比例有什么关系?
- 相邻项之比 F(n + 1) ÷ F(n) 趋向于 φ = (1 + √5) ÷ 2 ≈ 1.618034。反过来,φⁿ ÷ √5 与 F(n) 相差不超过 0.5,这就是比内公式。工具中的表格显示了这些比值的收敛过程。
- 为什么比内公式给出整数?
- 无理部分会精确抵消:φⁿ 与 ψⁿ 互为共轭,因此它们的差是 √5 的倍数。然而在浮点运算中,φⁿ 会被舍入,从 n 约为 71 起,舍入误差超过 0.5,答案就会偏差一或更多。
- F(n) 有多少位?
- 约为 0.2090 × n 位:精确地说,对于 n ≥ 2 为 ⌊n·log₁₀φ − log₁₀√5⌋ + 1。因此 F(1000) 有 209 位,F(100000) 有 20,899 位。
- 还有其他数列遵循同样的规则吗?
- 有。任何两个起始值加上“每项等于前两项之和”的规则,都会得到一个类斐波那契数列;从 2 和 1 开始则得到卢卡斯数 2, 1, 3, 4, 7, 11, 18。所有这类数列的相邻项之比也都趋近于 φ。您可以在数列求解器中尝试自己的数列。