Подходит ли F# для физических приложений?

StackOverflow https://stackoverflow.com/questions/167909

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Для получения дополнительной информации посетите блог Эндрю Кеннеди .

Другие советы

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

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

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

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

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

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

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

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

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

Тогда, используя (1) = (2), вы получаете
время = k1/k2 * turkeyRadius ^ (3/2)

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

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

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

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

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

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

Пространственный анализ - довольно удобный инструмент для решения физических задач, он может увести вас от & «даже не ошибочного»!

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top