Lisp, OCaml или что для Рунге-Кутта?

С которым язык был бы Вы делать предложение для решения системы:

  • уравнения дифференциала первого порядка
  • комплексные переменные
  • N-размеры

использование 4-го порядка, Рунге-Кутта и т.п.

Скорость имеет большое значение, но пожертвовала бы за:

  • Изящный (убирают и короткий), код
  • Гибкость + масштабируемость

Я главным образом между Lisp и OCaml, но любое другое предложение одобрено.

Спасибо!

9
задан Eelvex 25 May 2010 в 19:46
поделиться

7 ответов

Трудно сказать, какой язык будет проще, существуют библиотеки lisp , C ++ , C # и т. Д. это так много, если это связано с личными предпочтениями. Я бы предположил, что Matlab - это наиболее адаптированное и элегантное решение специально для этих типов задач, и в нем много встроенной поддержки ODE ... Lisp может быть медленным ... и я не могу говорить за OCaml.

1
ответ дан 4 December 2019 в 15:12
поделиться

RK4 - очень простой метод, и уже написано множество отличных реализаций. Воспользуйтесь одним из них и потратьте свои усилия на другие аспекты проекта.

2
ответ дан 4 December 2019 в 15:12
поделиться

Fortran или C, возможно, захочется изучить подпрограммы NAG . C был бы более гибким и легким для понимания, но Fortran обычно считается лучшим для числовых данных.

0
ответ дан 4 December 2019 в 15:12
поделиться

Вот реализация РК на Common Lisp:

http://github.com/bld/bld-ode/blob/master/rk.lisp

Приятная особенность Common Lisp в том, что вы можете начать с простого и элегантного кода, а затем заставить критические биты работать быстро (например, перейдя от преимущественно функциональных вычислений к вычислениям с состоянием или объявив типы).

SBCL имеет отличный компилятор нативного кода.

5
ответ дан 4 December 2019 в 15:12
поделиться

Я не знаком с Runge Kutta, но OCaml может обеспечить хорошую скорость и читаемость в целом, по крайней мере, если вы будете немного осторожны. Затем у вас есть преимущество в виде надежной статической системы типов для остальной части вашего приложения.

2
ответ дан 4 December 2019 в 15:12
поделиться

кроме всего прочего, вы можете написать привязки ocaml к существующему решателю рунге-кутта на языке Си.

2
ответ дан 4 December 2019 в 15:12
поделиться

Я бы посоветовал использовать python + numpy + scipy, общая математическая и числовая поддержка (превосходные многомерные массивы) превосходна. В любом случае это зависит от конкретных потребностей.

1
ответ дан 4 December 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: