OCaml có tốt cho phân tích số không? [đóng cửa]


10

Tôi hiện đang sử dụng C và một số FORTRAN để giải các hệ phương trình vi phân số.

Tôi hơi chán với cả hai ngôn ngữ này nhưng tôi cần có một số mã (khá) hiệu quả ... Tôi đang nghĩ đến việc chuyển sang OCaml.

Nó có đáng không?


4
Tôi đánh giá cao SciPy - nó miễn phí, trông giống như Matlab (nhưng là Python) và chỉ mất vài dòng để hoàn thành nó! scipy.org/Cookbook/ từ
Công việc

1
MATLAB. Giải pháp số của các hệ phương trình vi phân là một vấn đề được giải quyết, và đã có từ khá lâu. Nếu mục tiêu của bạn là crunch số của bạn, sử dụng các công cụ đã được phát triển trong nhiều thập kỷ qua để làm điều đó. Đừng phát minh lại bánh xe, bất kể nó có thể vui đến mức nào. Bạn sẽ tiết kiệm cho mình rất nhiều thời gian và làm nặng thêm.
John R. Strohm

Câu trả lời:



7

Trước hết, tôi muốn đưa ra tuyên bố khác thường rằng đối với các tính toán số, các ngôn ngữ cấp cao sẽ hữu ích hơn nhiều về lâu dài so với các ngôn ngữ cấp thấp. Hãy để tôi trích dẫn một cách lỏng lẻo một nhà nghiên cứu từ Viện Fraunhofer làm việc trong các mô phỏng số được sử dụng trong dự báo thời tiết.

Trong thập kỷ qua, CPU trở nên nhanh hơn 1000 lần trong khi các thuật toán trở nên nhanh hơn 1000 * 1000. Điều này có nghĩa là, các thuật toán ngày nay chạy trên CPU của ngày hôm qua sẽ đánh bại các thuật toán của ngày hôm qua chạy trên các CPU ngày nay với hệ số 1000.

Rõ ràng, có nhiều tham số hơn để xem xét như tốc độ và thuật toán CPU, như đĩa hoặc RAM, nhưng tuyên bố đó giúp chúng tôi hủy bỏ rằng, nếu bạn chọn ngôn ngữ cấp thấp, bạn tập trung vào yếu tố sai (1000 thay vì 1000 * 1000).

Tất nhiên, đưa ra bất kỳ bằng số cụ thể thuật toán người ta có thể mong đợi C hoặc Fortran để đánh bại OCaml hoặc Common Lisp bởi một (trên thực tế không phải là) yếu tố lớn. Nhưng nếu bạn thực sự quan tâm đến các vấn đề về số và sẵn sàng cải tiến thuật toán, thì bạn nên chọn một ngôn ngữ cấp cao cho phép bạn thể hiện ý tưởng của mình ở mức cao và dễ dàng cải thiện thuật toán.

Là một lưu ý phụ, nếu bạn xem xét việc viết mã số bằng OCaml, bạn chắc chắn nên biết về cách OCaml truyền tham số cho các hàm, hàm nội tuyến và thả nổi unbox. Tất cả điều này được chi tiết trong ghi chú của Xavier Leroy .


Cảm ơn câu trả lời. Kể từ khi tôi đến J và yêu nó. OCaml là một thứ hai gần gũi với tôi.
Eelvex

6

Để to solve numerically systems of differential equationsbạn sẽ cần trước hết các thư viện thích hợp. Vì vậy, một kiểm tra bắt buộc là: một ngôn ngữ lập trình có xhỗ trợ họ không.

Cá nhân tôi muốn ghi mã cấp cao hơn Choặc Fortran, vì vậy tôi đã sử dụng Matlab, Octave, numpy\scipy.


2

Tôi thích OCaml, ít nhất là cho đến khi tôi nhìn vào lập trình đa luồng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.