Какой лучший язык для моделирования физики?

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

Ответ 1

Несмотря на то, что Fortran был абсолютным правителем для этого, Python используется все более и более точно для этой цели. В то время как очень сложно сказать, какая программа BEST для этого, я нашел, что python очень полезен для физических симуляций и физического образования.

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

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

Ответ 4

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

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

Ответ 5

Python + Matplotlib + NumPy + α

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

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