科学计算与数值分析


9

我是计算机科学和数学的双主修。我爱这两个科目。我正在考虑从事研究生职业,也许是在科学计算领域。科学计算和数值分析之间的真正区别是什么?他们是作为职业学习的吗?

Answers:


18

维基百科给出了一个很好的定义

数值分析是对使用数值逼近(与一般符号操作相反)的数学分析(与离散数学有所区别)的算法进行的研究。

数值分析人员通常对证明其算法的数学结果感兴趣,包括误差范围(近似误差可达到多大),迭代方案的收敛(近似逼近是否达到正确的极限),收敛的阶数和速率(有多快)会导致算法收敛),计算复杂度(会限制算法所需的运算数量。)无需使用计算机就可以在这些领域进行研究,而且一些重要的结果甚至早于1950年代数字计算机的发展。

维基百科也有“科学计算”的定义

计算科学(也是科学计算或科学计算(SC))是一个快速发展的多学科领域,它使用高级计算功能来理解和解决复杂问题。计算科学融合了三个截然不同的元素:[1]为解决科学(例如,生物,物理和社会),工程和人文问题而开发的算法(数字和非数字)以及建模和仿真软件优化解决解决计算难题所需的高级系统硬件,软件,网络和数据管理组件。支持科学和工程问题解决以及发展中的计算机和信息科学的计算基础架构。

科学计算更多地涉及从计算机中获取准确解决方案的实际方面。显然,这是建立在数值分析结果的基础上的,但同时也极大地依赖于计算机体系结构和软件工程。尽管科学计算的研究通常是出于其自身的目的,并且为了开发可在许多应用程序中使用的硬件和软件,但也有许多科学计算研究是由解决特定科学和工程问题的需求驱动的。例如,研究气候变化的全球气候模型的发展也推动了科学计算的发展。

数值分析最常见于数学和应用数学系,而科学计算是一个跨学科领域,可以在计算机科学系,数学系以及各种工程和科学学科中找到。


1
在过去的好日子里,一些计算机科学系进行了大量的数值分析(教师,学生,班级,研究)。这项工作大部分致力于开发算法和软件,这些软件和软件很好地解决了科学,工程,统计(统计计算),管理/操作研究等方面的实际问题。这并不是为了证明定理。
Mark L.Stone

应用数学对他们俩来说都是一个很好的起点吗?
刀片

1
是的,在任一方向上应用数学的背景都将有所帮助。真正的问题是您想要添加到现有内容中的内容。广度(计算机科学以及使用计算科学的某些科学或工程领域)在跨学科领域(如计算科学)非常有帮助。
Brian Borchers

6

作为一个在研究生院期间从工程学转向科学计算的人,出于偶然的需要,我在这里所做的是我的两分钱:

  • 数值分析将侧重于数学和算法方面。找出可用于解决没有解析解决方案的特定数学问题的技术,例如ODE的PDE的矩阵处理优化等。
  • 如今,数值分析通常会涉及大量的编程,但是仍然可以将有效算法的数学思想转化为计算机代码。
  • 传统上FORTRAN是主要支柱。但是您也可以期望使用C / C ++和最近的Python。有些东西可能还涉及Mathematica或MATLAB之类的软件包
  • 来到科学计算领域更是一个应用领域,人们试图使用计算资源来解决一些科学问题。这可能涉及许多螺母和螺栓的工作。例如,编译代码,安装操作系统和库,设置选项以使科学代码起作用等。
  • 由于这些天相当一部分科学计算涉及并行计算,因此您很可能会接触到计算集群,超级计算机,云计算等
  • 在科学计算中,虽然您可能使用C / FORTRAN等编程语言,但希望能与“粘合” /脚本语言(例如bash / perl等)一起工作。
  • 您可能会在Linux-ey系统上进行很多工作,最终在命令行和sed / awk等工具上会精通。有些人最终成为系统管理员。
  • 许多科学计算都涉及可视化和数据存储/数据检索。许多人最终成为大数据/ Hadoop / Map Reduce等方面的专家。
  • 数值分析本质上是一项专业工作。您会精通数学和编码,并且可以非常有效地解决特定问题。有时会沿途发明一两个算法。从某种意义上讲,科学计算是通才。相对来说。您经常一起使用各种工具来解决特定的应用问题。
  • 许多科学计算可能涉及在接口上进行工作。例如,两个程序之间的接口。您将数据从一种工具传输到另一种进行处理的位置。沿途进行一些格式操作。即,您正在尝试获得各种工具,以使彼此之间进行对话,而这些工具并不是真正旨在彼此对话的。
  • 科学计算人员通常必须掌握各种数据格式。许多仪器将拥有自己的专有格式,并且有人必须将数据解码为数值算法喜欢的格式。
  • 一些科学计算人员最终会配备非常专业的“服务台”(也需要支付高额费用),其中基本上可以帮助普通研究人员/学生/教授在机构中使用计算资源来解决可能出现的任何问题。即,科学计算人员是熟悉各种代码和软件包的人,能够为用户提供建议使用哪种工具来最佳地解决计算问题。
  • 您最终可以将代码移植到其他硬件。或并行化以串行模式编写的旧代码。或优化代码以使其运行更快。有些人会将代码转换为在GPU / CUDA等中运行,以使它们运行得更快。
  • 相当多的科学计算都涉及故障排除。通常是别人写的代码。弄清楚为什么它们在某些硬件上崩溃等。
  • 通常,您是专家之间的中间人。例如,我必须与铁杆程序员,需要计算但不能自己编写太多代码的生物学家,系统管理员,网络专家,数据中心技术员等团队合作。
  • 购买新硬件或确定计算系统的体系结构时,可能会要求科学计算人员提供大量投入。在完成这些任务后,您最终将与Dell / Cray / IBM / Infiniband / Cisco等公司的销售工程师和技术人员紧密合作。

希望这能使您对这些领域有所了解!

最后一点建议(一点点的盐就可以了!):如果您擅长数学,例如精确度和细节以及阅读论文,并经过大量,专注的努力,找出了细节,其中个人智力很重要,需要长期持续然后进行数值分析。

另一方面,如果您喜欢担任通才,则要切换区域,用勤奋的工作来补偿天才,成为所有行业的杰作,愿意与模糊而含糊的,经常相互冲突的建议一起工作,例如与团队合作并处理冲突,紧迫的期限,与MBA交往等等,然后成为科学计算专家。

再次以少许盐食用。每个人的情况都很特殊。而且我们大多数人都是出于巧合而降落,而不是因为我们是这样计划的。:)


0

您想成为一名应用数学家。这是许多工科大学的大学开设的专业,也有博士学位。尽管以我的经验来看,数学是更重要的技能,但是正规计算机科学中的某些技术背景可能会有所帮助,而您可能无法在其他地方获得它。请注意不要将CS兔子洞弄得太深,否则您可能会做CS研究,这往往会使您脱离实际应用。

为了回答您的特定问题,应用数学家将进行数值方法和分析方面的研究,并可能与科研人员合作在多个领域进行科学计算。如果您想专门从事科学计算,则可能需要进入科学研究学科,例如计算化学,生物物理学,气候,生物信息学等。


如果您读了我的问题,您会发现我是双专业。实际上,与CS专业相比,我在数学专业上投入的时间更多。我根本不担心要深入了解CS
Blade

我确实读过您的问题,这就是为什么我说“和作为博士学位”。答案旨在对可能没有选择专业的其他人有所帮助。祝您搜索顺利。博士通常会非常灵活,因此可以选择一个小组来做自己喜欢的事情,而不必太在意某个领域的问题。
user21387 '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.