前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用生成函数求斐波那契数列通项公式

利用生成函数求斐波那契数列通项公式

作者头像
attack
发布2019-03-15 15:54:55
1.8K0
发布2019-03-15 15:54:55
举报
文章被收录于专栏:数据结构与算法

利用生成函数求斐波那契数列通项公式

先吐槽一下,学习这玩意儿的时候真的是深深的明白了自己的弱小,人家的一个"解得"我居然解了两个小时。。qwq

前置知识

斐波那契数列:

f_i = f_{i-1} + f_{i - 2}

f_0 = f_1 = 1

普通生成函数:

简单来说用多项式\sum_{i=0}^{\infty} a_ix^i的系数表示序列的元素

同时因为我们不关心\(x\)的取值,因此\(\sum_{i=0}^{\infty}a_ix^i\)又称作以\(x\)为自由元的形式幂级数

常见的有:

\frac{1}{1-x} = 1 + x + x^2 + x^3 + \dots + x^{\infty}

证明: 后半部分可以直接由通项公式得到S_n = \frac{1-x^{n+1}}{1-x},当x \in (-1, 1),那么\lim_{n\to +\infty} x^{n+1} = 0

将x替换为xk

\frac{1}{1-kx} = 1 + kx + k^2x^2 + k^3x^3 \dots + k^{\infty}x^{\infty}

解法

A = 1 + 1x + 2x^2 + 3x^3 + 5x^4 + 8x^5 \dots

根据递推式,我们可以这样变化,显然有

\begin{aligned} A = \ 1 + 1x + &2x^2 + 3x^3 + 5x^4 + 8x^5 \dots \\ xA = \ \ \qquad x + &1x^2 + 2x^3 + 3x^4 + 5x^5\dots \\ x^2A =\qquad \qquad &1x^2 + 1x^3 + 2x^4 + 3x^5 \dots \end{aligned}

那么可以得到一个方程A - xA - x^2A = 1

整理一下A =\frac{1}{1-x-x^2}

这样我们就得到了斐波那契数列的生成函数,然而并没有什么卵用,因为我们不能直接通过观察看出每一项的系数。

现在考虑一下,我们接下来可以干什么。我们已经知道了\frac{1}{1-x}\frac{1}{1-kx}所表示的序列。接下来要干的当然是把\frac{1}{1-x-x^2}往上面的两个式子转化。

\frac{1}{1-x-x^2}这玩意儿下半部分是个一元二次方程,我们可以配方

1-x-x^2 = (1-\phi_1x)(1-\phi_2x)

\phi_1 = \frac{1+\sqrt{5}}{2}, \phi_2 = \frac{1-\sqrt{5}}{2}

(解的时候可以直接把后面的式子拆开,把这两个式子对应项联立组成方程组, \phi_1 \phi_2的取值是可以反过来的)

这个时候我们发现已经找到与\(\frac{1}{1-kx}\)的联系了,我们可以把\frac{1}{(1-\phi_1 x)(1-\phi_2 x)}拆成求和的形式。可以裂一下项

原式变为\frac{a}{1-\phi_1x} + \frac{b}{1-\phi_2 x},然后再解一个方程a(1-\phi_2 x) + b(1-\phi_1x) = 1

解这个方程就没那么休闲了,这里我们选择把x当做主元对方程进行变换

(a+b - 1) - x(a\phi_2 + b\phi_1) = 0

这样就好处理了,只要列个二元一次方程组

\begin{cases} a-b-1 = 0\\ a\phi_2 + b\phi_1 = 0 \end{cases}

解一下可以得到a = \frac{1}{\sqrt{5}} \phi_1, b = -\frac{1}{\sqrt{5}} \phi_2

带回去

A = \frac{\phi_1}{\sqrt{5}} \frac{1}{1-\phi_1x} - \frac{\phi_2}{\sqrt{5}} \frac{1}{1-\phi_2x}

那么第n项的公式为

A_n = \frac{1}{\sqrt{5}} ((\frac{1+\sqrt{5}}{2})^{n+1} - (\frac{1-\sqrt{5}}{2})^{n+1})

参考资料

生成函数-罗煜楚(版权原因暂不公开)

特别感谢张一钊老师qwq

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 利用生成函数求斐波那契数列通项公式
    • 前置知识
      • 解法
        • 参考资料
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档