zoukankan      html  css  js  c++  java
  • 浅谈生成函数推导斐波那契数列以及特征函数

    浅谈生成函数推导斐波那契数列以及特征函数

    一次数学课,尊敬的Mr.ZHU与L先生提出了一个叫做特征函数的东西,作为前竞赛生的Marcelo Jin 一惊,这不正是生成函数的化简版嘛,于是他决定,周日的时候再来好好回顾一下这个有趣的算法。

    一.关于生成函数

    1.数列的多项式表示法

    对于一个数列(a_n),我们可以利用一个多项式来表示它,即(A(x)=Sigma a_i x^i)

    举个例子,对于数列(a_n=n),它的多项式表示法就是(A(x)=x+2x^2+3x^3+...)

    这里的多项式是形式幂级数,也就是变量只是一个符号,我们不关心它取值带来的影响,只关心它所携带的信息。

    因为本篇着眼于文化课上的生成函数应用,所以暂且不提指数型生成函数

    2.生成函数的封闭形式

    再举个例子,对于序列(<1,1,1,1...>),它的生成函数要写成一个多项式的形式,十分不直观,我们可以考虑把它的生成函数写成一个封闭的形式。

    这里,分享两个方法。

    设该数列的生成函数为(A(x))

    Solution 1:

    根据我们小学就学过的等比数列求和公式,
    ( A(x)=frac{x^n-1}{x-1} )

    所以(lim_{n ightarrow+infty} A(x)=frac{1}{1-x})

    Solution 2:

    (A(x)⋅x+1=A(x))

    (So) (we) (have) (A(x)=frac{1}{1-x})

    推广一下,又有
    (frac{1}{1-kx}=1+kx+k^2x^2+k^3x^3...)

    也就是说,生成函数为(frac{1}{1-kx})的数列的通项公式为(a_n=k^n)

    3.生成函数的应用

    生成函数一般有两个用途

    1.对于给定的递推公式,求其通项公式

    2.解决一些计数类问题

    二.斐波那契数列通项公式的推导

    我们设斐波那契数列的通项公式为(f_n),设其生成函数为(F(x)),那么

    ( F(x)=Sigma{f_ix^i}=f_1x+ Sigma_{igeq2}{f_ix^i} )

    ( =x+Sigma_{igeq2}(f_{i-2}+f_{i-1})x^i )

    ( =x+x^2Sigma_{igeq2}f_{i-2}x^{i-2}+xSigma_{igeq2}f_{i-1}x^{i-1} )

    ( =x+x^2F(x)+xF(x) )

    所以,(F(x)=frac{x}{1-x-x^2})
    可用待定系数法分解为:

    (F(x)=frac{1}{sqrt5}((frac{1}{1-frac{1+sqrt5}{2}x})-(frac{1}{1-frac{1-sqrt5}{2}x})))
    根据之前的结论,(f_n=frac{1}{sqrt5}((frac{1+sqrt5}{2})^n-(frac{1-sqrt5}{2})^n))

    三.关于特征函数

    神·朱老师说,对于一个递推式(a_n=a_{n-1}+a_{n-2}),可以写成(x^2=x+1)的形式,或者再都降个次,也就是(x=1+frac{1}{x})的形式,我们再观察上面的(F(x)),发现互为倒数,也就是说特征函数可以由生成函数来推导。

  • 相关阅读:
    SpringBoot list查询方法
    eclipse创建web项目
    loadrunner获取返回值为乱码
    连接数据库
    lr并发量和迭代的区别
    LoadRunner11.00入门教程出现的问题
    python学习杂记--函数参数的设置
    adb logcat的命令行开启和关闭
    python学习杂记--pycharm控制台输出乱码
    python学习杂记--装饰器
  • 原文地址:https://www.cnblogs.com/Marcelo/p/15490315.html
Copyright © 2011-2022 走看看