物理建模的最佳语言是什么? [已关闭]

问题描述 投票:0回答:10

可以说,我已经退出模特行业有一段时间了。当我上大学时,我使用的大多数模型都是用 FORTRAN 编写的,我从来不喜欢它。我希望重新回到科学领域,所以我想知道是否有现代语言具有适合此类应用程序的功能集。您认为模拟复杂物理系统的最佳语言是什么?

language-features simulation physics modeling
10个回答
10
投票

虽然 Fortran 无疑是这方面的绝对统治者,但 Python 正越来越多地被用于此目的。虽然很难说哪个程序是最好的程序,但我发现 python 对于物理模拟和物理教育非常有用。


7
投票

这取决于任务

  • C++ 擅长复杂的数据结构,但不擅长矩阵切片和乘法。 (此任务需要您花费大量时间编写 for 循环。)
  • FORTRAN 对于矩阵切片和乘法有很好的表示法,但对于创建复杂的数据结构(例如图和链表)来说却很笨拙。
  • Python/scipy 对所有内容都有一个很好的表示法,但 python 是一种解释性语言,因此在某些任务上它很慢。
  • 有些人对 CUDA 等语言感兴趣,这些语言允许您使用 GPU 来加速模拟。

在分子动力学社区中,c++ 似乎很流行,因为您需要一些复杂的数据结构来表示分子的形状。


4
投票

我认为,只要我们谈论的是串行计算,在解决大规模物理问题时,FORTRAN 仍然占据主导地位是有争议的。

我知道并行化正在改变游戏规则。我不太确定 LINPACK 和其他线性代数包的并行版本是否仍然用 FORTRAN 编写。

如今许多工程师都在使用 MATLAB 和 Mathematica,因为它们结合了数值和图形功能。

我还想指出,计算引擎和显示引擎之间存在差异。前者可能仍然用 FORTRAN 编写,但后者可能使用更现代的语言和 OpenGL。

我也不确定建模在生物学中的应用程度。物理化学可能是一种完全不同的动物。

如果您用 Scala 或 F# 或 Haskell 编写了一个出色的并行线性代数包并且性能良好,那么世界将会向您敞开大门。


3
投票

Python + Matplotlib + NumPy + α


3
投票

核/粒子/高能物理社区已大力转向 c++(部分原因是 ROOT 和 Geant4),并对 Python 感兴趣(因为它具有 ROOT 绑定)。

但是你会注意到,这是依赖于子学科的......“物理”和“建模”是,广泛的主题,所以没有一个答案。


2
投票

Modelica 是一种用于建模(和模拟)物理系统的专用语言。 OpenModelica 是 Modelica 的开源实现。


2
投票

Python 在科学人士中非常流行,Matlab 也是如此。这些的问题是它们都非常慢(运行)。如果您想做可能需要几分钟/几小时/几天的大型模拟,您将不得不选择另一种语言。

只要你选择一种语言是为了速度,那就忍耐一下并使用 C/C++,也许根据你的需要使用 CUDA。

最后的想法:如果用 C 语言编写和调试模型比用 Python 多花两天时间,并且生成的代码需要 10 分钟而不是一个小时来运行,那么你真的节省了时间吗?


1
投票

MATLAB 还具有很多功能。特别是当您的模拟与硬件连接时,或者您需要可视化结果时。


1
投票

我会用 Python 来配合,但你也应该使用 R 来完成你可能需要做的任何统计工作。您确实应该更多地询问哪些语言使用哪些软件包,而不是语言本身。


0
投票

我发现 Python 和 MATLAB 都是建模和分析的最佳选择。如果您想做一些低级的事情来与硬件对话或运行硬核模拟,请使用 C/C++ 或 Rust。 Fortran和C/C++由于历史悠久而被广泛使用。然而,我觉得与 Fortran 相比,现代正在走向 Python 数值模拟,有些人可能会说你应该用 Rust 构建任何使用低级硬件的东西,因为与 C/C++ 相比,它的内存管理更安全。老实说,Python 和 MATLAB 之间最大的区别是 MATLAB 有很好的矩阵库,而 Python 是免费的。如果你想要 R 和 Julia 中间的东西,那很好。

对于符号计算Python的Sympy非常好,Maple和Mathematica。

© www.soinside.com 2019 - 2024. All rights reserved.