许多计算机科学程序需要两个或三个演算类。
我想知道,计算机科学如何以及何时使用微积分?计算机科学学位的CS内容倾向于侧重于算法,操作系统,数据结构,人工智能,软件工程等。在某些情况下,微积分在计算机科学的这些或其他领域中有用吗?
许多计算机科学程序需要两个或三个演算类。
我想知道,计算机科学如何以及何时使用微积分?计算机科学学位的CS内容倾向于侧重于算法,操作系统,数据结构,人工智能,软件工程等。在某些情况下,微积分在计算机科学的这些或其他领域中有用吗?
Answers:
我可以想到一些直接需要微积分的课程。对于计算机科学学位,我通常使用必修科目,但对于可选科目则使用斜体。
可能还有其他人-这只是我的脑袋。
而且,除此之外,通过学习如何以严格的技术推理和解释论证,可以从微积分课程中间接受益。这比学生通常认为的更有价值。
最后,您将需要微积分,以便与其他Exact Sciences and Engineering的人员进行互动。而且,计算机科学家不仅需要交谈,而且还需要与物理学家或工程师一起工作,这并不少见。
f(0) = 0
,f(1) = 1
,f'(0) = f'(1) = 0
,你可以添加你所关心的任何其他限制,例如f'(0.5) = 1
。不久前,我使用它来导出一些不同的插值多项式,以使图像平滑。
这有点模糊,但是微积分出现在代数数据类型中。对于任何给定类型,其单孔上下文的类型都是该类型的派生类型。有关整个主题的概述,请参见此精彩演讲。这是非常技术性的术语,所以让我们解释一下。
您可能遇到过被称为产品类型的元组(如果不是,那是因为它们是两种类型的笛卡尔乘积)。我们将按字面意义使用并使用表示法:
表示一个元组,其中和都是类型。接下来,您可能遇到过求和类型,这些类型可以是一种类型,也可以是另一种类型(在Haskell中称为unions,variants或Either类型(kinda))。我们还将从字面上理解这一点并使用表示法:
之所以这样命名,是因为如果类型具有值,类型具有值,则类型具有值。
这些类型看起来像正常的代数表达式,实际上,我们可以(一定程度上)操纵它们。
在函数式语言中,列表的通用定义(在此处由Haskell提供)是:
data List a = Empty
| Cons a List
这表示一个列表为空或一个值和另一个列表的元组。将其转换为代数符号,我们得到:
其中表示具有一个值的类型(也称为单位类型)。通过重复插入,我们可以对此求值以获得的定义:
(其中
然后,此定义表示列表是单位,或者是一个项目的元组,或者是两个项目的元组,或者是三个项目的元组,这就是列表的定义!
现在进入单孔上下文:单孔上下文是您从产品类型中“获取价值”时所获得的。让我们举个例子:
从三元组中取出一个值得到一个二元组,但是有三种不同的变体:
对于最后一个示例,让我们使用一个列表:
如果我们使用原始表达式作为列表:
我们可以重新排列以获得:
(从表面上看,这似乎是胡说八道,但是如果采用此结果的泰勒级数,则会得到我们之前得出的定义。)
现在,如果我们对此进行区分,我们将得到一个有趣的结果:
因此,一个列表已成为一对列表。这实际上是有道理的:产生的两个列表对应于原始列表中孔上方和下方的元素!
数值方法。存在一些麻烦的演算问题,这些问题是特定应用程序所独有的,并且它们需要的解决方案比人类无需程序即可实际解决的速度快。有人必须设计一种算法来计算解决方案。那不是唯一将程序员与科学家区分开来的东西吗?
自动化 -与机器人技术类似,自动化可能需要量化许多人类行为。
计算 -寻找证明的解决方案通常需要演算。
可视化 -使用高级算法需要微积分,例如cos,sine,pi和e。特别是在计算向量,碰撞场和网格划分时。
后勤和风险分析 -确定任务是否可行,所涉及的风险以及可能的成功率。
安全性 -大多数安全性无需演算即可执行;但是,许多想要解释的人在数学表达式中更喜欢它。
人工智能 -无需演算就可以利用人工智能的基础知识;但是,要计算高级行为,聚集智慧/蜂巢思维以及基于复杂价值的决策。
医疗计算 -可视化大多数健康数据需要微积分,例如心电图读数。
科学与工程 -与几乎所有其他科学学科一起工作时,都需要微积分:航空航天,占星,生物学,化学或工程。
许多编程人员可以不使用微积分就完成整个职业。但是,如果您愿意做这项工作,那就可以证明它是无价的。对我来说,它在自动化,物流和可视化方面最有效。通过识别特定的模式,您可以简单地忽略该模式,模仿该模式或共同开发一种更好的方法。
事实是,使用微积分的可能性很小。但是,几乎所有其他科学学科都使用微积分,而您正在攻读科学学位。对大学理学学位应该意味着什么有一定的期望,其中之一就是您知道微积分。即使您永远都不会使用它。
如果您在微积分方面做得不好,也可以,但是请确保您在离散数学上付出了一些努力。现实世界中有很多编程问题,离散数学在其中发挥作用,对它的原理的不了解会使您在其他编码人员面前感到尴尬。
一些更具体的示例:
微积分-不可或缺的部分-直接用于CS中,作为思考求和的基础。如果您遍历Knuth的“具体数学”部分中有关求和的任何部分,您将很快认识到微积分常用的惯例:了解一些连续的情况将为您提供考虑离散的工具。
CS研究的许多用途涉及编程系统,这些系统可以监视变化,或者在某些情况下可以预测未来。这些系统周围的数学源于微分方程和线性代数,而微分方程则是...演算。像Gibert Strang这样的老师提倡更快地进入微分方程部分,但它仍然是微积分的子集。当变化取决于任何系统中的变化时,它就会以非直觉的方式并且非常容易理解的方式变得不稳定(稳定)。要了解为什么明智的线性系统以非线性方式运行,您要么需要微积分工具,要么需要为问题空间重新发明它们。
最后,CS经常需要阅读和理解他人的工作,而微积分是第一次接触大量共享的词汇,约定和历史。