《具体数学》(二)和式

递归式求和:

\left\{\begin{matrix} C_{0}=C_{1}=0& n=1||n=0& \\ C_{n}=n+1+(\sum_{k=0}^{n-1}C_{k})*\frac{2}{n}& n>1&; \end{matrix}\right.

像这种类型的递归式,要快速求出C_{1003}的值,用暴力求的方法,是要算很久的。

所以来化简一下2式:

f1:

nC_{n}=n^{_{2}}+n+2\sum_{k=0}^{n-1}C_{k} ,n>1

用n-1代替n,则f2:

(n-1)C_{n-1}=(n-1)^{_{2}}+(n-1)+2\sum_{k=0}^{n-2}C_{k} ,n-1>1

f1-f2:

nC_{n}-(n-1)C_{n-1}=2n+2C_{n-1} , n>2

这样一来,原式就化简成一个简单的递归式了,即\left\{\begin{matrix} C_{0}=C_{1}=0,C_{2}=3 & n=1||n=0\\ nC_{n}=2n+(n+1)C_{n-1} , n>2 & n>2 \end{matrix}\right.;

问题再一次来了,怎么求解这个递归式呢?

a_{n}=n,b_{n}=n+1,c_{n}=2n,即a_{n}C_{n}=c_{n}+b_{n}C_{n-1}

假设,存在一个s_{n}满足s_{n-1}a_{n-1}=s_{n}*b_{n},即s_{n}a_{n}C_{n}=s_{n-1}a_{n-1}C_{n-1}+s_{n}c_{n},令S_{n}=s_{n}a_{n}C_{n},即:

S_{n}=S_{n-1}+s_{n}c_{n}     =>    S_{n}=s_{2}*a_{2}*C_{2}+\sum_{k=3}^{n}s_{k}c_{k}    =>  将S_{n}=s_{n}a_{n}C_{n}带入前式,即:

C_{n} =\frac{1}{s_{n}*a_{n}}(\sum_{k=3}^{n}(s_{k}c_{k})+s_{2}*a_{2}*C_{2})=\frac{1}{s_{n}*a_{n}}(\sum_{k=3}^{n}(s_{k}c_{k})+s_{3}*b_{3}*C_{2}),至此,就会有一个问题了s_{n}=?,注意看s_{n}*b_{n}=s_{n-1}*a_{n-1} => s_{n}=\frac{a_{n-1}}{b_{n}}s_{n-1},在求解这个递归式得:s_{n}=\tfrac{a_{n-1}*a_{n-2}*...*a_{0}}{b_{n}*b_{n-1}*....*b_{1}}=\frac{(n-1)*(n-2)*...*1}{(n+1)*(n-0)*...*3}=\frac{2}{(n+1)n};所以\sum_{k=3}^{n}(s_{k}c_{k})=4\sum_{k=3}^{n}\frac{1}{k+1}

所以最后的结果是:s_{3}=\frac{2}{4*3},b_{3}=4,所以C_{n}=\frac{(n+1)}{2}(\sum_{3}^{n}(s_{k}c_{k})+\frac{2}{3})=\frac{n+1}{2}(\sum_{k=1}^{n}(s_{k}c_{k})-\frac{4}{3})C_{n}=2(n+1)\sum_{k=3}^{n}\frac{1}{k+1}-\frac{2}{3}(n+1)

再至此,就会剩下最后一个问题了\sum_{k=1}^{n}\frac{1}{k+1}是多少?

H_{n}=\sum_{k=1}^{n}\frac{1}{k},这个式子和最后出现的和式相似,事实上因为他出现的如此频繁,我们可以给他取一个名字调合数(小提琴弦所产生的第k个范音(harmonic)是弦长1/k处所产生的基音)。下面,求解:

\sum_{1<=k<=n}\frac{1}{k+1}=\sum _{1<=k-1<=n}\frac{1}{k}=\sum _{2<=k<=n+1}\frac{1}{k}=\sum _{1<=k<=n}\frac{1}{k}-1+\frac{1}{n+1}=H_{n}-\frac{n}{n+1}=ln(n)+0.57721566490153286060651209-\frac{n}{n+1}

 

所所以,结果是:

C_{n}=2(n+1)H_{n}-\frac{8}{3}n-\frac{2}{3} ,n>1

说实话,这篇文章也算不上原创,可以说全是书上的内容《具体数学  计算机科学基础(第二版)》

欢迎指出错误!!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章