什么是科学计算

什么是科学计算

010414

科学计算也被称作计算科学(computational science)或科学计算法(scientific computation),其主要思路是开发数学模型,通过量化分析技术和计算机解决科学问题。

“科学计算是利用计算机解决科学与工程领域的数学建模问题所需的工具、技术和理论的集合。”——Gene H. Golub和James M. Ortega

简而言之,科学计算可以看成是一门交叉学科,如下图所示。

图片[1]|什么是科学计算
图1:科学计算是一门学科

科学计算首先需要人们了解问题(通常是科学和工程领域的问题)背后的专业知识,同时需要具有数学建模能力,掌握各种数值分析技术,并能利用计算机技术实现高效率、高性能的计算工具。它还需要使用计算机以及各种各样的外围设备,包括网络设备、存储工具、计算处理器、数学与数值分析软件。此外还需要掌握编程语言,并了解问题所在领域的知识数据库。人们已经利用科学计算的相关技术创造出了新的应用,让科学家们能够从现有的数据和过程中发现新的知识。

在计算机科学方面,科学计算可以看成是对数学模型和问题所在领域的数据/信息的数值仿真。仿真目标由具体问题决定。目标可以是探索事件发生的原因,重新构建一个具体的场景,优化过程,或者预测事件发生的时机。有时数值仿真可能是唯一选择,或者是最佳选择。有一些现象和场景基本上不可能进行实验,例如气候研究、天体物理学研究和天气预测。在另一些场景中,实际的实验并不可取,比如检验某种材料或产品的可靠性或强度。有些实验的时间/经济成本很高,例如车祸或生命科学实验。在以上这些场景中,科学计算能够经济高效地帮助用户分析和解决问题。

科学计算的简单处理流程

下面的流程图简单说明了科学计算的步骤。第一步是为问题设计数学模型。当创建完数学模型后,下一步是开发算法。算法通常需要利用合适的编程语言和恰当的实现框架来实现。编程语言的选择是关键决策点,由应用的性能和功能需求决定。另一个重要的决策点是确定实现算法的框架。确定了语言和框架之后,就可以实现算法并进行样本仿真了。可以对仿真的结果进行性能和准确率分析。如果实现的结果或效果不符合预期,则应该确定问题的根源。之后,需要回头改进数学模型,或者重新设计算法或它的实现,并选择合适的编程语言和框架来实现算法。

图片[2]|什么是科学计算
图2:科学计算流程

数学模型表现为一组合理的数学公式,这些公式能够在一定程度上详细描述大多数问题。算法用多个步骤来表示解决过程,这些步骤需要用一种适当的编程语言或脚本来实现。

实现算法之后,还有一个重要的步骤需要完成——对实现的代码进行仿真运行。这包括设计实验基础设施、准备或整理仿真用的数据/条件、准备仿真的场景,等等。仿真成功运行之后,下一步就是收集和展示结果以便进行分析,进而对仿真的有效性进行验证。如果结果不符合预期,就需要返回到前面的步骤改正并重复。这种返回到之前步骤的情形,在上图中用虚线表示。如果每一步都进行得很顺利,那么分析就是工作流的最后一步,图中用双线表示。

为了解决任何数学问题,尤其是科学与工程领域的数学问题而进行的算法设计与分析,称为数值分析(numerical analysis),现在也称为科学计算。在科学计算中,需要解决的问题主要是针对连续数值,而不是离散数值。后者主要指计算机科学的其他问题。通俗的表述就是,科学计算解决关于连续变量的方程和公式问题,例如时间、距离、速率、重量、高度、尺寸、温度、密度、压力、应力等。

一般情况下,连续变量的数学问题只能获得近似解,因为它们的精确解不太可能在有限的步骤中得到。因此,这些问题通过有限步的迭代处理可以收敛到一个可行解。这个可行解取决于目标问题的特性。通常迭代步骤都是有限的,每次迭代之后,结果都会更加接近仿真的期望解。仿真结果的准确性和算法的收敛速度是科学计算过程的重点。
一些科学领域已经在使用科学计算解决问题了,比如:

  • 计算流体动力学
  • 大气科学
  • 地震学
  • 结构分析
  • 化学
  • 磁流体力学
  • 地质储层建模
  • 全球海洋/气候建模
  • 天文/天体物理
  • 宇宙学
  • 环境保护研究
  • 核工程

目前,一些新兴的学科也开始借助科学计算的力量,包括:

  • 生物学
  • 经济学
  • 材料研究
  • 医学影像
  • 动物科学

科学与工程领域的案例

让我们看几个可能用科学计算解决的问题。第一个问题是研究两个黑洞碰撞的行为,这个问题无论从理论上还是实践上都很难理解。从理论上说,这个实验非常复杂,几乎不可能在实验室实现并进行现场研究。但是这个现象可以根据爱因斯坦的广义相对论的数学公式建立合理有效的数学模型,然后在计算实验室进行仿真。然而,这个仿真需要消耗极大的计算能力,可以通过先进的分布式计算环境实现。

第二个问题与工程和设计相关。与汽车测试相关的一个问题是碰撞测试(crash testing)。为了降低完成真实(也很危险)的碰撞测试的成本,工程师和设计师们都会优先考虑进行计算机仿真碰撞测试。最后,还有大型房屋与厂房设计问题。可以按照设计目标构建一个仿真模型,但是这样做需要消耗大量的时间和金钱。然而,通过建筑设计工具完成设计可以节省大量的时间和成本。

生物信息科学和医学也有类似的情况,例如蛋白质结构的折叠和传染病的建模研究。蛋白质结构折叠的研究非常耗时,但是利用大规模计算机集群和分布式计算系统可以高效地完成。类似地,在分析不同参数对传染病疫苗接种程序的影响方面,为传染病建模可以节省时间和成本。之所以挑选这三个问题,是因为它们分别代表科学计算可以解决的三类问题。第一类问题是基本不可能解决的。第二类问题可以解决但风险很高,甚至具有严重的破坏性。

第三类问题不使用仿真就可以解决,也可以在现实生活中通过模拟解决,但是通过仿真方法解决会更加经济高效。

© 版权声明
THE END
喜欢就支持一下吧
点赞4赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情