美文网首页
总结 | 基于代码的数学符号释义(一)

总结 | 基于代码的数学符号释义(一)

作者: 天善智能 | 来源:发表于2019-02-21 10:13 被阅读7次

    欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

    对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

    作者:张小吉  人工智能爱好者社区专栏作者

    知乎ID:https://www.zhihu.com/people/mr.ji

    个人公众号:鸡仔说  

    网上有一个经典的算法入门题:

    在重新学习了一段时间数学基础后,我发现,数学本身的逻辑其实并非复杂到让人难以理解的程度。而最大的坎恐怕就是其中犹如天书般的数学符号吧?基于此,我想整理一个基于代码的数学符号释义,由于我本身的知识水平限制,若出现了部分错误,还希望各位Ladies和乡亲们海涵并指出。另,本文长期更新,欢迎大家补充和收藏。

    No.1  Σ

    含义:多项数之和

    中文:西格玛

    英文:sigma

    小写:σ

    公式解释: 

    表示 X1 到 Xn 的和,比如n=10的时候,就是10项的和

    代码释义

    1def sigmod(i, n):
    2    # Σ 多项数求和
    3    if not isinstance(i, int) or not isinstance(n, int):
    4        return False
    5    return reduce(lambda x, y: x+y, range(i, n+1))

    相关拓展: 

    双西格玛号,要先求内部的加和再带入外部的求和中,举个🌰:

    后面的步骤就是如上一样的求和公式就可以解出来了

    代码释义

    1def double_sigmod(a, b, i, j, func=None):
    2
    3    if not isinstance(a, int) or not isinstance(b, int) or not isinstance(i, int) or not isinstance(j, int) or not func:
    4        return False
    5
    6    result = 0
    7    for k in range(a, b+1):
    8        for n in range(i, j+1):
    9            result += func(n, k)
    10
    11    return result

    参考资料

    https://www.quora.com/What-is-an-example-of-a-double-summation

    含义:多项数连续乘积

    中文:派

    英文:pai

    小写:π

    表示从 X1 到 Xn 的连续乘积,比如n=10的时候,就是10项的乘积

    代码释义

    1def continue_multiply(i, n):
    2    '''    Π 连乘     '''
    3    if not isinstance(i, int) or not isinstance(n, int):
    4        return False
    5    return reduce(lambda x, y: x*y, range(i, n+1))

    No.3 n!

    含义:一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。

    中文:阶乘

    英文:factorial

    公式解释:n! = 1 × 2 × 3 × ... × n

    也可以理解为连乘的特例,条件限制为,即n只能为正整数,并且i从1开始

    代码释义

    1def factorial(n):
    2    '''    n! 阶乘    '''
    3    if not isinstance(n, int):
    4        return 'Invalid data, please input a int number'
    5
    6    if n == 0 or n == 1:
    7        return 1
    8
    9    else:
    10        return n * factorial(n-1)

    含义:从n个不同元素中每次取出m(n≥m)个不同元素,组合在一起(不关心顺序)

    中文:组合

    英文:combination

    可以理解为一个袋子中有n个标记的小球,从中拿出m个的组合方式。这个需要自己动手动笔算几次就比较容易理解了。

    代码释义

    1def combination(iter=None, m=0):
    2    '''    从 n 中选出 m 个,进行组合     '''
    3    result = []
    4    tmp = [0] * m
    5    length = len(iter)
    6
    7    def next_num(li=0, ni=0):
    8        if ni == m:
    9            result.append(copy.copy(tmp))
    10            return
    11        for lj in range(li, length):
    12            tmp[ni] = iter[lj]
    13            next_num(lj + 1, ni + 1)
    14
    15    next_num()
    16    return (result, len(result))

    含义:从n个不同元素中每次取出m(1≤m≤n)个不同元素,排成一列(有顺序要求)

    中文:组合

    英文:permutation

    可以这么理解,从n个有标记的小球中,先取出来一个,然后再在接下来的n-1个元素中去除一个放到第二个位置,最后从n-m+1个元素中,取出一个放在第m个位置上

    代码释义

    (备注,我那个n中选择m个的算法还没搞出来,只实现了全排列,后续搞明白了再补充)

    1def permutation(iter=None, n=0):
    2    '''     从 n 中选出 n 个,进行排列    '''
    3    result = []
    4    tmp = [0] * n
    5
    6    def next_num(arry, ni=0):
    7        if ni == n:
    8            result.append(copy.copy(tmp))
    9            return
    10        for lj in arry:
    11            tmp[ni] = lj
    12            arry_c = arry[:]
    13            arry_c.pop(arry.index(lj))
    14            next_num(arry_c, ni+1)
    15
    16    next_num(iter[:], 0)
    17    return (result, len(result))

    最后温馨提醒,本文会长期更新。也欢迎小伙伴补充更多不是很明了的数学公式,后续会继续完善。

    另外,代码已经同步上传至GitHub,欢迎小伙伴follow和star:→→传送门戳阅读全文

    一道思考题:求1-100的和(要求时间复杂度最小,温馨提示:尽量使用数学知识)

    推荐阅读:

  1. 从0开始如何用一个月杀进机器学习比赛Top25%

  2. 机器学习算法的随机数据生成


  3. XGBoost算法原理小结

  4. 2018年终精心整理|人工智能爱好者社区历史文章合集(作者篇)

  5. 2018年终精心整理 | 人工智能爱好者社区历史文章合集(类型篇)

  6. 公众号后台回复关键词学习

    回复 免费                获取免费课程

    回复 直播                获取系列直播课

    回复 Python           1小时破冰入门Python

    回复 人工智能         从零入门人工智能

    回复 深度学习         手把手教你用Python深度学习

    回复 机器学习         小白学数据挖掘与机器学习

    回复 贝叶斯算法      贝叶斯与新闻分类实战

    回复 数据分析师      数据分析师八大能力培养

    回复 自然语言处理  自然语言处理之AI深度学习

    相关文章

      网友评论

          本文标题:总结 | 基于代码的数学符号释义(一)

          本文链接:https://www.haomeiwen.com/subject/puolyqtx.html