我如何考虑编程中的数学?

时间:2009-07-11 17:17:42

标签: math

我不确定这是否属于SO。我正在阅读一些旧的数学教科书,并试图理解一般的数学。不是如何形象。我能做到这一点,而不是数学正在做什么。

我确信这是非常明显的,但在我考虑更多游戏编程之前,我从未想过它。把数学看作是用来解释,准确解释,为什么事情起作用的“语言”是正确的吗?

我很难再问这个问题,我确信这对大多数人来说是显而易见的,但经过多年的数学运算,我终于想到有人要求“找到一条线的方程”,人们会认出这一点线的特征(y = mx + b)在空间和找到的关系中。他们需要一个巨大的段落旁边的东西(像这个)和非常精确的东西。我们称这种数学为基础,它只不过是一种表征事物的象征性方式。

真的,我在想,“我知道为什么他们说'找到一条线的等式'。”

所以现在我在思考,不只是谷歌搜索一个公式,告诉我如何与一个行走的人转弯曲线或遵循一条路径,但为什么以及如何以数学方式然后以编程方式表示。

希望对编程中的数学有所评论。

11 个答案:

答案 0 :(得分:4)

以我的思维方式,我创造了一个世界某些方面的“模型”。例子:

  • 利润=收入 - 支出
  • 我扔了一个球,它的路径将是一个带有等式的抛物线......

然后我在计算机程序中表示模型。所以某种抽象是程序的基础,有时数学是如此“显而易见”,我们几乎没有注意到它,有时候(例如模拟游戏)它非常清楚,而且相当棘手。

关键理念:数学可以用来模拟现实,大多数商业系统可以被视为现实模型。

话虽如此,在30年的编程中,我所做的真数(代数,微积分)数学的数量是可以忽略不计的。

答案 1 :(得分:4)

史蒂夫·耶格写了一篇非常好的文章,你可能会觉得有用:Math Every Day

答案 2 :(得分:1)

我建议您查看与theory of computation相关的资料。例如:

这些不是关于胆小者的论文,但它们会让你深入了解数学与计算机科学之间的美好关系。

在你处理上面列出的论文之前,你可能想要从一本关于计算理论主题的教科书开始,例如

  • 计算理论导论 - Michael Sipser

答案 3 :(得分:1)

程序员的数学就像是木匠的锤子。木匠不会用锤子做任何事情,但如果他没有锤子,那么他就做不了多少。

答案 4 :(得分:1)

不确定您的确切问题是什么...... 一些想法:

  • 编程只不过是数学(Functional programmingLambda calculusprogramming == math
  • 数学是一种语言 - 思想中表达的抽象描述/表示
  • 数学帮助你形式化表达式:而不是对于所有整数x从1到10的x的平方小于250 你可以写∀x ∈ {1..10} (x² < 250)
  • 编程(编程语言)做同样的事情并有助于形式化算法。

  • 计算机程序中常用的数学类型是数学数学,但通过一些努力,您还可以执行symbolic computations

答案 5 :(得分:1)

我认为数学实际上是符号背后的概念而不是符号本身,但是当大多数人谈论数学时,他们并没有做出区分。他们只是想着符号。部分地,这是因为他们在学校教授数学,其中重点是对符号进行机械操作以获得正确的结果,而不是概念是什么。

这类似于非程序员查看编程的方式。他们查看计算机程序并看到乱码,而使用给定语言的程序员(经过或多或少的努力)理解代码所代表的行为。

有些人比其他人更善于保留这些符号的含义。我认为有些人可能会比他们想象的更能理解数学,如果他们能够克服这些概念的障碍。

答案 6 :(得分:0)

我同意泰勒。计算机内的数学是numerical methods的一个非常深刻的主题。最大的问题是精度和32位只能让你到目前为止的事实。有一些非常酷(和复杂)的函数描述了如何使用计算机查找积分等,但因为我们的答案并不精确,并且因为计算机受限于他们可以做的事情(添加,乘法等)有很多方法可以很好地估计数学。

如果您对该主题感兴趣,那么您的权力就更大了。那是我努力学习的一门课。

答案 7 :(得分:0)

我正在寻找类似的东西(财务模型) - 类似于我们提出数学模型,然后在代码中实现这些。

从编程角度来看,您面临的主要问题是采用以数学术语表示的模型(假设连续性,无限小的时间/空间步长等),然后将这些模型转换为“离散”模型,假设时间有限/空间台阶(例如球每1毫米移动一次,或每1毫秒移动一次)。

这些模型的翻译不一定是微不足道的,你应该看看这些模型的适当参考(Numerical Recipes是经典的)。代码中的实现通常非常与您用数学术语表达问题的方式不同。

答案 8 :(得分:0)

我认为数学在编程方面有时间,沉默和美食,所以我有很多纸和笔,朋友问问帮助以及从我的Macbook上的Rudin到Bourbaki的一堆书发言。

答案 9 :(得分:0)

我认为为什么是一个哲学问题。

至于我如何看待数学/编程以及...之间的相互作用......我认为它们是建模的层次。在最低的,“最真实的”水平上,无论可能是什么,都有一些基本的事实。然后是这个真理的数学模型,在此基础上开发了数学的“语言”(幸运的是,只有一种语言?)。然后是另一层,即建模和近似层。在y = mx + b的情况下,它在一个模型中只有一条线,它可以是任何东西。作为视觉生物,最有益的可能是几何(线条,表面等)。然后是计算机建模,数值方法/分析,如果你愿意的话。

至于我如何看待事物,我喜欢在建模视角中思考。也就是说,我喜欢在概念上建模一些过程,然后应用数学然后应用数值方法。如果你愿意,可以进行中间开发(绘制N层类比)。

作为事后的想法,也许建模可以称为工程。

答案 10 :(得分:0)

获得所需理解类型的最佳方法是解决“故事问题”(即用词语而不是方程式表达的问题)。从这个和你的其他问题来看,你主要是看三角学。

简而言之,我建议您尝试使用Schaum的大纲系列中的三角书 - 它们便宜(约13美元)并且在解决方案方面存在很多问题。

还有其他途径可以解决数学问题,例如解决游戏设计问题。这里有两个:1)显示以恒定速度围绕圆移动的对象,以及2)显示两个对象沿着不相交的不同线移动,并在它们之间画一条线。或者你可以得到一本书,引导你完成这些类型的事情。但是你必须解决一些问题,迫使你自己思考问题。