Чи є OCaml корисним для чисельного аналізу? [зачинено]


10

Наразі я використовую C та деякі FORTRAN для вирішення числових систем диференціальних рівнянь.

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

Чи варто того?


4
Я настійно рекомендую SciPy - він безкоштовний, схожий на Matlab (але є Python), і для цього потрібно лише кілька рядків! scipy.org/Cookbook/…
Робота

1
MATLAB. Числове рішення систем диференціальних рівнянь є вирішеною задачею і існує вже досить давно. Якщо ваша мета - стиснути ваші номери, використовуйте інструменти, розроблені за останні кілька десятиліть, щоб зробити саме це. Не винаходити колесо, як би це не було весело. Ви заощадите багато часу і загострення.
Джон Р. Стром

Відповіді:



7

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

В останнє десятиліття процесори стали в 1000 разів швидшими, а алгоритми - на 1000 * 1000 швидшими. Це означає, що сьогоднішні алгоритми, що працюють на вчорашніх процесорах, будуть бити вчорашні алгоритми, що працюють на сьогоднішніх процесорах, в коефіцієнт 1000.

Очевидно, є набагато більше параметрів, які слід враховувати як швидкість процесора та алгоритми, такі як диски або оперативна пам’ять, але це твердження допомагає нам відмовитись від того, що якщо ви вибираєте мову низького рівня, ви зосереджуєтесь на неправильному факторі (1000 замість 1000 * 1000).

Звичайно, враховуючи будь-який конкретний чисельний алгоритм, можна очікувати, що C або Fortran переможуть OCaml або Common Lisp великим фактором (насправді не таким). Але якщо вас насправді цікавлять чисельні проблеми та ви готові вдосконалити алгоритми, вам слід вибрати мову високого рівня, яка дозволить висловити свої ідеї на високому рівні та легко вдосконалити алгоритми.

В якості додаткової примітки, якщо ви розглядаєте можливість написання числового коду в OCaml, вам обов'язково слід знати про те, як OCaml передає параметри функціям, вбудованим функціям та unbox floats. Все це детально описано в примітках Ксав'єра Лероя .


Дякую за відповідь. Я з тих пір вдався до J і люблю його. OCaml - це для мене найближча секунда.
Ельвенкс

6

Щоб to solve numerically systems of differential equationsвам потрібно в першу чергу власних бібліотек. Тому обов'язкова перевірка: чи xпідтримує їх мова програмування .

Особисто мені подобається писати код більш високому рівні , ніж Cабо Fortran, таким чином , я використовував Matlab, Octave, numpy\scipy.


2

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.