什么是物理建模的最佳语言?

时间:2010-09-24 23:12:47

标签: language-features simulation physics modeling

我已经离开了建模界,可以说,现在已经有一段时间了。当我在大学时,我使用的大多数模型都是用FORTRAN编写的,我从来不喜欢它。我正在寻求回归科学,所以我想知道是否有适合这种应用的功能集的现代语言。您认为什么是模拟复杂物理系统的最佳语言?

9 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

这取决于任务

  • C ++擅长复杂的数据结构,但它在切片和乘法矩阵方面很差。 (这项任务要求你花很多时间写循环。)
  • FORTRAN有一个很好的表示切片和乘法矩阵的符号,但它对于创建复杂的数据结构(如图和链表)来说很笨拙。
  • Python / scipy对所有内容都有一个很好的表示法,但是python是一种兼容的语言,因此在某些任务中它很慢。
  • 有些人对像CUDA这样的语言很感兴趣,可以让你使用GPU加速模拟。

在分子动力学界,c ++似乎很受欢迎,因为你需要一些复杂的数据结构来表示分子的形状。

答案 2 :(得分:4)

我认为,只要我们谈论连续计算,FORTRAN在解决物理学中的大规模问题时仍然占主导地位。

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

现在很多工程师都在使用MATLAB和Mathematica,因为它们结合了数字和图形功能。

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

我也不确定有多少建模已经渗透到生物学中。物理化学可能完全是一种非常不同的动物。

如果你在Scala或F#或Haskell中写出一个表现良好的并行线性代数包,那么这个世界将会超越你的大门。

答案 3 :(得分:3)

核/粒子/高能物理学界已经大量转向c ++(部分原因是由于ROOT和Geant4),对Python有一些兴趣(因为它有ROOT绑定)。

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

答案 4 :(得分:2)

Python + Matplotlib + NumPy +α

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

我会使用Python,但你也应该向R寻找你可能需要做的任何统计工作。您应该更多地询问使用哪种语言的包而不是语言本身。

答案 8 :(得分:1)

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

只要您选择速度语言,就可以使用C / C ++,也可以根据需要使用CUDA。

最后想一想:如果用C语言编写和调试模型需要两天时间,而不是python,那么生成的代码需要10分钟才能运行而不是一小时,你真的可以随时保存吗?