Какой лучший язык для физического моделирования? - PullRequest
10 голосов
/ 25 сентября 2010

Я был вне модельного бизнеса, так сказать, какое-то время.Когда я учился в колледже, большинство моделей, с которыми я работал, были написаны на фортране, который мне никогда не нравился.Я хочу вернуться к науке, поэтому мне интересно, есть ли современные языки с наборами функций, подходящих для такого рода приложений.Какой язык вы считаете оптимальным для моделирования сложных физических систем?

Ответы [ 9 ]

8 голосов
/ 25 сентября 2010

Хотя, безусловно, Фортран был абсолютным правителем для этого, Python все больше и больше используется именно для этой цели.Хотя очень трудно сказать, какая программа является ЛУЧШЕЙ для этого, я нашел Python довольно полезным для моделирования физики и обучения физике.

7 голосов
/ 25 сентября 2010

Зависит от задачи

  • C ++ хорош для сложных структур данных, но он плохо разбивает и умножает матрицы. (Эта задача заставляет вас тратить много времени на написание циклов.)
  • У FORTRAN есть хорошая нотация для нарезки и умножения матриц, но она неуклюжа для создания сложной структуры данных, такой как графики и связанные списки.
  • Python / scipy имеет хорошие обозначения для всего, но python является интерпретируемым языком, поэтому он медленен при выполнении определенных задач.
  • Некоторым людям интересны такие языки, как CUDA, которые позволяют вам использовать графический процессор для ускорения моделирования.

В сообществе молекулярной динамики c ++, кажется, популярен, потому что вам нужны несколько сложные структуры данных для представления форм молекул.

4 голосов
/ 25 сентября 2010

Я думаю, что можно утверждать, что FORTRAN все еще доминирует, когда речь идет о решении крупномасштабных задач в физике, если мы говорим о последовательных вычислениях.

Я знаю, что распараллеливание меняет игру. Я менее уверен в том, написаны ли параллельные версии LINPACK и других пакетов линейной алгебры на Фортране.

В наши дни многие инженеры используют MATLAB и Mathematica, потому что они сочетают в себе числовые и графические возможности.

Я бы также отметил, что между вычислениями и механизмами отображения есть разница. Первый может все еще быть написан на Фортране, но последний может использовать более современные языки и OpenGL.

Я также не уверен в том, насколько моделирование проникло в биологию. Физическая химия может быть совсем другим животным.

Если вы напишите потрясающий пакет параллельной линейной алгебры в Scala, F # или Haskell, который хорошо работает, мир проложит путь к вашей двери.

3 голосов
/ 25 сентября 2010

Сообщество ядерной физики / физики частиц / высоких энергий сильно продвинулось к c ++ (частично из-за ROOT и Geant4), с некоторым интересом к Python (потому что у него есть привязки ROOT).

Но выобратите внимание, что это зависит от дисциплины ... "физика" и "моделирование" - это большой , широкие темы, поэтому нет единого ответа.

2 голосов
/ 27 сентября 2010

Modelica - это специализированный язык для моделирования (и симуляции) физических систем.OpenModelica - это реализация Modelica с открытым исходным кодом.

2 голосов
/ 25 сентября 2010

Python + Matplotlib + NumPy + α

1 голос
/ 23 июня 2016

Python очень популярен среди людей, ориентированных на науку, как и Matlab.Проблема с этим заключается в том, что они оба ОЧЕНЬ медленны (для запуска).Если вы хотите проводить большие симуляции, которые могут занимать минуты / часы / дни, вам придется выбирать другой язык.

Пока вы выбираете язык для скорости, смиритесь с ним и используйте C/ C ++, возможно, с CUDA в зависимости от ваших потребностей.

Заключительная мысль: если для написания и отладки вашей модели на C требуется больше двух дней, чем на python, а полученный код занимает 10 минут для запускачаса, вы действительно спасли в любое время?

1 голос
/ 27 сентября 2010

Я подключусь к Python, но вам также следует обратиться к R за статистической работой, которая вам может понадобиться.Вы действительно должны больше спрашивать о том, какие пакеты для каких языков использовать, а не о самом языке.

1 голос
/ 25 сентября 2010

Там также много возможностей с MATLAB. Особенно при взаимодействии ваших симуляций с аппаратным обеспечением или если вам нужно визуализировать результаты.

...