我经常得到的印象是,我的数学知识(因为它与软件开发领域有关)存在一些差距.我是一个受过良好教育的人.我有大学学位.我一直很喜欢学习,这就是为什么我想尝试填补这些空白.
我的工作是在金融行业,我觉得如果我能更好地掌握进入它的数学/逻辑或概念,我们所做的许多大规模数字运算任务都可以提高效率.可以利用它作为捷径.
你有什么建议吗?你发现的书有助于此吗?视频讲座?
编辑:我应该注意到我的学位是计算机科学,所以我熟悉一些相关的数学领域.我只是不确定如何最好地了解它们或改进我已经知道的东西:)
对编程非常有用的一个数学领域是离散数学.对于一个很好的参考是"计算机科学数学",这是麻省理工学院开放课件当然这里.
按重要性排序,我会说:
代数
组合学
统计与概率
矢量数学
矩阵数学
结石
在我看来,代数对任何体面的程序员都是必不可少的,因为它构成了变量表示和表达式评估的基础(函数,交换性和操作的传递性等).
组合算法对于各种图形算法(遍历图中的所有节点,查找最短路径等)至关重要.在几乎任何编程环境中,了解组合和排列的方法都至关重要.
接下来是统计数据,特别是如果你想进入AI或机器学习.统计数据可能是程序员最大的数学知识领域.在大多数情况下,您不需要深入了解多变量,例如多变量回归.只知道如何(以及在什么情况下)快速计算平均值,中位数,模式,标准差,误差范围,置信区间和条件概率对于许多机器学习应用来说都是有用的.
矢量数学在各种信息建模应用中很重要(n维矢量空间模型是一种非常方便的文档语义推理方法),也适用于各种3D图形应用.
矩阵数学很像矢量数学,就其应用程序而言(人工智能,信息模型,3D等),但它有点棘手,因为它增加了另一个维度.(矩阵数学是我自己的阿喀琉斯之踵;我绝对可以使用刷子.)
对于进行科学计算和模拟的人来说,微积分是必不可少的.
玩得开心!
编辑:
我认为,掌握数学知识的最佳方法是开展使用该知识的项目.例如,如果你想要学习一些统计数据(比如,真正学习它,这样你就可以不用仔细查看所有公式),那么你可能会对从Netflix奖竞赛中分析数据集感兴趣.
该数据集包含来自Netflix用户数据库的超过1亿条记录,并提供了一个巨大的机会来尝试实现一些数学繁重的算法.
至于实际参考资料,我发现维基百科绰绰有余.例如,在我最近的一个项目中,我反复提到了一些关于核密度估计和矢量场的文章.
关于硬核数学(因为我几乎完全是自学成才)的令人生畏的事(对我来说)是符号.所有那些希腊字母让我的头部旋转了一下.但是如果你多次阅读这些文章(以及像"数学西格玛符号"这样的短语谷歌),那么将他们所谈论的内容拼凑起来并不困难.