程序員的數學


菜單導航

1、常用數學公式: 等差/等比數列通項和求和、指數、對數、排列組合等

2、邏輯且/或/非/異或,和余數

3、數學歸納法

4、遞歸

5、指數爆炸

6、反證法

 

一、常用數學公式

1.0  實數:有理數和無理數的總稱,常用字母R表示實數集;

  有理數是整數和分數的集合,有理數的小數部分是有限或者無限循環的數;小數部分為無限不循環的數為無理數

  自然數:全體非負整數組成的集合,常用字母N來表示

  質數:又稱素數,大於1的自然數中,除了1和它本身以外不再有其他因數因數:又叫約數,整數a除以整數b(b≠0)的商正好是整數而沒有余數,則b是a的因數;

  :乘方的結果。a = n^m, 指m個n相乘,把n^m乘方的結果a叫做冪,也叫n的m次冪;

1.1  等差數列

  定義:一個數列從第二項起,每一項與它的前一項的差等於同一個常數。這個數列就叫做等差數列,這個常數也叫等差數列的公差,公差常用字母d表示。

  通項公式:formula      ,        a1為等差數列首項,公差為d, 為 第n項 

  求和公式:formula  ,   Sn為數列前n項之和

  等差中項:等差數列中,若有n+m=2*r,  則任意兩項  的關系為:

  其他:跟等差數列知識相關的一個有趣故事是:“高斯求和

1.2 等比數列

  定義:一個數列從第二項起,每一項與它的前一項的比等於同一個常數。這個數列就叫做等比數列,這個常數也叫等比數列的公比,公比通常用字母q表示。

  通項公式: (n∈N*),當q>0時,可把看做是自變量n的函數,點(n, )是曲線 上的一群孤立的點。

  求和公式:   或   (q≠1)。

  等比中項:  ; 即等比數列中,若q+p = 2r, 則有, 等比中項。

   其他:跟等比數列知識相關的一個有趣故事是:“棋盤上的麥粒

1.3 指數函數

  定義:一般地,函數(a為常數且以a>0,a≠1)叫做指數函數, 函數的定義域是R,自變量x就叫做指數,常數a叫底數。

      對於一切指數函數來講,值域為(0, +∞);指數函數的前系數為1;

  指數型函數:y = (k≠1), 格式像指數函數,但不是指數函數;

  冪函數:一般地,y=xα(α為有理數)的函數,即以底數自變量,冪為因變量指數為常數的函數稱為冪函數

      例如函數y=x0 、y=x2、y=x-1(注:y=x-1=1/x、y=x0時x≠0)等都是冪函數

    指數函數常用公式:

  1.3.1:    ;         ;  (同底相乘,指數相加;同底相除,指數相減)   

  1.3.2:      (指數的指數,指數相乘)

  1.3.3:

1.4 對數函數

  定義:一般地,對數函數以真數)為自變量,指數為因變量,底數為常量的函數。

     比如ax = n(a>0,且a≠1),那么數x叫做以a為底n的對數,記作x=logan,讀作以a為底n的對數,其中a叫做對數的底數,n叫做真數

     一般地,函數y=logax(a>0,且a≠1)叫做對數函數,也就是說以冪(真數)為自變量,指數為因變量,底數為常量的函數,叫對數函數。

   常用公式:

  1.4.1 :;    ;   負數和零無對數;

  1.4.2 :  *  = 1 ;

  1.4.3 :  ;

  1.4.4:

  1.4.5:

  1.4.6:  

  1.4.7:

幾張圖表如下:

 

