《程式設計師的數學 4 數學歸納法,如何征服無窮數列》

2021-09-24 23:46:01 字數 2483 閱讀 3374

本文屬於《程式設計師的數學》讀書筆記系列。作者從送1到100之前求和為例介紹數學歸納法。

我印象中是在小學,數學老師提問的同樣的問題。1+2+3+。。。+100=?

我覺得簡單粗暴的就是直接算,好像還是學珠算的練手的乙個例子。但是高斯是這麼想的,

1+2+3+...+100的計算結果和100+99+98+...+1的計算結果是一樣的,那麼就可以將這兩串數字進行縱向相加,如下:

如此一來,變成了100個101相加,就簡單多了。10100,不過是要求的數的2倍,結果還得除以2,是5050.

歸納

高斯使用了以下等式

如果用變數n來將「1到100」歸納為「1到n」,這樣上面的等式變為如下形式

1+2+3+...+n=

那麼這個等式對於0以上的任意整數n都成立嗎?如果成立該如何證明呢?這時就需要用到數學歸納法了。

斷言g(n):0到n的整數之和為

數學歸納法是證明有關整數的斷言對於0以上的所有整數是否成立時所用的方法。

假設現在要用數學歸納法來證明「斷言p(n)對於0以上的所有整數n都成立」,則證明步驟如下:

● 步驟1

證明「p(0)成立」;

● 步驟2

證明n不論為0以上的哪個整數,「若p(n)成立,則p(n+1)也成立」。    

在上面的證明步驟中,我們將步驟1稱為基底,步驟2稱為歸納。如果步驟1和步驟2都能得到證明,就證明了「斷言p(n)對於0以上的所有整數n都成立」。

首先證明在某個起點值時命題成立,然後證明從乙個值到下乙個值的過程有效。當這兩點都已經證明,那麼任意值都可以通過反覆使用這個方法推導出來。把這個方法想成多公尺諾效應也許更容易理解一些。例如:你有一列很長的直立著的多公尺諾骨牌,如果你可以:

證明第一張骨牌會倒。

證明只要任意一張骨牌倒了,那麼與其相鄰的下一張骨牌也會倒。

● 步驟1:證明基底成立

證明g(0)成立。

g(0)就是「0到0的整數之和與0*(0+1)/2」相等;

可以直接通過計算證明,0到0的整數之和為0,0*(0+1)/2的結果也是0;

步驟1證明完畢。

● 步驟2:歸納的證明

證明n為0以上的任一整數時,「若g(k)成立,則g(k+1)也成立」。

先假設g(k)成立,這時,以下等式成立:

下面來證明,g(k+1) 時成立。

現在進行如下計算,左邊

g(k+1)左邊和右邊的計算結果相同

由此,g(k)到g(k+1)的推導成功,步驟2得到了證明。

至此,通過數學歸納法的步驟1、步驟2都證明了g(n),也就是說通過數學歸納法證明了斷言g(n)對於0以上的任意整數n都成立。

練習:求出奇數的和

1+3+5+7+。。。+(2n-1) =

注意作者還介紹了反面的例子,黑白棋的問題。

遞迴是首先想到的。比如求和方法sum

比如方法:

int sum(int n) 就是計算加到n的和,我們當然可以把高斯公式帶入,但是試著把數學歸納法的語言翻譯為程式?

第一步:證明n=1是成立的:

if (n == 1) ;

第二步:

①假設對於n-1成立

sum(n-1) 返回加到n-1的和

②把假設的結論帶進去

return sum(n-1) + n;

迴圈不變式

就是常見的for迴圈。  迴圈不變式(loop invariant)屬於電腦科學的概念,它是指某段程式迴圈在迴圈前後該段程式的某種性質(通常指程式的正確性)保持不變。其分為三步:

(1)初始化(迴圈第一次迭代之前)的時候,a[1‥ j -1]的「有序性」是成立的;

(2)在迴圈的每次迭代過程中,a[1 ‥j -1]的「有序性」仍然保持;

(3)迴圈結束的時候,a[1 ‥ j-1]的「有序性」仍然成立。

看這個有些抽象,看書上的例子會好很多。

這裡開始跟程式設計實際有關聯了。

數學歸納法的正確敘述

證明,對於所有正整數n,p n 為真。歸納法的敘述如下 a 給出p 1 為真的證明。b 給出 如果所有p 1 p 2 p n 都為真,則p n 1 也為真 的證明 這個證明應對任何正整數n都為真。列舉幾種不太完整的敘述 最簡單和常見的數學歸納法證明方法是證明當n屬於所有自然數時乙個表示式成,這種方法...

對數學歸納法的總結

什麼是數學歸納法 數學歸納法的原理1 證明 n 1 時命題成立 2 假設 n m 時命題成立,那麼可以推導出在 n m 1的時候命題也成立.m代表任意自然數 數學歸納法的證明1 2 3 n n n 1 2 等差數列求和公式 第一步 驗證改公式在n 1時成立,即 左邊為1,右邊為1 1 1 2 1,等...

回憶下高中的數學歸納法

簡單和常見的數學歸納法是證明當n等於任意乙個自然數時某命題成立。證明分下面兩步 證明當n 1時命題成立。假設n m時命題成立,那麼可以推導出在n m 1時命題也成立。m代表任意自然數 這種方法的原理在於 首先證明在某個起點值時命題成立,然後證明從乙個值到下乙個值的過程有效。當這兩點都已經證明,那麼任...