zoukankan      html  css  js  c++  java
  • 求解递推数列的成套方法

    例子

    • 求解 (sumlimits_{i = 1} ^ n i ^ 2)

    设它的递推式为

    [R_0 = alpha ]

    [R_n = R_{n - 1}+delta n^2 + gamma n + eta ]

    已知 (alpha = eta = gamma = 0, delta = 1) 时,(R_n=sum_{i = 1}^n i^2)

    因为递推式只与参数 (alpha, eta, gamma, delta) 相关,可以得出

    [R_n = A(n) alpha + B(n) eta + C(n) gamma + D(n) delta ]

    那么任意符合上面这个递推式的都可以用这个一般形式得出,强调一下,无论 (alpha,eta,gamma,delta) 取什么,(A(n),B(n),C(n),D(n)) 都是不变的

    这启发我们用一些简单的函数来求解 (A(n), B(n), C(n), D(n))

    带入函数1

    • 对于 (f(n) = 1)

    [f_0 = 1 o alpha = 1 ]

    [1 = 1 + delta n^2 + gamma n + eta o delta = gamma = eta = 0 ]

    得出一个关系式

    [1 = A(n) ]

    带入函数2

    • 对于 (f(n) = n)

    [f_0 = 0 o alpha = 0 ]

    [n = n - 1 + delta n^2 + gamma n + eta o delta = gamma = 0, eta = 1 ]

    又一个关系式

    [n = B(n) ]

    带入函数3

    • 对于 (f(n) = n^2)

    [f_0 = 0 o alpha = 0 ]

    [n^2=(n-1)^2 + gamma n + eta + delta n^2 o delta = 0, eta = -1, gamma = 2 ]

    [n^2 = -B(x) + 2C(n) ]

    跟上面的式子联立,可以解出 (C(n) = frac{n^2 + n} 2)

    带入函数4

    • 对于 (f(n) = n^3)

    [f_0 = 0 o alpha = 0 ]

    [n^3=(n-1)^3 + gamma n + eta + delta n^2 o delta = 3, eta = 1, gamma = -3 ]

    可以解出

    [D(n) = n(n + frac 1 2) (n + 1) ]

    这个式子是不是有些眼熟,对,它就是平方和公式,只要把 (delta) 设为 1,就可以发现 (D(n) = sum_{i = 1} ^ n i^2),一开始设它的目的也是这个

    一般情况

    从上面的例子可以看出,对已一个递推公式来说,最终的封闭形式只与项数 (n),和其中的变量有关

    因此我们可以设出封闭形式,并带入简单函数进行求解

    需要注意的是,设出的函数必须可解,当带入一个简单函数无法通过 (delta,eta...) 来得到递推式时,要么考虑换一个函数,要么增加一个变量

    这就需要通过做题来增加数学经验了

  • 相关阅读:
    HDU 3572 Task Schedule(拆点+最大流dinic)
    POJ 1236 Network of Schools(Tarjan缩点)
    HDU 3605 Escape(状压+最大流)
    HDU 1166 敌兵布阵(分块)
    Leetcode 223 Rectangle Area
    Leetcode 219 Contains Duplicate II STL
    Leetcode 36 Valid Sudoku
    Leetcode 88 Merge Sorted Array STL
    Leetcode 160 Intersection of Two Linked Lists 单向链表
    Leetcode 111 Minimum Depth of Binary Tree 二叉树
  • 原文地址:https://www.cnblogs.com/XiaoVsun/p/13063570.html
Copyright © 2011-2022 走看看