1.5 排列組合

  1.5.1 階乘:階乘是指一個運算符號,一個正整數的階乘factorial)是所有小於及等於該數的正整數,並且0的階乘為1。

       自然數n的階乘寫作n!,亦即n!=1×2×3×...×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。

  1.5.2 排列定義:從n個不同元素中,任取m(m≤n,m與n均為自然數,下同)個元素按照一定的順序排成一列,叫做從n個不同元素中取出m個元素的一個排列;

        從n個不同元素中取出m(m≤n)個元素的所有排列的個數,叫做從n個不同元素中取出m個元素的排列數,用符號 A(n,m)表示。

  1.5.3 排列計算公式 

  1.5.4 組合定義:從n個不同元素中,任取m(m≤n)個元素並成一組,叫做從n個不同元素中取出m個元素的一個組合;

         從n個不同元素中取出m(m≤n)個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數。用符號 C(n,m) 表示。

  1.5.5 組合計算公式 

  1.5.6 排列和組合區別:排列是講究排序的,而組合不考慮元素排序,一般來說,從n中不同元素取出m個元素的排列,要比組合數量多。

       對於組合公式的理解,相對排列而言會繞一點,這里試圖解釋一下組合公式:

      從n個不同元素中取出m個元素的所有組合個數,可以理解成先從n個不同的元素中取出m個元素的所有排列個數為Anm    (即A(n, m) ),

      然后因為m個元素的排序方式共有m!(即m*(m-1)*(m-2)*...*1, m的階乘)種,而組合不考慮元素排序,相當於數量A(n, m)中重復了m!次,

      所以排序數量A(n, m)  除以 排序方式數量m! ,  則是我們需要的沒有重復的組合數量了,即C(n, m) = A(n, m) / m!

  

二、邏輯且/或/非/異或,和余數

2.1 計算機為什么采用二進制計數法

  2.1.1 在10進制計數法中,位數少,但是數字的種類多。(對於人類來說,比較易用)

  2.1.2 在二進制計數法中,數字的種類少哦,但是位數多。(對於計算機來說,這種比較易用)

2.2 指數的法則:對於指數 a^n, n每減1,新的值就變成原來的1/a,即a^(n-1) 為 a^n的1/a

2.3 零的作用:用來表示占位;也用來統一標准,簡化規則;

2.4 邏輯

  命題:能夠判斷對錯的陳述句叫做命題。命題正確時,則該命題為“真”(true);反之,命題不正確時,稱該命題為“假”(false)。

  在建立規則時,需要確認規則有沒有“遺漏”和“重復”;

  沒有“遺漏”,即完整性,明確此規則在什么情況下都能適用;沒有“重復”,即具備排他性,明確此規則不存在矛盾之處。

  邏輯從根本上說是對完整性和排他性的組合表達。

  邏輯非:非真為假,非假為真;

  邏輯且:A和B都為真時,才是真;A和B只要有一個為假,則為假;

  邏輯或:A和B只要有一個為真,則結果為真;A和B都為假,則為假;

  邏輯異或:A和B一真一假,則結果為真;A和B都為真,或者都為假,則結果為假;

  德·摩根定律:“非A”或者“非B”, 和非“A與B”是等價的; “非A”並且“非B”,和非“A或B”是等價的;

2.5 卡諾圖:簡化復雜邏輯表達式的有效工具

  2.5.1 二燈游戲(綠燈、黃燈):

    規則:1)綠燈滅,黃燈亮;   

       2)綠燈、黃燈滅;   

       3)綠燈、黃燈都亮

    命題A  :  綠燈亮

    命題B :  黃燈亮

    邏輯表達式為:(非A 並且 B) 或者 (非A 並且 非B) 或者 (A 並且 B)

    卡諾圖表示法(打上鈎):

    

  2.5.3 三燈游戲 (綠燈、黃燈、紅燈)

    規則:1)綠燈、黃燈、紅燈都滅

       2)黃燈滅、紅燈亮

       3)綠燈滅、黃燈亮

       4)綠燈、黃燈、紅燈都亮

    命題A : 綠燈亮

    命題B : 黃燈亮

    命題C : 紅燈亮

    邏輯表達式:(非A 且 非B 且 非C) 或 (非B 且 C)  或 (非A且 B) 或 (A且B且C)

    卡諾圖表示法(打鈎):

      

 

 

