Sum of Squares
文章目录
最近做Project Euler,遇到了需要求平方和的问题。虽然还记得起高中背过的这个公式,但一直没有想过他是怎么被推导出来的。
\[ \sum_{k=1}^{n} k^{2} = \frac{n(n+1)(2n+1)}{6} \]
这个公式不像自然数列的和那样简单直接,可以通过所谓的高斯求和快速得出。 事实上,自然数的平方序列,距离首尾各k个位置的两个数的和并不是一个常数(针对该数列而言)。因此,我想高斯也不能一眼看出来答案:P
正发愁,突然想到离散求和积分间的关系,便尝试用微积分来解决。事实证明,这个思路不仅可以解决平方和问题,还可以解决更高幂次数列求和问题:)
\[ S(n) = \sum_{k=1}^{n} a(k), where: a(k) = k^2 \]
\[ S(n) = P(n) + Q(n) \]
\[ P(n) = \int_0^n a(x) dx \]
\[ Q(n) = \sum_{k=1}^{n} \delta(k), where: \delta(k) = a(k) - (P(k) - P(k-1)) \]
\[ P(n) = \frac{n^3}{3} \]
\[ \begin{eqnarray} \delta(k) &=& k^2 - \frac{k^3}{3} + \frac{(k-1)^3}{3} &=& k-\frac{1}{3} \end{eqnarray} \]
\[ \begin{eqnarray} Q(n) &=& \sum_{k=1}^{n} k-\frac{1}{3} &=& \frac{n(n+1)}{2} - \frac{n}{3} \end{eqnarray} \]
\[ \begin{eqnarray} S(n) &=& \frac{n^3}{3} + \frac{n(n+1)}{2} - \frac{n}{3} &=& \frac{n(n+1)(2n+1)}{6} \end{eqnarray} \]
上面这几行推导,核心在于\[\delta(k)\]这项,这项将离散求和和连续积分联系了起来。在推导过程中,可以看到这项将当前数列的幂次降低了1,因此就可以利用自然数列求和公式了。 更高次幂的数列求和也可以按照这样的思路做,只会多用到一点点组合数的知识:P
试试在纸上画出来吧,可以看得更清楚。后面有时间我会把解释用的图放上来。
虽然这种简单的推导前人做过了(不过我在网上还没有找到相关链接),弄出来还是很开心的XD
文章作者 nanqiao15
上次更新 2018-03-10