zoukankan      html  css  js  c++  java
  • 斐波那契

    fbnq.jpg

    斐波那契数-计算-分析

    斐波那契数列((Fibonacci sequence)),由意大利数学家 莱昂纳多·斐波那契 的名字命名,原因是他在看到发情的兔子并充分发挥想象力后提出了这个数列

    该数列具有优秀的性质,如在 (n) 很大时,(largefrac{F_{n+1}}{F_n} approx phi)(largedisplaystyle lim_{n o +infty}frac{F_{n+1}}{F_n}=phi)

    (phi) 为黄金分割数,(large 1.61803398874989484819719595255086212205106635745185384\ large53723187601229582821971784348083863296133320592 ...)

    用途挺多的,比如斐波那契查找(二分查找的一种改进),斐波那契堆等

    斐波那契数列定义为

    [large F_n= egin{cases} 0, &(n=0)\ 1, &(n=1)\ F_{n-1} + F_{n-2} &(n > 1) end{cases} ]

    通项公式&性质

    通项公式(性质一)

    (n) 个斐波那契数可以表示为

    [large F_n = frac{phi^n - hat{phi}^n}{sqrt{5}} ]

    (hat{phi})(phi) 的共轭数,二者是 (x^2 = x+1) 的两个根

    所以这玩意的增长是指数级

    证明

    顺推法

    [large{} egin{aligned} &F_0=0=frac{1-1}{sqrt{5}}\ \ &F_1=1=frac{sqrt{5}}{sqrt{5}} end{aligned} ]

    这两个玩意满足通项公式

    接下来,假设,(F_{k-1},F_k) 满足通项公式

    则有

    [large egin{aligned} &F_{k-1}=frac{phi^{k-1}-hat{phi}^{k-1}}{sqrt{5}}\ \ &F_{k}=frac{phi^{k}-hat{phi}^{k}}{sqrt{5}} end{aligned} ]

    so

    [large egin{aligned} F_{k+1} &=F_{k-1}+F_k\ \ &=frac{phi^{k-1}-hat{phi}^{k-1}}{sqrt{5}} +frac{phi^{k}-hat{phi}^{k}}{sqrt{5}}\ \ &=frac{(phi^{k-1} + phi^k) - (hat{phi}^{k-1} + hat{phi}^k)}{sqrt{5}}\ \ &=frac{phi^{k+1} - hat{phi}^{k+1}}{sqrt{5}} end{aligned} ]

    这里为什么 ((phi^{k-1} + phi^k) - (hat{phi}^{k-1} + hat{phi}^k)) 直接变成了 (phi^{k+1} - hat{phi}^{k+1}) 呢?

    注意,(phi)(hat{phi}) 满足方程 (x^2=x+1),因此

    [large egin{aligned} &phi^2 = phi+1, hat{phi}^2 = hat{phi}+1\ \ &phi^3 = phi^2+1, hat{phi}^3 = hat{phi}^2+1\ \ &......\ \ &phi^{k+1} = phi^k+phi^{k-1}, hat{phi}^{k+1} = hat{phi}^k+phi^{k-1}\ end{aligned} ]

    也可以算特征方程:
    对于一个数列

    [large{x_{n+2}=c_1x_{n+1}+c_2x_n} ]

    设有 (r,s) 使:

    [large{x_{n+1}-rx_{n+1}=s(x_{n+1}-rx_n)} ]

    (不要被 (r,s) 所迷惑,这样的等式一定存在)

    [large egin{aligned} &x_{n+2}=(r+s)x_{n+1}-srx_n\ &c_1=r+s,c_2=-sr end{aligned} ]

    消去 (s) 得出特征方程式:

    [large{r^2=rc_1+c_2} ]

    真经

    https://www.zhihu.com/question/25217301 回答二,实在不行看回答三

    性质二

    接下来证明上文提到的一个小(大)性质

    [largedisplaystyle lim_{n o +infty}frac{F_{n+1}}{F_n}=phi ]

    证明

    因为

    [large{ |hat{phi}|=|frac{1-sqrt{5}}{2}|<1\ \ displaystylelim_{n o+infty}hat{phi}^n=hat{phi}^{n+1}=0 } ]

    so

    [large{} egin{aligned} displaystylelim_{n o+infty}frac{F_{n+1}}{F_n} &=lim_{n o+infty}frac{phi^{n+1}-hat{phi}^{n+1}}{phi^n-hat{phi}^n}\ \ &=frac{phi^{n+1}}{phi^n}\ \ &=phi end{aligned} ]

    性质三

    (large F_{n+1} geq phi^{n-1})

    个人认为,从这里也可以看出斐波那契数的指数级增长

    证明

    顺推

    [large{ egin{aligned} &F_{n+1} =frac{phi^{n+1} - hat{phi}^{n+1}}{sqrt{5}}\ \ &frac{phi^{n+1} - hat{phi}^{n+1}}{sqrt{5}} geq phi^{n-1}\ \ &phi^{n+1} - hat{phi}^{n+1} geq sqrt{5}phi^{n-1}\ \ &phi^{n+1} - sqrt{5}phi^{n-1} geq hat{phi}^{n+1}\ \ &[frac{(1+sqrt{5})^2}{4}-sqrt{5}]phi^{n-1} geq frac{(1-sqrt{5})^2}{4} hat{phi}^{n-1}\ \ &(frac{3-2sqrt{5}}{2})phi^{n-1} geq (frac{3-2sqrt{5}}{2})hat{phi}^{n-1}\ end{aligned} } ]

    因为 (large phi geq hat{phi})(n=1) 时取等

    所以上述式成立

    另外,与指数对应的就是对数,所以我们可以把上面那个式子转化一下

    [large egin{aligned} &phi^n leq F_{n+2}\ &n leq log_phi(F_{n+2})\ & ext{注意这里 2 的转化}\ & ext{并非从n+2中而来}\ &n-2 leq log_phi F_n\ &n leq log_phi F_n +2 end{aligned} ]

    一个数如果是斐波那契数,那么这个数 在斐波那契数列上的位置下标 (n) 不大于其数值关于 (phi) 的对数

    看起来没啥用的性质,却是斐波那契堆的关键

    扩展1

    已知

    [large F_n = frac{phi^n - hat{phi}^n}{sqrt{5}} ]

    移项

    [large{ phi^n-hat{phi}^n=F_ncdotsqrt{5}\ \ (frac{1+sqrt{5}}{2})^n-(frac{1-sqrt{5}}{2})^n=F_ncdotsqrt{5}\ \ frac{(1+sqrt{5})^n-(1-sqrt{5})^n}{sqrt{5}}=2^nF_n } ]

    将最后一个等式推广到普遍情况

    即若以

    [large G_{mn}=frac{(1+sqrt{m})^n-(1-sqrt{m})^n}{sqrt{m}} ]

    表示某一数列 (G_m) 的第 (n) 项,那 (G_{mn}) 是否一定是整数?

    同时也可以由此扩展倒推出斐波那契数列通项公式

    证明

    显然

    (large{G_{m0}=0,G_{m1}=2, G_{m2}=4})

    (n) 为大于 (0) 整数

    [large egin{aligned} G_{m(n+1)}&=frac{(1+sqrt{m})^{n+1}-(1-sqrt{m})^{n+1}}{sqrt{m}}\ \ &=frac{(1+sqrt{m})[(1-sqrt{m})^n+sqrt{m}G_{mn}]-(1-sqrt{m})[(1+sqrt{m})^n-sqrt{m}G_{mn}]}{sqrt{m}}\ \ &=frac{2sqrt{m}G_{mn}+[(1+sqrt{m})(1-sqrt{m})^n-(1-sqrt{m})(1+sqrt{m})^n]}{sqrt{m}}\ \ &=2G_{mn}+[(1+sqrt{m})(1-sqrt{m})]frac{(1-sqrt{m})^{n-1}-(1+sqrt{m})^{n-1}}{sqrt{m}}\ \ &=2G_{mn}+[(sqrt{m}+1)(sqrt{m}-1)]frac{(1+sqrt{m})^{n-1}-(1-sqrt{m})^{n-1}}{sqrt{m}}\ \ &=2G_{mn}+(m+1)G_{m(n-1)} end{aligned} ]

    也就是说,(G_{m(n+1)}) 可由其前两项仅通过加法和乘法得到,而 (G_{m0},G_{m1}) 是整数,故由他们得出的后项也都是整数

    更进一步

    数列

    [large{ egin{aligned} &H_{mn}=frac{(frac{(1+sqrt{m})}{2})^n-frac{(1-sqrt{m})}{2})^n}{sqrt{m}}\ \ &2^nH_{mn}=frac{(1+sqrt{m})^n-(1-sqrt{m})^n}{sqrt{m}}=G_{mn}\ \ &2^{n+1}H_{m(n+1)}=2^{n+1}H_{mn}+(m-1)2^{n-1}H_{m(n-1)}\ \ &H_{m(n+1)}=H_{mn}+frac{m-1}{4}H_{m(n-1)} end{aligned} } ]

    (H_{5n}) 正是斐波那契数列

    扩展2

    斐波那契循环节!!!!

    即求斐波那契数列在模 (p) 意义下的循环节 (m)

    前置知识二次剩余

    做题

    未完待续。。。

  • 相关阅读:
    python 求取代码运行时间
    Python中的继承、抽象基类和接口
    Python安装和环境配置,让你轻松入门学习Python!
    python入门python的基本语法
    没有对象?程序员的浪漫,对象攻略(1)
    python实现邮件循环自动发件
    docker查看全部容器命令
    python speech模块的使用方法
    开宗立派宣言
    多个 (li) 标签如何获取获取选中的里面的某个特定值
  • 原文地址:https://www.cnblogs.com/codingxu/p/15309872.html
Copyright © 2011-2022 走看看