2.6 余數的作用:分組,將較大的數字除一次就能分組

  2.6.1 思考題:今天是周三,那么100天后是周幾? 一億天以后呢?(運用余數思考)

  2.6.2 思考題:今天是周三,10^100天后是周幾?(當計算有難度的時候,可以試圖通過找規律來簡化問題)

  2.6.3 思考題:1234567^987654321的個位數是什么?(找規律:找出規律,再結合余數,把大數字簡化成小數字)

  2.6.4 思考題(黑白棋讀心術):

     1)魔術師和他的徒弟在台上表演,台下有觀眾,魔術師蒙着眼睛,徒弟不允許說話,若干黑白棋(每個黑白棋像硬幣樣,只是一面黑色,一面白色);

        2)讓觀眾在桌子上隨機放7枚黑白棋的棋子排成一列。魔術師蒙着眼睛,看不到棋子;

     3)讓魔術師的徒弟在看完這7枚棋子后,在后面添加了一枚棋子,與其他棋子並排。這時有8枚棋子,魔術師依然蒙着眼睛;

     4)這時讓觀眾可以將其中1枚棋子翻轉,或者不翻轉任何棋子。此間,徒弟和觀眾不發一言,魔術師依然蒙着眼睛,不知道觀眾有沒有翻轉棋子;

     5)魔術師摘下眼罩,觀察8枚棋子,然后馬上就能判斷:“觀眾翻轉了棋子” 或 “沒有翻轉棋子”,識破觀眾的行為。

    問:魔術師是如何識破觀眾的行為的?

   2.6.5 思考題(尋找戀人):

    在一個小王國中,有8個村子(A~H)。如下圖所示,各個村之間道路相連(黑點表示村子,線表示道路)。而你要尋找流浪在這個王國的你唯一的戀人。

    你的戀人住在這8個村子中的某一個里,她每過1個月便順着道路去另一個村子,每個月都一定會換村子,然后選擇哪個村子是隨機的,預測不了。

    例如:如果戀人這個月住在G村,那么下一個月可能會住在“F、C、H中的某一個村子“。

    目前你手上掌握的確鑿信息只是:1年前(12個月前),戀人住在G村。

    現在問:這個月戀人住在A村的概率?(奇數、偶數)

    

  2.6.6 思考題(鋪設草席):

    如下圖所示,有這樣一個房間,使用圖中右下角所示的草席能夠正好鋪滿房間嗎?(前提是不能使用半張草席)

    如果不能鋪滿的話,請說明理由?

    

  2.6.7 思考題(哥尼斯堡七橋問題):

    如下圖所示,在很久以前,有一個叫哥尼斯堡的小城。小城被河流分割成了4塊陸地。人們為了連接這些陸地,建設了7座橋。

    現在要你找出走遍7座橋(a、b、c、d、e、f、g)的方法,但是,必須遵守以下條件:

      1)走過的橋不能再走

      2)可以多次經過同一塊陸地

      3)可以從任一陸地為起點

      4)不需要再回到起點

    最后,如果能夠走遍7座橋的話,請說明一下方法。如果不能,也請證明一下。

    

 

三、數學歸納法

3.1 斷言:斷定一個特定前提為真的陳述

3.2 數學歸納法:數學歸納法是證明有關整數的斷言對於0以上的所有整數(0、1、2、3...)是否成立時所用的方法。

3.3 數學歸納法的證明方法步驟:

  1)步驟1:證明“P(0)成立”。步驟1也叫基底(base)

  2)步驟2:證明不論k為0以上的哪個整數,“若P(k)成立,則P(k+1)也成立”。步驟2也叫歸納(induction)

  若步驟1和步驟2都能得到證明,就證明了“斷言P(n)對於0以上的所有整數n都成立”。

3.4 數學歸納法實例(求奇數的和):

  3.4.1 斷言Q(n) : 1 + 3 + 5 + 7 + ... + (2*n-1) = n^2

  3.4.2 用數學歸納法來證明“斷言Q(n)對於1以上的所有整數n都成立”

  3.4.3 步驟1:基底的證明

     證明Q(1)成立。因為Q(1) = 1^2, 所以確實成立。步驟1證明完畢。

  3.4.4 步驟2:歸納的證明

    證明k為1以上的任意整數時,“若Q(k)成立,則Q(k+1)也成立”。

    假設Q(k) = 1 + 3 + 5 + 7 + ... + (2*k-1) = k^2 成立

    則來證明等式Q(k+1)成立

    

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

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

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

     

四、遞歸

