Подходит ли OCaml для численного анализа? [закрыто]

10

В настоящее время я использую C и немного FORTRAN для численного решения систем дифференциальных уравнений.

Я немного сыт по горло обоими этими языками, но мне нужно иметь некоторый (довольно) эффективный код ... Я думаю о переходе на OCaml.

Стоит ли оно того?

Eelvex
источник
4
Я настоятельно рекомендую SciPy - он бесплатный, выглядит как Matlab (но это Python), и для его выполнения требуется всего несколько строк! scipy.org/Cookbook/…
Работа
1
MATLAB. Численное решение систем дифференциальных уравнений является решенной задачей и существует уже довольно давно. Если ваша цель состоит в том, чтобы сократить ваши цифры, используйте инструменты, которые были разработаны за последние несколько десятилетий, чтобы сделать это. Не изобретайте велосипед, как бы весело это ни было. Вы сэкономите себе много времени и обострений.
Джон Р. Штром,

Ответы:

11

Люди в Джейн Стрит Кэпитал наверняка так думают. В 2009 году они выступили в КМУ с докладом об использовании OCaml.

Единственный недостаток, о котором я могу думать, - это то, что матрицы не являются гражданами первого класса.

Скудный Роджер
источник
7

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

За последнее десятилетие процессоры стали в 1000 раз быстрее, а алгоритмы - в 1000 * 1000 раз быстрее. Это означает, что сегодняшние алгоритмы, работающие на вчерашних процессорах, превзойдут вчерашние алгоритмы, работающие на сегодняшних процессорах, в 1000 раз.

Очевидно, что в качестве скорости процессора и алгоритмов нужно учитывать гораздо больше параметров, таких как диски или ОЗУ, но это утверждение помогает нам понять, что если вы выбираете язык низкого уровня, вы сосредотачиваетесь на неправильном множителе (1000 вместо 1000 * 1000).

Конечно, при наличии любого конкретного числового алгоритма можно ожидать, что C или Fortran превзойдут OCaml или Common Lisp по (на самом деле не так) большому коэффициенту. Но если вы действительно заинтересованы в численных задачах и хотите улучшить алгоритмы, вам следует выбрать язык высокого уровня, который позволит вам высказать свои идеи на высоком уровне и легко улучшить алгоритмы.

В качестве примечания: если вы подумаете о написании числового кода в OCaml, вы должны точно знать, как OCaml передает параметры в функции, встроенные функции и операции распаковки unbox. Все это подробно описано в заметках Ксавье Леруа .

user40989
источник
Спасибо за ответ. С тех пор я прибегаю к J и люблю это. OCaml - вторая секунда для меня.
Eelvex
6

Чтобы to solve numerically systems of differential equationsвам нужно в первую очередь собственных библиотек. Итак, обязательная проверка: поддерживает ли язык программирования xих?

Лично мне нравится писать код более высоком уровне , чем Cили Fortran, таким образом , я использовал Matlab, Octave, numpy\scipy.

есть
источник
2

Мне понравился OCaml, по крайней мере, пока я не посмотрел на многопоточное программирование.

dan_waterworth
источник