计算科学
[原文链接] --- 摘录于维基百科
计算科学,又称科学计算,是一个与数学模型构建、定量分析方法以及利用计算机来分析和解决科学问题相关的研究领域。在实际应用中,计算科学主要应用于:对各个科学学科中的问题,进行计算机模拟和其他形式的计算。
这一领域不同于计算机科学(对于计算、计算机以及信息处理的研究),同时也异于科学和工程学的传统形式——理论与实验。科学计算技术要想获得理解,主要需要通过在计算机上实现的数学模型进行分析。
科学家和工程师发展了计算机程序和应用软件,来为被研究的系统创建模型,并以多种输入参数运行这些程序。一般来说,这些模型需要大量的计算(通常为浮点计算),常在超级计算机或分布式计算平台上执行。
数值分析是计算科学中使用的技法的重要基础。
应用
计算科学的问题域包括:
数值模拟
数值模拟有各种不同的目的,取决于被模拟的任务的特性:
- 重建和理解已知事件(如地震、海啸和其他自然灾害)。
- 预测未来或未被观测到的情况(如天气、亚原子粒子的行为)。
模型拟合与数据分析
- 适当调整模型或利用观察来解方程,不过也需要服从模型的约束条件(如石油勘探地球物理学、计算语言学)。
- 利用图论创建网络的模型,特别是那些相互联系的个人、组织和网站的模型。
计算优化
- 最优化已知方案(如工艺和制造过程、前端工程学)。
方法和算法
计算科学中的算法和数学方法是多样的,常用的应用方法包括:
- 数值分析
- 作为收敛和渐近级数的泰勒级数的应用
- 利用自动微分计算微分
- 利用有限差计算微分
- 图论集
- 凭借泰勒级数和理查森外推法进行高阶微分逼近
- 均匀网格上的积分方法:矩形法、梯形法、中点法和辛普森积分法
- 龙格-库塔法解常微分方程
- 蒙特卡洛方法
- 分子动力学
- 数值线性代数
- 用高斯消元法计算LU因子
- 乔里斯基分解
- 离散傅里叶变换及应用
- 牛顿法
- 动力系统的时步法
程序设计语言普遍应用于科学计算应用中偏向数学的方面,包括R语言、MATLAB、Mathematica[1]、Scilab、GNU Octave、COMSOL Multiphysics、SciPy的Python语言等。偏向于密集型计算的科学计算常会利用C语言或Fortran的一些变体以及BLAS或LAPACK等最优化代数库。
计算科学应用程序常常创建真实世界变化情况的模型,包括天气、飞机周围的气流、事故中的汽车车身变形、星系中恒星的运动、爆炸装置等。这类程序会在计算机内存中创建一个“逻辑网格”,网格中的每一项在空间上都对应一个区域,并包含与模型相关的那一空间的信息。例如在天气模型中,每一项都可以是一平方千米,并包含了地面海拔、当前风向、温度、压力等。程序会在模拟时步中基于当前状态计算出可能的下一状态,解出描述系统运转方式的方程,然后重复上述过程计算出下一状态。
“计算科学家”一词常用于描述科学计算领域中的技能高超者。他们通常是科学家、工程师或应用数学家,会以不同方式应用高性能计算机,以提高他们各自的应用学科(如物理学、化学或工程学的相关学科)中最先进的理论和技术水平。科学计算也对经济学、生物学及医学等领域有着越来越大的影响。
计算科学常被认为是科学的第三种方法,是实验/观察和理论这两种方法的补充和扩展。[2] 计算科学的本质是数值算法[3]以及计算数学[4]。在发展科学计算算法、程序设计语言的有效实现以及计算结果确认上,人们已经做出了实质性的努力。计算科学中的一系列问题和解决方法都可以在相关文献中找到。[5]
教育
在应用数学或计算机科学的教学大纲中,或是在标准的数学、科学或工程学的教学大纲中常会有计算科学的相关课程。在一些研究型学府中,科学计算可以作为另一个同层次或不同层次主修专业的辅修专业。不过近年来,欧美的计算科学专业学士和硕士学位获得者正在不断增加,一些学校还设有计算科学、计算工程学、计算科学与工程以及科学计算专业的博士点,而大中华地区的很多学校也开设了信息与计算科学的本科专业。