码迷,mamicode.com
首页 > 其他好文 > 详细

斐波那契

时间:2014-10-31 15:12:17      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   sp   strong   div   on   2014   log   

方法一:利用特征方程(线性代数解法)

bubuko.com,布布扣

 

 

斐波那契 f(n+1) = f(n)+f(n-1)
线性递推数列特征方程为:
  X^2=X+1
  解得
  X1=(1+√5)/2, X2=(1-√5)/2.
  则F(n)=C1*X1^n + C2*X2^n
  ∵F(1)=F(2)=1
  ∴C1*X1 + C2*X2=C1*X1^2 + C2*X2^2=1  
  解得C1=1/√5,C2=-1/√5
  ∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根号5】
 
缺点是计算机中浮点数不准确
 
方法二:矩阵
 
(f_n,f_n-1) = (f_n-1,f_n-2)*A
          1     1
A ={                }           这个矩阵太丑了。。。
          1     0
 
所以 (f_n,f_n-1) = (f_1,f_0)  *  A^n-1
 
然后就是矩阵的幂乘法,,,利用快速幂可求
 
 
如果是f(k) = f(k-1)+f(k-2)+f(k-3)
那么
            1     1     0
A = {    1     0     1      }
            1     0     0
 
这种注意观察就可以了。

斐波那契

标签:blog   http   ar   sp   strong   div   on   2014   log   

原文地址:http://www.cnblogs.com/juandx/p/4065008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!