Подходит ли F # для физических приложений? - PullRequest
4 голосов
/ 03 октября 2008

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

Меня интересуют приложения командной строки (даже те, которые я могу просто выполнить и выложить ответ без необходимости ввода) для таких вещей, как кинематика, плоское движение, законы Ньютона, гравитация, работа, энергия, импульс и импульс , системы частиц, вращательная кинематика и динамика, угловой момент, статическое равновесие, колебательное движение, волновое движение, звук, физическая оптика, электростатика, закон Гаусса, электрическое поле и потенциал, емкость, сопротивление, цепи постоянного тока, магнитное поле, закон Ампера и индуктивность.

Причина, по которой я заинтересован в F #, заключается в функциональности единиц измерения, которую обеспечивает язык.

Ответы [ 7 ]

11 голосов
/ 03 октября 2008

По моему пристрастному мнению, F # идеально подходит для физики. Он имеет функцию под названием «Единицы измерения», которая выполняет пространственный анализ, предоставляя ошибки, если вы ошиблись. Например, если вы напишите:

let distance : float<meters> = gravity * 3.0<seconds>

Это приведет к ошибке компиляции , поскольку гравитация составляет <метры / секунды ^ 2>, а не <метры>. Это предотвращает большое количество ошибок программирования, связанных с физикой.

За дополнительной информацией обращайтесь Блог Эндрю Кеннеди .

5 голосов
/ 03 октября 2008

Я ехал, представляя книгу «F # для ученых» (введение доступно бесплатно), и это, кажется, хорошее введение в эту область, так как F #, кажется, очень хорошо адаптирован к этой области. .

Возможно, вы захотите взглянуть на введение.

http://www.ffconsultancy.com/products/fsharp_for_scientists/

(И нет, я не имею отношения к автору; -)

2 голосов
/ 01 апреля 2009

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

F # создан для таких областей знаний, как физика.

2 голосов
/ 04 октября 2008

О размерном анализе: забавный трюк с исчислением, который однажды дал один из моих профессоров физики: учитывая, что для того, чтобы идеально приготовить индейку весом в один фунт в данной печи, требуется один час, сколько времени потребуется, чтобы приготовить индейку весом в два фунта та же печь?

Ну, анализ размеров показывает

(1) что общее количество тепловой энергии, необходимой для приготовления индейки, пропорционально массе индейки, которая сама пропорциональна ее объему, который сам пропорционален кубу ее среднего «радиуса»
* 1006 т.е. * Необходимая тепловая энергия для приготовления = k1 * (turkeyRadius "^ 3) ==> единица измерения: м ^ 3 * k (где единица измерения k1 - Дж / м ^ 3)

(2) что общее количество тепловой энергии, выделяемой духовкой, пропорционально поверхности индейки, умноженной на количество времени, которое вы ее готовите,
* 1010 т.е. * Тепло, обеспечиваемое печью = k2 * время * (turkeyRadius ^ 2) (где единица k2 - Дж / с / м ^ 2)

Затем, используя (1) = (2), вы получите
время = к1 / к2 * турцияРадиус ^ (3/2)

* 1016 т.е. * - время приготовления пропорционально радиусу ^ 3/2
- учитывая, что turkeyRadius пропорционален кубическому корню массы, мы получаем
время приготовления = k3 * sqrt (масса)

Таким образом, потребуется 2 (2) раза дольше, чтобы приготовить индейку весом в 2 фунта, и результат получен без каких-либо вычислений - только анализ размеров.

2 голосов
/ 03 октября 2008

Да (любой язык) и Нет (узнайте, что будут использовать ваши будущие коллеги, как, может быть, они используют Python). Интересное в стороне - Крепость .

1 голос
/ 03 октября 2008

Fsharp - один из вариантов. Если вы хотите выучить навык, который также может быть более долгосрочным, почему бы не изучить Python. Тогда у вас тоже будет пупырка и скука.

0 голосов
/ 03 октября 2008

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

Анализ размеров - довольно удобный инструмент для решения задач физики, он может отвлечь вас от "даже не так".

Я всегда получал определенное извращенное удовольствие, получая неправильный ответ в 10 ^ 34 раз, потому что я где-то ошибался в своих единицах; -)

...