zoukankan      html  css  js  c++  java
  • 【被迫营业9】关于Fibonacci数列的生成函数和通项公式的推导

    说在前面

    你可能看过lym一年前在csdn上写的(mathcal{O}(log{n}))求解Fibonacci数列前(n),现在看来这篇文章真的屑。
    不过我们今天不讲这玩意,今天我们讲关于Fibonacci数列的生成函数(又称母函数)和其通项的推导,学过的不用往下看了,这玩意真的很基础。不过没学过生成函数(甚至连通项都不知道是啥)的也建议先补补课再来。

    [frac{1}{1 - x} = sum_{i ge 0} x^i ]

    关于Fibonacci数列

    斐波那契数列是这样的一个数列:(0,1,1,2,3,5,8,cdots)
    (f_n)为它的第(n)项,那么它的递推公式:

    [f_n = egin{cases} 1 & n le 2 \ f_{n - 1} + f_{n - 2} & n > 2 end{cases} ]

    生成函数与通项

    想必大部分人都知道(f_n = dfrac{1}{sqrt{5}}left[left(dfrac{1 + sqrt{5}}{2} ight) ^ n - left(dfrac{1 - sqrt{5}}{2} ight) ^ n ight])
    但是怎么得到的呢?
    我们考虑求出其生成函数。
    设Fibonacci的生成函数是(F(x)),有

    [F(x) = sum_{i ge 1} f_i x^i ]

    [xF(x) = sum_{i ge 1} f_i x^{i + 1} ]

    [x^2F(x) = sum_{i ge 1} f_i x^{i + 2} ]

    显然有(F(x) - xF(x) - x^2F(x) = x)
    整理一下发现(F(x) = dfrac{x}{1 - x - x^2})
    然后我们就考虑证明(dfrac{x}{1 - x - x^2} = dfrac{1}{sqrt{5}}left[left(dfrac{1 + sqrt{5}}{2} ight) ^ n - left(dfrac{1 - sqrt{5}}{2} ight) ^ n ight])
    这玩意太好整了啊。
    考虑配方。

    [{1 - x - x^2} = (1 - ax)(1 - bx) ]

    解得

    [egin{cases} a = dfrac{1 + sqrt{5}}{2}\ b = dfrac{1 - sqrt{5}}{2}\ end{cases} ]

    [F(x) = dfrac{x}{left(1 - dfrac{1 - sqrt{5}}{2} cdot x ight)left(1 - dfrac{1 + sqrt{5}}{2} cdot x ight)} ]

    裂个项,易得

    [F(x) = dfrac{1}{sqrt{5}}left[dfrac{1}{1 - dfrac{1 + sqrt{5}}{2} cdot x} - dfrac{1}{1 - dfrac{1 - sqrt{5}}{2} cdot x} ight] ]

    通过一开始我们给的式子,可以求出第(n)项的系数

    [f_n = dfrac{1}{sqrt{5}}left(dfrac{1 + sqrt{5}}{2} ight)^n - dfrac{1}{sqrt{5}}left(dfrac{1 - sqrt{5}}{2} ight)^n ]

    题外话

    这玩意还有其他许多神仙方法可以整,包括一些初等的数列知识,高到一些特征向量等,我们只能不断地学习。

  • 相关阅读:
    RTLabel 富文本
    代码复用,优化时间
    (转)分享一些免费的接口.无意中查找资料发现
    新手之使用git
    ios 清理缓存
    (转)IOS崩溃 异常处理(NSSetUncaughtExceptionHandler)
    UIApplication的理解
    新提交审核app保留检查更新入口将被拒绝
    (转)免费天气预报接口API以及全国所有地区代码!!
    Cesium快速上手9-Camera和Scene中的其他函数使用
  • 原文地址:https://www.cnblogs.com/luyiming123blog/p/Fibonacci.html
Copyright © 2011-2022 走看看