Apakah OCaml ada gunanya untuk analisis numerik? [Tutup]

10

Saat ini saya menggunakan C dan beberapa FORTRAN untuk menyelesaikan sistem persamaan diferensial numerik.

Saya agak muak dengan kedua bahasa ini tetapi saya perlu memiliki beberapa (lebih) kode efisien ... Saya sedang berpikir untuk beralih ke OCaml.

Apakah itu layak?

Eelvex
sumber
4
Saya sangat merekomendasikan SciPy - ini gratis, sepertinya Matlab (tetapi Python), dan hanya membutuhkan beberapa baris untuk menyelesaikannya! scipy.org/Cookbook/…
Ayub
1
MATLAB. Solusi numerik dari sistem persamaan diferensial adalah masalah yang dipecahkan, dan telah berlangsung cukup lama. Jika tujuan Anda adalah untuk menghitung angka-angka Anda, gunakan alat-alat yang telah dikembangkan selama beberapa dekade terakhir untuk melakukan hal itu. Jangan menemukan kembali roda, tidak peduli betapa menyenangkannya itu. Anda akan menghemat banyak waktu dan kejengkelan.
John R. Strohm

Jawaban:

11

Orang-orang di Jane Street Capital benar-benar berpikir begitu. Mereka memberi ceramah di CMU pada 2009 tentang penggunaan OCaml.

Satu-satunya kelemahan yang dapat saya pikirkan adalah bahwa matriks bukan warga negara kelas satu.

Hanya sedikit Roger
sumber
7

Pertama-tama, saya ingin membuat pernyataan yang tidak biasa bahwa untuk perhitungan numerik, bahasa tingkat tinggi jauh lebih berguna dalam jangka panjang daripada bahasa tingkat rendah. Izinkan saya mengutip seorang peneliti dari Fraunhofer Institut yang bekerja dalam simulasi numerik yang digunakan dalam prakiraan cuaca.

Dalam dekade terakhir, CPU menjadi 1000 kali lebih cepat sedangkan algoritma menjadi 1000 * 1000 lebih cepat. Ini berarti, bahwa algoritma hari ini yang berjalan pada CPU kemarin akan mengalahkan algoritma kemarin yang berjalan pada CPU hari ini dengan faktor 1000.

Jelas, ada lebih banyak parameter untuk diperhitungkan sebagai kecepatan dan algoritma CPU, seperti disk atau RAM, tetapi pernyataan itu membantu kami untuk memahami bahwa, jika Anda memilih bahasa tingkat rendah, Anda fokus pada faktor yang salah (1000 bukannya 1000 * 1000).

Tentu saja, mengingat algoritma numerik tertentu yang dapat diharapkan C atau Fortran untuk mengalahkan OCaml atau Common Lisp oleh faktor (sebenarnya bukan itu) yang besar. Tetapi jika Anda benar-benar tertarik pada masalah numerik dan bersedia untuk meningkatkan algoritma, Anda harus memilih bahasa tingkat tinggi yang akan memungkinkan Anda untuk mengekspresikan ide-ide Anda di tingkat tinggi dan dengan mudah meningkatkan algoritma.

Sebagai catatan tambahan, jika Anda mempertimbangkan untuk menulis kode numerik dalam OCaml, Anda harus tahu tentang bagaimana OCaml meneruskan parameter ke fungsi, fungsi sebaris dan unbox floats. Semua ini dirinci dalam catatan Xavier Leroy .

pengguna40989
sumber
Terima kasih atas jawabannya. Sejak itu saya memilih J dan menyukainya. OCaml dekat bagi saya.
Eelvex
6

Untuk to solve numerically systems of differential equationspertama-tama Anda membutuhkan perpustakaan yang tepat. Jadi pemeriksaan wajib adalah: apakah bahasa pemrograman xmendukung mereka.

Secara pribadi saya ingin menulis kode tingkat tinggi dari Catau Fortran, dengan demikian saya telah menggunakan Matlab, Octave, numpy\scipy.

makan
sumber
2

Saya menyukai OCaml, setidaknya sampai saya melihat pemrograman multi-threaded.

dan_waterworth
sumber