Лисп, OCaml или что за Рунге Кутта? - PullRequest
9 голосов
/ 25 мая 2010

Какой язык вы бы предложили для решения системы с:

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

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

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

  • Элегантный (чистый и короткий) код
  • Гибкость + масштабируемость

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

Спасибо!

Ответы [ 7 ]

5 голосов
/ 26 мая 2010

Вот реализация RK в Common Lisp:

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

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

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

2 голосов
/ 31 мая 2010

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

2 голосов
/ 28 мая 2010

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

2 голосов
/ 26 мая 2010

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

1 голос
/ 03 июня 2010

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

1 голос
/ 26 мая 2010

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

0 голосов
/ 26 мая 2010

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

...