总是看到有人问递推的通项公式如何求,母函数(Generating function)是一个很好用的工具,

现总结如下以供学习

母函数是组合数学里面的概念,其实就是这坨东西

是不是看不明白,确实有些生疏,再看这一坨

恍然大悟,这不就是久负盛名的数列求和公式么!既然如此,看看它是如何应用于通项公式的

首先来看看如下的二阶齐次递推公式

f(n) = af(n-1)+bf(n-2)                          ------------------------------  (1)

(1)式可通过有名的差错法来求,将f(n)作为a(k),构造

G(x) = ∑f(n)*x^n

展开G(x) = f(0) + f(1)*x + f(2)*x^2 + f(3)*x^3.....

-G(x)           = -f(0) - f(1)*x -      f(2)*x^2      -  f(3)*x^3.....

a*x*G(x)    =           f(0)*a*x + f(1)*x^2*a   + f(3)*x^3*a......

b*x^2*G(x)    =                        f(0)*x^2*b   + f(2)*x^3*b..........

3式相加得

( b*x^2 + a*x - 1 )*G(x)   =  -f(0) + ( f(0)*a - f(1) ) *x

G(x) = (-f(0) + ( f(0)*a - f(1) ) *x) / ( b*x^2 + a*x - 1 )

这里的b*x^2 + a*x - 1 = c(x) 也被称为特征方程,将分母拆分

G(x) = A/1-r1*x + B/1-r2*x,r1,r2为b*x^2 + a*x - 1 = 0 的两根,使用待定系数法可求出A,B

这里就可以利用母函数得

G(x) = A*∑(r1*x)^n + B*∑(r2*x)^n

既得

f(n) = A*r1^n + B*r2^n   ----------------------------------------------(2)

似乎是万事大吉了,不过还没有,

当r1 = r2 = r  时

G(x) = A/1-r*x + B/(1-r*x)^2

则得

G(x) = A*∑(r*x)^n + B*∑(n+1)(r*x)^n

f(n) = A*r^n + B*(n+1)r^n   ------------------------------------------(3)

(2),(3)即为所求解

其中A =( f(0)*a - f(1) - f(0)*r1) / ( r1 - r2 )

B = ( f(0)*r2 + f(1) - f(0)*a)/ ( r1 - r2 )

本文主要主要关注的是二阶齐次递推公式,而母函数是应用很广的概念,如果有兴趣可进一步参见组合数学相关的教材

母函数求递推的通项公式(一)相关推荐

  1. 3a2b递归排列java,高考数学解题技巧-递推数列通项公式的十种策略例析

    求递推数列通项公式的十种策略例析 递推数列的题型多样,求递推数列的通项公式的方法也非常灵活,往往可以通过适当的策略将问题化归为等差数列或等比数列问题加以解决,亦可采用不完全归纳法的方法,由特殊情形推导 ...

  2. 51Nod-1126 求递推序列的第N项【递推序列+模除】

    1126 求递推序列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * ...

  3. 错排公式 ——递推与通项公式

    错排公式 一.定义: 错排问题,是组合数学中的问题之一.考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排. n个元素的错排数记为D(n).研 ...

  4. 有理展开定理与递推数列通项公式

    可以结合 https://blog.csdn.net/ez_lcw/article/details/125731258?spm=1001.2014.3001.5502. 不同根的有理展开定理 设 R ...

  5. 51nod 1126 求递推序列的第N项 思路:递推模拟,求循环节。详细注释

    题目: 看起来比较难,范围10^9 O(n)都过不了,但是仅仅是看起来.(虽然我WA了7次 TLE了3次,被自己蠢哭) 我们观察到 0 <= f[i] <= 6 就简单了,就像小学初中学的 ...

  6. 遍历递归树求递推数列通项

    考虑K阶变系数线性递推方程: 现给定初值a1,a2,-,ak和n>k,要求编程打印an,an-1,-,ak+1的值 该问题用常规的迭代法非常容易解决,现在要考虑的是用遍历递归调用树的方法求解.n ...

  7. 1126 求递推序列的第N项 (Fnb + mod + 思维)

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...

  8. 515Nod 1126 求递推序列的第n项【矩阵快速幂】

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...

  9. 求递推序列的第N项(51Nod-1126)

    题目 有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. 输入 输 ...

最新文章

  1. VS2008编译汇编程序的问题
  2. 历史文件夹_Win10备份文件教程:备份到OneDrive,文件历史记录
  3. 图论--LCA--在线RMQ ST
  4. 64位操作系统上ArcGIS Server Manager页面不正常显示
  5. 读梁宁《一次失控引发的信任评估---我看胡紫薇事件》
  6. nginx 配置反向代理和负载均衡
  7. 网络操控软件兴起:思科利润率受压
  8. Hive中除了窗口函数外的常用函数:casewhen,行转列,列转行
  9. win7系统可以禁止的服务器,win7旗舰版怎么禁用不必要的系统服务项
  10. 浅谈ARP攻击现象和处理办法
  11. 如何写出一篇好的软文?软文撰写的一些注意事项!
  12. 48 款数据可视化分析工具大集合!
  13. 用canvas画了个多啦A梦
  14. 关于C++的placement new和placement delete
  15. 关于三角恒等变换与正余弦定理的学习总结
  16. 基于python的股票程序化交易论文_基于Python工具的股票量化投资策略研究
  17. oracle数据库恢复aul_Oracle终极数据恢复,孰弱孰强(DUL vs AUL)
  18. 阿里研究院杨健:数据将成为未来经济的生产要素
  19. UIpath for each遍历文件,判断,删除文件。catch捕捉全局异常
  20. C/C++ 操作注册表

热门文章

  1. 求助!编写 sql 语句,输出符合条件的查询结果。
  2. 调戏京东客服必备:教你查询京东客服MM的真实姓名
  3. 如图,甲乙两人分别在AB两地同时相向而行,于E处相遇后,甲继续向B地行走,乙则休息了14分钟,在继续向A地行走,甲和乙到达B和A后立即折返,又在E处相遇,已知甲每分钟行走60米,乙每分钟行走80米
  4. 【javaweb笔记1】自用
  5. 一个领域中的红海和蓝海
  6. 分销小程序开发|分销小程序怎么设计动态分销?
  7. vscode配置matlab工作环境
  8. 中断深入-->休眠唤醒(通用)
  9. Qt QIODevice::Unbuffered 理解
  10. MacOSX 编译Android 4.0的各种问题