4.1 思考題(漢諾塔):

  有三根細柱(A、B、C)。A柱上套着6個圓盤。這些圓盤大小各異,按從大到小的順序自下而上擺放。

  現在要把A柱上的6個圓盤全部移到B柱上。並且在移動圓盤時須遵守以下規則:

  1)一次只能移動柱子最上端的一個圓盤

  2)小圓盤上不能放大圓盤。

  將1一個圓盤從一根柱子移到另一根柱子,算移動“1次”。那么,將6個圓盤全部從A移到B最少需要移動幾次呢?

  (可以先通過3個圓盤、5個圓盤找出遞歸規律)

  

  先來看看3層漢諾塔的解法(移動7次):

  

  發現移動2個圓盤的規律:

  

 

4.2 遞歸的思維方式:將復雜問題轉換成較為簡單的同類問題。在問題中找出遞歸結構,根據遞歸結構建立遞歸公式。

4.3 思考題(不斷繁殖的動物):

  有一種動物,它出生2天后就開始以每天1只的速度繁殖后代。假設第一天,有一只這樣的動物(該動物剛出生,從第三天起繁殖后代)。

  問到第11天,共有多少只?

 

五、指數爆炸

5.1 思考題(折紙問題):

  假設現在有一張厚度為1mm的紙,紙質非常柔軟,可以對折無數次。每對折一次,厚度便翻一番。

  已知地球距月球約39萬公里,請問對折多少次后厚度能夠超過月地距離呢?

5.2 指數爆炸:數字每次翻倍,然后我們會發現這種數字會急速增長。這種情況我們叫它“指數爆炸”,也可以稱為“指數式增長”

5.3 思考題(尋找犯人,二分法查找)

  有15個犯罪嫌疑人排成一排,其中只有一個是真正的“罪犯”。

  你要通過問他們“罪犯在哪里?”來找出 真正的罪犯。

  假設選擇其中1人問:“罪犯在哪里?”會得到以下3鍾答案,其中有一個是正確的。

  1)“我是罪犯”(詢問對象是罪犯時)

  2)“罪犯在我左邊”

  3)“罪犯在我右邊”

  這時,僅通過3次問話就能從15人中找到真正的罪犯。那么,應該怎么問話呢?(找出地推結構以及遞推公式)

  

  

 

 

六、反證法

6.1 反證法

  1)首先,假設“命題的否定形式”成立

  2)根據假設進行論證,推導出矛盾的結果

  一言以蔽之,反證法就是“先假設命題的否定形式成立,然后再進行推理,引出矛盾”

6.2 反證法實例:為什么不存在“最大的整數”?

  假設存在“最大的整數”,並將它設為M。

  那么M+1就比M大,這與M是最大的整數的假設相矛盾。

  因此不存在“最大的整數”。

6.3 反證法實例2:請證明質數是無窮的

  假設“質數不是無窮的”,即“質數的個數是有限的”成立。

  假設質數的個數是有限的,所以所有質數的集合就可以寫為:

  2,3,5,7,..., P

  現在,將所有的質數(2,3,5,7,..., P)相乘,並設相乘的結果+1為Q。

  即Q = 2*3*5*7*...*P + 1

  因為假設質數是有限個的,所以這個Q的大小也是有限的。

  而Q比所有的質數相乘的結果大1,因此Q比任何質數(2,3,5,7,...,P)都大。

  “Q比任何質數都大”也就意味着“Q不是質數”。

  另一方面,這個Q除以2,3,5,7,...,P中的任一一個數,余數都是1(不能整除)。

  這就表明,Q只能被1和Q本身整除,所以根據質數的定義可得“Q是質數”。

  因此“Q不是質數”和“Q是質數”都成立,這是矛盾的。

  因此,通過反證法證明了“質數是無窮的”。

 6.4 反證法的主意事項

  反證法從“要證明的命題的否定形式”出發,即必須先假設錯誤的假設成立。

  但到引出矛盾結論為止的論證過程本身必須正確,之所以這么說因為如果中途的論證出現錯誤,就不能得出“因為最初的假設錯誤,所以產生矛盾”的結論。

 

參考資料:百度百科,和《程序員的數學.(日)結城浩》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM