数学思维 计算机编程算法和数学有什么关系?
计算机编程算法和数学有什么关系?
数学对于计算机算法编程非常重要。我将主要从以下两个方面来解释为什么它如此重要
数学和算法编程需要很强的逻辑思维能力。程序代码的逻辑结构、连接方式和处理方式需要较强的逻辑思维能力。如果你学好数学,有很强的逻辑思维能力,你通常会对算法编程有更深的理解。
这应该是为什么数学和算法编程更相关的一个重要原因。无论是计算机的底层还是底层,数学知识都处处体现。例如,计算机底层的二进制、机器学习和深度学习的梯度求导、SVD分解、张量分解、PCA特征值、优化问题、密码学的大数分解、概率图模型等都与数学有着密切的关系。我举两个例子来实现
代码实现如下
代码比(float)(1.0/sqrt(x))快4倍,计算性能有了质的飞跃。为此,专门有一篇论文《快速平方根逆》来解释这段代码的数学原理。感兴趣的同学可以找这篇文章学习。
如果不直接使用数学知识和搜索,时间复杂度为O(n),效率较低,很难按照目前的计算机水平进行计算。如果我们知道Brahmagupta–Fibonacci恒等式、Pollard-Rho分解法、二次同余方程的解、欧氏除法等数学知识,那么求解这个问题的时间复杂度就大大降低,结果保证在0.2秒之内。
如果工作是算法岗位,数学更重要,因为机器学习、数据挖掘、NLP等方向的基本原理基本上都离不开数学。
泛型编程是什么?
通用编程允许您编写完全通用和可重用的算法,这些算法与为特定数据类型设计的算法一样高效。STL是泛型编程的代表作,是一种高效、通用、可互操作的软件构件。所谓泛化是指它可以对多种数据类型进行操作,这与模板类似。STL是巨大的,可以扩展。它包含了许多计算机的基本算法和数据结构,并将算法与数据结构完全分离。该算法是通用的,不与任何特定的数据结构或对象类型相关联。STL是一个基于迭代器和容器的通用算法库。容器的存在使得这些算法具有可操作性。STL包括各种通用算法、迭代器、容器和函数对象。STL不仅仅是有用组件的集合,它是一种形式化的、有组织的体系结构,用来描述软件组件的抽象需求。
编程对数学有帮助吗?
看完下面的答案,我觉得大家对这个问题的理解都很狭隘。
“编程对数学有帮助吗?”--我认为这个问题包含两个方面:
1。编程能解决数学不能解决的问题吗?
这个问题的答案是肯定的。
让我举两个例子:
(1)四色定理:这个命题最早是由英国数学家弗朗西斯·古德里在1852年提出的:“我们能用四种颜色给所有的地图染色吗?”。一百多年后,无数数学家为之奋斗,但他们从未提出过纯数学形式的正确证明。直到1976年,数学家Kenneth Appel和Wolfgang Haken在计算机的帮助下第一次得到了完整的证明,四色问题最终成为四色定理。这也是计算机证明的第一个定理。
(2)实时弹道、核反应过程等:计算机发明的初衷是解决军备竞赛中的实时弹道计算和核反应相关过程计算,涉及到大量微分方程的求解。实际上,用纯数学方法求解微分方程所占的比例很小。为了求解一般微分方程,通常的方法是对其进行离散,并将离散结果作为计算机的输入,通过相应的数值计算程序进行逼近。
此外,天气预报和其他涉及非线性、复杂性甚至混沌的场景都是计算机可以帮助纯数学的地方。
2. 编程有助于提高数学水平吗?
编程实际上使用“计算思维”,这与纯数学的“数学思维”不同。
“计算思维”更注重形式化和自动化。形式化和自动化与建模相对应。这也客观上决定了编程可以锻炼建模能力,这是应用数学中一项非常重要的技能。
逻辑思维能力是一切科学和工程思维的基础,编程并不是提高这一技能的唯一途径,客观地说,纯数学研究对逻辑思维能力的培养强度远远高于编程。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。