用生成函数求斐波那契数列(及所有线性递推数列)的通项公式

斐波那契数列的定义:

{f0=0f1=1fi=fi1+fi2(i>1)

求出特征多项式

C(x)=x2x1

递推关系

fn=i=1kcifni

的特征多项式为

C(x)=xki=1kcixki

S=i=0fixi

为其生成函数。

推导:

S=i=0fixi=f0+f1x+i=2(fi1+fi2)xi=x+i=2fi1xi+i=2fi2xi=x+xi=0fixi+x2i=0fixi=x+xS+x2S

求解:

(x2+x1)S=xS=x1xx2

由于斐波那契数列的特征方程

C(x)=0x2x1=0

的根为

x1=1+52x2=152

所以 S 一定可以分解成

A1x1x+B1x2x

的形式。

待定系数法(中间过程太长,故略去):

A1x1x+B1x2x=x1xx2(1x2x)A+(1x1x)B(1x1x)(1x2x)=x1xx2(1xx2)((1x2x)A+(1x1x)B)=x(1x1x)(1x2x)A=55B=55

所以

S=i=0(Ax1i+Bx2i)xi

对比系数,得:

fn=Ax1n+Bx2n=55((1+52)n(152)n)

觉得整个过程太麻烦?

线性递推通用公式:

C(x)=0 有根 q1,q2,,qt,重数分别为 m1,m2,,mt(m=k)

fn=i=1tj=1midi,j(j+n1n)qin

其中 di,j 为自由常量,通过数列的前几项列方程可确定她们。

posted @   ShaoJia  阅读(180)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示