标签(空格分隔): 数学
推荐一篇很棒很生动的博客http://ruanx.pw/post/%E7%89%B9%E5%BE%81%E6%96%B9%E7%A8%8B.html
母函数
定义
对于任意数列a0,a1,a2⋯,用如下方法与一个函数联系起来:G(x)=a0+a1x+a2x2+⋯
则称G(x)是数列的生成函数(generating function),也称为母函数.
说白了就是,你可以用多项式的n次项系数表示一个数列.那母函数有什么用呢?可以用来证明一些组合数学的定理...可以用来标准化一些数学组合意义...比如一个小学数学的例子,两盘水果,一盘2个苹果,一盘3个梨子,这些水果同类型都长得一模一样,问你,拿到3个水果的方案,你可能可以很快回答出来:"三种方案啊.1个苹果2个梨子,2个苹果1个梨,3个梨",但是用母函数就可以这样来算.
(1+x+x2)(1+x+x2+x3)=1+2x+3x2+3x3+2x4+x5
哎!!3次项的系数是3!!第一个小括号里的就是拿苹果的方案,你可以不拿(1),可以拿1个(x),也可以拿两个(x2),由于多项式乘法会两两都相乘,最后合并同类项的时候,相同的个数的水果的方案数就合并到了一起,这就是母函数一个基本的作用.算方案数
母函数与fibonacci
设f1=f2=1\fn+2=fn+1+fn
现在我们已知递推关系,如何来找通项公式呢?引入母函数.
设$$G(X)=f_1x+f_2x2+f_3x3+\cdots$$
f3=f1+f2f4=f2+f3f5=f3+f4⋯
(1)∗x3+(2)∗x4+...得:
G(x)−x2−x=x[G(x)−x]+x2G(x)
移项合并同类项之后就得到:
(1−x−x2)G(x)=xG(x)=x1−x−x2
强行因式分解:
1−x−x2=(1−1−√52x)(1−1+√52x)
再设:
G(x)=A1−1+√52x+B1−1−√52x
因为两个函数完全一样只要系数对应就可以了,待定系数这样接一下解得:
{A=1√5\B=−1√5
带回去:设a=1+√52,b=1−√52
G(x)=11−ax+11−bx√5
根据无穷等比数列求和可以展开写成:
G(x)=1√5[(a−b)x+(a2−b2)x2⋯]
对应的每项的系数fn=an−bn√5
这是准确的通项公式,考虑如何表示得简洁一点,很容易发现|b|<1当n很大的时候,bn是趋近于0的,这样我们就得到一个更好的式子:
fn=1√5(1+√52)n
我们还可以写成这个样子:
fnfn−1=1+√52
这不是黄金分割么...难怪有人说斐波那契数列彰显了数学的美..
还有一个关于fibonacci的美丽的结论:
f1+f2+...+fn=fn+2
恒等变换一下就好了,这个可以用来求fibonacci的前缀和.
线性常系数齐次递推关系
定义
an+c1an−1+c2an−2+...+ckan−k=0
a0=d0,a1=d1,...,ak−1=dk−1
若c1,c2,...,ck,d0,d1,...,dk−1都是常数,则称之为k阶的线性常系数齐次递推关系.
特征多项式:
C(x)=xk+C1xk−1+...+Ck−1x+Ck
这个特征多项式...为什么要叫特征多项式呢?因为它有特征啊!废话...
当我们碰到一个递推关系,例如fn=2fn−1+2,f1=1,利用高中数学必修五的知识,就是把它转化为fn+2=2(fn−1+2),f1=1,f2=2,令gn=fn+2,gn是等比数列,所以fn=3∗2n−1−2.是通过构造辅助数列求解,但是不是每个式子都可以这样方便地表示,比如有的递推关系fn=5fn−1−6fn−2,f1=1,f2=2,这就很麻烦了.我们发现,之前的递推式总是可以写成一个数的多少次方的形式,大胆地假设一下,这个也可以表示成fn=k∗xn+b的形式,x,k,b为常数.那我们来找一找.
f3=5∗2−6∗1=4f4=5∗4−6∗2=8f5=5∗8−6∗4=16
好像还真的有规律...fn=2n−1
f1=1,f2=3呢?
f3=5∗3−6∗1=9f4=5∗9−6∗3=27f5=5∗27−6∗9=81
绝了,fn=3n−1次方...绝了,那你会不会想再把f1f2换成什么别的东西会有什么新的递推关系?做梦,那是不可能的...
为什么这个式子在茫茫数海中间,为什么只有2,3对它情有独钟,怕不是有什么本质的联系...
这个联系就是接下来要讨论的特征方程.
仔细推敲一下,发现fn=2fn+2这样的式子,你要是忽略掉后面的+2,很容易发现是指数增长的,每次都乘了一个2,那像fn=5fn−1−6fn−2这样的,想象一下,fn−1是由fn−2乘了一个什么东西得来的,fn是由fn−1乘了一个相同的东西得来的.那么fn就是fn−2乘了一个这东西的平方得来的,然后我们要让这个递推关系成立,设这个东西为x,则:
x2=5x−6x
x有两个解对不对x1=2,x2=3!!!!哎,2,3,又出现了!
于是数学家就把这玩意叫做,特征根了.是不是很有特征啊...
用法
这个特征方程是个很有用的东西,用它可以解出所有的线性常系数齐次递推关系的通项公式.
梳理一下解这类问题的一般的过程:
1.找出递推关系
2.用含f的项来消掉常数,得到特征方程.
3.分情况讨论.
来看看怎么找特征方程.
拿一个例子可能会比较好理解.
比如对于一个fn=2∗fn−1+1,f1=1,怎么消掉那个常数呢?
fn=2∗fn−1+1=3fn−1+1−fn−1=3∗fn−1+1−2fn−2−1
所以fn−3fn−1+2fn−2=0
哎!我么发现这个和那个定义式子长得好像!
an+c1an−1+c2an−2+...+ckan−k=0
那对于这个例子,我们找到它的特征多项式
C(x)=x^2-3x+2$$只要知道这个式子等于零时候的解,就可以得到递推关系了!是不是很神奇hhh,证明的话可以看组合数学第二章里面有,那个老师讲了一个小时的证明听得我头皮发麻,索性直接记结论...
这个时候我们就要分类讨论了.
####case1:没有重根
若这m个单根为$t_1,t_2...t_m$
母函数就是:
$$G(x)=\sum_{h=1}^m\frac{A_h}{1-t_hx}
用无穷等比数列求和的性质可以得到
G(x)=A1(1+t1x+t21x2+⋯)+A2(1+t2x+t22x2⋯)+⋯
所以fn=A1tn1+A2tn2+⋯+Amtnm
接着上面那个例子,特征方程的解是x1=1,x2=2,带入母函数里就是:
G(x)=A11−x+A21−2x
f1=1,f2=3,fn=A1∗1n+A2∗2n
$$
\therefore
\begin{cases}
A_1+2A_2=1\\
A_1+4A_2=3
\end{cases}
\therefore
\begin{cases}
A_1=-1\\
A_2=1
\end{cases}
\\\therefore
f_n=2^n-1
$$
case2:共轭复根
直接上例子:求fn−fn−1+fn−2=0,f1=1,f2=0的通项.这个看其来和之前差不多的样子,但是写出它的特征方程:x2−x+1=0,x=1±√−32就会发现,它没有实数解!!!这怎么办???
没关系,我们试着用上面的方法:
fn=A(1+√3i2)n+B(1−√3i2)n$$$$=12(1−1√3i)(1+√3i2)n+12(1+1√3i)(1−√3i2)n
这些乱七八糟的看起来很不爽对不对?想起一个美妙的等式...
eπi+1=0
复数的三角表示法:
r(cosθ+isinθ)=reiθ
所以我们可以把它换一种表示方式:
令1+√3i2=12+√3i2=eπi3
∴fn=cosnπ3+1√3sinnπ3
这样就没有i了.
针对一对共轭复根还有更简便的方法.就是直接先利用复数的指数表示法,再转化成三角表示法,最后回带通项公式,计算量要小很多.
二重根
推倒实在很麻烦,直接记结论就好,母函数:
G(x)=m∑h=1kh∑j=1Ah,j(1−thx)j
fn=m∑h=1kh∑j=1nj−1Ajtjh
再举个例子:fn−4fn−1+4fn−2=0,f1=0,f2=4
特征方程:
x2−4x+4=0∴x1=x2=2
fn=(A+Bn)2n
解一下系数就可以得到,fn=(1+n)∗2n
线性常系数非齐次递推关系
an+c1an−1+c2an−2+...+ckan−k=rnb(n)
特解形式为 rn(k0nm+k1nm+1+⋯+kpnm+p)
用无重根为例子:$$\therefore f_n=A_1t_1n+A_2t_2n+\cdots+A_mt_m^n+c$$
例子,fn−fn−1−2fn−2=2nn
x2−x−2=0,x1=−1,x2=2
特解c=2n(k0+k1n),带入原方程解得,k1=45,k0=1625
带到结论里就可以:$$\therefore f_n=A_1t_1n+A_2t_2n+c$$
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话