论斐波那契数列中项数与位数的微妙关系

happy886rr
渐入佳境
渐入佳境
帖子: 45
注册时间: 2016年09月27日 16:11
拥有现金: 锁定
储蓄: 锁定
Has thanked: 14 times
Been thanked: 14 times
联系:

论斐波那契数列中项数与位数的微妙关系

帖子 #1 happy886rr » 2016年09月28日 20:04

斐波那契数列指这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...,即后一项等于之前两项之和,第0项是0,第1项是第一个1。该数列有许多众所周知的奇妙的性质,但今天,我们来探讨一个鲜未发现的新规律,用下边的py脚本可以打印出1000项的斐波那契大数。
Code: [全选] [展开/收缩] [Download] (Untitled.py)
  1. # 斐波那契数项数与位数打印
  2. print("斐波那契数Fn  项数n  位数")
  3. F1=0;F2=1;n=1
  4. while n<1000:
  5.     Fn=F1+F2;F1=F2;F2=Fn;n+=1
  6.     print(Fn,"(",n,",",len(str(Fn)),")")

仔细观察数字的末尾,你会发现一个惊人的秘密,数字末端堆积的形状像一条斜线。数字末端的位置不就是数字的长度吗,行号不就是项数吗,形状像条斜线,又遇线性关系?
非也,只是近似线性关系,如果设第一个L位的斐波那契数的项数是N,那么L与N之间存在如下美妙关系
Code: [全选] [展开/收缩] [Download] (Untitled.py)
  1. # 斐波那契-无忧公主项数定律
  2. N=ceil((L-1+0.5*math.log10(5))/math.log10((1+5**0.5)/2))
  3.  
  4. # 斐波那契位数估值
  5. L=ceil((N*math.log10((1+5**0.5)/2))-math.log10(5**0.5))

看似简单的表达式,却不好去证明,数学也难得糊涂!

24game
渐入佳境
渐入佳境
帖子: 42
注册时间: 2016年09月02日 22:09
拥有现金: 锁定
Has thanked: 3 times
Been thanked: 15 times
联系:

Re: 论斐波那契数列中项数与位数的微妙关系

帖子 #2 24game » 2016年09月29日 08:10

粗略来说, 就是用通项公式 对 10 取对数, 而对数函数在局部可近似看成线性, 二阶导数从负无穷单调增至无限趋于0, 全局无拐点

图片

happy886rr
渐入佳境
渐入佳境
帖子: 45
注册时间: 2016年09月27日 16:11
拥有现金: 锁定
储蓄: 锁定
Has thanked: 14 times
Been thanked: 14 times
联系:

Re: 论斐波那契数列中项数与位数的微妙关系

帖子 #3 happy886rr » 2016年09月29日 09:09

特征根推出的数列通项表达式只能做近似证明,所以我只能用ceil向上舍入,没想到一点误差也没有,当然这个偶然基于本福特原理可以解释,但是你很难用数学去证明ceil为何能做到一点误差都没有,斐波那契通项公式是个无理数表达式,可它产生的居然都是整数,能证明这点也就证明这个问题了。他们是等价的。

24game
渐入佳境
渐入佳境
帖子: 42
注册时间: 2016年09月02日 22:09
拥有现金: 锁定
Has thanked: 3 times
Been thanked: 15 times
联系:

Re: 论斐波那契数列中项数与位数的微妙关系

帖子 #4 24game » 2016年09月29日 11:27

为求得斐波那契数列的一般表达式,可以借助线性代数的方法。高中的初等数学知识也能求出。


中文维基 有 初等数学和高等数学的各种解法

https://zh.wikipedia.org/wiki/%E6%96%90 ... 0%E5%88%97


以下一些计算来源于 百度搜索提供的 计算器应用 !!! 精度是有限的,
log(1) = 0
log(9) ~= 0.9542425094

log(10) = 1
log(99) ~= 1.9956351946

log(100) = 2
log(999) ~= 2.9995654882

...

log(9999999999) ~= 9.9999999999566
log(9999999999) ~= 10
log(10000000000) = 10

当 log 的自变量越来越大时, 两个相差 1 的数的对数的差也越来越小, 这个差值最终会小到超出 一般计算器所能提供的精度, 从而造成位数计算发生误差, 但这是对于 自然数列[等差1 线性增长] 全集而言, 而 斐波那契数列 不是自然数数列, 其一阶导数不是线性的

对函数 Log(Fibonacci(n)) 求导, 其一阶导函数 如果随 n 的增长仍是无限趋于 0, 那么能确定对任何 精度有限的计算器, 位数计算公式最终一定会发生错误

但对无限精度计算, 位数计算公式 永远不会发生错误


回到 “Math”

在线用户

用户浏览此论坛: 没有注册用户 和 1 访客