f(n)=af(n-1)+b根据一阶线性递推式推导通项公式

之前做了一道算法题,根据题意能推导出一个公式:

f(n)={1,n=13f(n−1)+2,n≥2 f(n)= \begin{cases} 1, & n=1 \\ 3f(n-1)+2, & n\ge 2 \end{cases} f(n)={1,3f(n−1)+2,n=1n≥2

这里的n是整数。

看到这个公式自然而然地想到使用递归的方式编程解决。

在n很小的时候这没问题,但是当n大的时候,即使n=20时,递归也有20层调用栈的开销。

因此想到推导通向公式。

当前的这个公式是一阶线性递推 公式,即形如f(n)=af(n-1)+b的形式


如何根据f(n)的递推公式推导出f(n)的通项公式呢?

假设存在一个常数k,使得

g(n)=f(n)+k g(n)=f(n)+k g(n)=f(n)+k

那么

f(n)=g(n)−k f(n)=g(n)-k f(n)=g(n)−k

从公式

f(n)=3f(n−1)+2 f(n)=3f(n-1)+2 f(n)=3f(n−1)+2

可以得到

g(n)−k=3g(n−1)−k+2 g(n)-k=3g(n-1)-k+2 g(n)−k=3g(n−1)−k+2

=>

g(n)=3g(n−1)−2k+2 g(n)=3g(n-1)-2k+2 g(n)=3g(n−1)−2k+2

想让常数项消失得使

−2k+2=0 -2k+2=0 −2k+2=0

即

k=1 k=1 k=1

得到

g(n)=3g(n−1) g(n)=3g(n-1) g(n)=3g(n−1)

结合

g(1)=f(1)+k=1+1=2 g(1)=f(1)+k=1+1=2 g(1)=f(1)+k=1+1=2

可以得到g(n)通项公式

g(n)=2∗3n−1 g(n)=2*3^{n-1} g(n)=2∗3n−1

因此

f(n)=g(n)−k=2∗3n−1−1 f(n)=g(n)-k=2*3^{n-1}-1 f(n)=g(n)−k=2∗3n−1−1


总结一下,

对于f(n)=af(n-1)+b的递推公式,令g(n)=f(n)+k,结合f(n)的递推公式,可以得到g(n)=pg(n-1)+qk+r,通过令qk+r=0的方式消除掉常数项,得到k,进而推导出g(n)的通项公式,从而得到f(n)的通项公式。


还是当年高中nb,现在啥也不会hhh

相关推荐
Luhui Dev4 天前
大角几何 3D 渲染 API 上线:让立体题图进入自动化生产流程
人工智能·数学·luhuidev
闻缺陷则喜何志丹5 天前
【计算几何】Clipper的偏移
数学·偏移·计算几何·裁剪·clipper
HIT_Weston6 天前
7、【数学】【基础】复数是什么:从解方程到旋转
数学·基础
铸人7 天前
再论勾股定理成立的条件-28
数学·几何学·复数·物理
HIT_Weston7 天前
5、【数学】【基础】归一化的几何意义:球面、超平面与信息去哪了
数学·基础
email4u10 天前
当 AI 开始解决数学难题
人工智能·数学
Tisfy11 天前
LeetCode 0836.矩形重叠:xy两方向分别看
数学·leetcode·题解·模拟
闻缺陷则喜何志丹12 天前
【计算几何】布尔运算交并补异或
数学·计算几何·布尔运算·奇偶填充·非零填充·正数填充·负数填充
lisw0513 天前
数学系学生如何入门计算基因组学?
数学·计算基因组学
闻缺陷则喜何志丹15 天前
【计算几何】闵可夫斯基差演示
数学·计算几何·autocad·闵可夫斯基差