数学归纳法的两步与它的边界
与 有关的命题往往需要对无穷多个 验证,逐个代入永远做不完。数学归纳法把这件无穷的工作压成两步:证明命题在起点成立,再证明「若在 处成立则在 处也成立」。两步齐备后,命题沿正整数逐级传递下去。
1 · 两步的分工
定理 1.1(数学归纳法) 设 是关于正整数 的命题。若 成立,且对任意 由 成立可推出 成立,则 对一切 成立。
奠基步给出第一块骨牌,递推步保证每一块都能推倒下一块。两步缺一不可,而且缺的方式不同:缺奠基步时递推链条完好但无处启动, 可以整条都是假的——「」这个假命题就满足递推步;缺递推步时验证再多项也只是有限多项。
例 1.1 证 。奠基: 时左端 、右端 ,成立。递推:设 处成立,则 处的左端等于 ,即 处的右端。两步齐备,命题对一切正整数成立。
2 · 归纳假设必须用上
递推步的要求是「由 推出 」,若推导过程完全没有用到 ,那就不是归纳,而是直接证明了 ——这时归纳法本身是多余的,且往往说明推导有漏洞。例 1.1 的递推步里, 这一项正是归纳假设提供的,把左端 项之和换成了闭式;不用它就得重新面对求和。
判断一次归纳是否真正用上假设,办法是把假设那一行删掉再读一遍推导。读得通说明用不着归纳法,读不通才是正常的。
3 · 验证有限多项不是证明
在 处的取值全是素数:。连续四十次验证都通过,命题「 恒为素数」看着相当可信。 处它失效了:。
这个多项式是欧拉给出的。它的用处不在于产生素数,而在于说明枚举验证的极限:四十项的连中不构成任何证明,而归纳法只要两步。本页的 lab 里这一条与前几条命题并列,唯一的区别是它的核对表在第 行()翻成不成立。
警示 · 反过来也要留神:核对表全绿只说明「在核对到的范围内没有反例」,不说明命题成立。firstMismatch 的返回值是 null 时,正确的读法是「前
项内没找到反例」,不是「命题为真」。把它当作证明用,犯的就是本节这条错。
4 · 起点不必是 1
递推步只要求「从某处起每一步都能传下去」,起点 由命题本身决定。 就不是从 起成立的: 时 成立,而 时两端都是 、 时 、 时两端都是 ,三处都不成立; 时 重新成立,此后一直成立。这条命题的正确表述是「对一切 成立」,奠基步取 。
有趣的是 处它也成立,却接不上递推链——递推步在 处推不出 ,孤立的一个真值不构成起点。核对表上这一条会显示成「首行成立、第二至第四行不成立、其后全部成立」,正好说明起点必须选在递推步真正生效的位置。
5 · 参考文献
- Mathematical induction. Wikipedia. 归纳法的表述、变体与常见错误。https://en.wikipedia.org/wiki/Mathematical_induction
- Formula for primes. Wikipedia. 这类多项式与素数生成的关系。https://en.wikipedia.org/wiki/Formula_for_primes
- All horses are the same color. Wikipedia. 归纳步看似成立而实际有漏洞的经典反例。https://en.wikipedia.org/wiki/All_horses_are_the_same_color