С которым язык был бы Вы делать предложение для решения системы:
использование 4-го порядка, Рунге-Кутта и т.п.
Скорость имеет большое значение, но пожертвовала бы за:
Я главным образом между Lisp и OCaml, но любое другое предложение одобрено.
Спасибо!
Трудно сказать, какой язык будет проще, существуют библиотеки lisp , C ++ , C # и т. Д. это так много, если это связано с личными предпочтениями. Я бы предположил, что Matlab - это наиболее адаптированное и элегантное решение специально для этих типов задач, и в нем много встроенной поддержки ODE ... Lisp может быть медленным ... и я не могу говорить за OCaml.
RK4 - очень простой метод, и уже написано множество отличных реализаций. Воспользуйтесь одним из них и потратьте свои усилия на другие аспекты проекта.
Fortran или C, возможно, захочется изучить подпрограммы NAG . C был бы более гибким и легким для понимания, но Fortran обычно считается лучшим для числовых данных.
Вот реализация РК на Common Lisp:
http://github.com/bld/bld-ode/blob/master/rk.lisp
Приятная особенность Common Lisp в том, что вы можете начать с простого и элегантного кода, а затем заставить критические биты работать быстро (например, перейдя от преимущественно функциональных вычислений к вычислениям с состоянием или объявив типы).
SBCL имеет отличный компилятор нативного кода.
Я не знаком с Runge Kutta, но OCaml может обеспечить хорошую скорость и читаемость в целом, по крайней мере, если вы будете немного осторожны. Затем у вас есть преимущество в виде надежной статической системы типов для остальной части вашего приложения.
кроме всего прочего, вы можете написать привязки ocaml к существующему решателю рунге-кутта на языке Си.
Я бы посоветовал использовать python + numpy + scipy, общая математическая и числовая поддержка (превосходные многомерные массивы) превосходна. В любом случае это зависит от конкретных потребностей.