zoukankan      html  css  js  c++  java
  • 程序员的数学

    菜单导航

    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 反证法的主意事项

      反证法从“要证明的命题的否定形式”出发,即必须先假设错误的假设成立。

      但到引出矛盾结论为止的论证过程本身必须正确,之所以这么说因为如果中途的论证出现错误,就不能得出“因为最初的假设错误,所以产生矛盾”的结论。

    参考资料:百度百科,和《程序员的数学.(日)结城浩》

  • 相关阅读:
    第二章函数对象
    2013/10/24初学BOOST
    [转]delete 多表删除的使用
    vs2010配置boost编程环境(照抄并简化)
    游戏服务器修改状态标志位方法
    小思 引用和指针
    第二章:UNIX标准化及实现
    const指针
    第一章:UNIX基础知识
    基础算法——位运算
  • 原文地址:https://www.cnblogs.com/tandaxia/p/10904978.html
Copyright © 2011-2022 走看看