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

相关推荐
lvwangshu7 小时前
exBSGS 算法
数学·算法
Luhui Dev1 天前
大角几何如何保证图片导出尺寸一致性?
人工智能·数学·ai·luhuidev
lvwangshu2 天前
线性代数基础 Linear Algebra Basics
数学·算法
金銀銅鐵6 天前
斐波那契数列中连续10项的和总是能被11整除吗?
python·数学
金銀銅鐵8 天前
斐波那契数列的个位数出现的周期是多少?
python·数学
闻缺陷则喜何志丹8 天前
【计算几何 第十一章】凸包:混合物
数学·算法·计算几何·凸包·混合物·凸组合
桃西西呀8 天前
刷短视频越刷越窄?SVD 奇异值分解,把 10 万条电影评分拆成你的品味特征
python·数学·数据可视化
铸人9 天前
再论勾股定理成立的条件-19
数学·数论·复数
闻缺陷则喜何志丹11 天前
【计算几何 第10章】更多几何数据结构:截窗
数据结构·数学·线段树·计算几何·截窗·优先查找树·区间树
熊猫_豆豆11 天前
黑洞的粒子产生(霍金1975年论文)第二部分
人工智能·数学·算法·机器学习·量子力学·大学物理·黑洞