参考资料:《组合数学》
特征方程这个东西是用来求非齐次常数递推式的通项公式的,简单地说,就是:
有一数列fff,f[0..(k−1)]f[0..(k-1)]f[0..(k−1)]为定值;
对于f[i](i>=k)f[i](i>=k)f[i](i>=k),有f[i]=∑j=1kf[i−j]∗b[j]f[i]=\sum_{j=1}^kf[i-j]*b[j]f[i]=∑j=1kf[i−j]∗b[j];
b[j]b[j]b[j]为常数;
那么f[i]f[i]f[i]可以用∑i=1ks[i]∗p[i]n\sum_{i=1}^k s[i]*p[i]^n∑i=1ks[i]∗p[i]n的通项公式表示。
由于很多证明过程书上也没写,所以……
假设f[n]f[n]f[n]是可以直接用一个pnp^npn来表示,则有:
s∗pn−∑j=1ks∗pn−j∗b[j]=0s*p^n-\sum_{j=1}^k s*p^{n-j}*b[j]=0s∗pn−∑j=1ks∗pn−j∗b[j]=0
pn−∑j=1kpn−j∗b[j]=0p^n-\sum_{j=1}^k p^{n-j}*b[j]=0pn−∑j=1kpn−j∗b[j]=0
pk−∑j=1kpk−j∗b[j]=0p^{k}-\sum_{j=1}^k p^{k-j}*b[j]=0pk−∑j=1kpk−j∗b[j]=0
其实这就是一个k次的方程:
那么p一定为这个k次方程的根。
其实这个这个方程就叫做这个数列的特征方程。
最简单的情况:
特征方程有k个不同的根。
把这k个根设为p1,p2,…,pkp1,p2,…,pkp1,p2,…,pk
若f[n]=∑i=1kp[i]n∗s[i]f[n]=\sum_{i=1}^k p[i]^n*s[i]f[n]=∑i=1kp[i]n∗s[i]
其实我们可以根据初值列出关于s的方程:
p[1]0∗s[1]+p[2]0∗s[2]+…+p[k]0∗s[k]=F[0]p[1]^0*s[1]+p[2]^0*s[2]+…+p[k]^0*s[k]=F[0]p[1]0∗s[1]+p[2]0∗s[2]+…+p[k]0∗s[k]=F[0]
p[1]1∗s[1]+p[2]1∗s[2]+…+p[k]1∗s[k]=F[1]p[1]^1*s[1]+p[2]^1*s[2]+…+p[k]^1*s[k]=F[1]p[1]1∗s[1]+p[2]1∗s[2]+…+p[k]1∗s[k]=F[1]
………
p[1]k−1∗s[0]+p[2]k−1∗s[2]+…+p[k]k−1∗s[k]=F[1]p[1]^{k-1}*s[0]+p[2]^{k-1}*s[2]+…+p[k]^{k-1}*s[k]=F[1]p[1]k−1∗s[0]+p[2]k−1∗s[2]+…+p[k]k−1∗s[k]=F[1]
这是个范德蒙矩阵,范德蒙矩阵有解的条件就是PPP互不相同。
所以特征方程有k个不同的根时我们一定能解出s,那么就得到了数列的通项公式。
如果PPP有重复怎么办,设一个根ppp重复了ccc次,我们可以用p,p∗n,p∗n2,…,p∗ncp,p*n,p*n^2,…,p*n^cp,p∗n,p∗n2,…,p∗nc去等效替代。
证明:
代填
斐波拉契数列的通项公式:
f[0]=0,f[1]=1,f[i](i>=2)=f[i−1]+f[i−2]f[0]=0,f[1]=1,f[i](i>=2)=f[i-1]+f[i-2]f[0]=0,f[1]=1,f[i](i>=2)=f[i−1]+f[i−2]
特征方程为:
x2−x−1=0x^2-x-1=0x2−x−1=0
该方程有两个不同的实数根:
p1=1+52,p2=1−52p1={1 + \sqrt 5\over 2},p2={1-\sqrt 5\over 2}p1=21+5,p2=21−5
代入f[0]、f[1]f[0]、f[1]f[0]、f[1],可得方程:
p10s1+p20s2=0p1^0s1+p2^0s2=0p10s1+p20s2=0
p11s1+p21s2=1p1^1s1+p2^1s2=1p11s1+p21s2=1
解得:
s1=5,s2=−5s1=\sqrt 5,s2=-\sqrt5s1=5,s2=−5
∴f[n]=15((1+52)n−(1−52)n)f[n]={1\over \sqrt 5}({({1 + \sqrt 5\over 2})^n-({1-\sqrt 5\over 2})^n})f[n]=51((21+5)n−(21−5)n)