OCaml ดีสำหรับการวิเคราะห์เชิงตัวเลขหรือไม่? [ปิด]


10

ปัจจุบันฉันใช้ C และ FORTRAN บางตัวเพื่อแก้ระบบเชิงตัวเลขของสมการเชิงอนุพันธ์

ฉันเบื่อกับทั้งสองภาษา แต่ฉันต้องมีรหัสที่มีประสิทธิภาพ (ค่อนข้าง) บางอย่าง ... ฉันกำลังคิดที่จะเปลี่ยนเป็น OCaml

มันคุ้มหรือไม่


4
ฉันขอแนะนำ SciPy - ฟรีดูเหมือน Matlab (แต่เป็น Python) และใช้เวลาเพียงไม่กี่บรรทัดในการทำให้เสร็จ! scipy.org/Cookbook/…
งาน

1
MATLAB การแก้ปัญหาเชิงตัวเลขของระบบของสมการเชิงอนุพันธ์เป็นปัญหาที่แก้ไขแล้วและได้รับมาระยะหนึ่งแล้ว หากวัตถุประสงค์ของคุณคือการกระทืบตัวเลขของคุณให้ใช้เครื่องมือที่ได้รับการพัฒนาในช่วงหลายทศวรรษที่ผ่านมาเพื่อทำสิ่งนั้น อย่าบูรณาการล้อไม่ว่าจะสนุกขนาดไหนก็ตาม คุณจะประหยัดเวลาได้มากและทำให้รุนแรงขึ้น
John R. Strohm

คำตอบ:



7

ก่อนอื่นฉันต้องการสร้างข้อความที่ผิดปกติว่าสำหรับการคำนวณเชิงตัวเลขภาษาระดับสูงมีประโยชน์มากกว่าในระยะยาวมากกว่าภาษาระดับต่ำ ผมขออ้างนักวิจัยจาก Fraunhofer Institut ที่ทำงานในแบบจำลองเชิงตัวเลขที่ใช้ในการพยากรณ์อากาศ

ในทศวรรษที่ผ่านมาซีพียูเร็วขึ้น 1,000 เท่าในขณะที่อัลกอริธึมกลายเป็น 1,000 * 1,000 เร็วขึ้น ซึ่งหมายความว่าอัลกอริทึมของวันนี้ที่ทำงานบนซีพียูของเมื่อวานนี้จะเอาชนะอัลกอริทึมของเมื่อวานที่ทำงานบนซีพียูในปัจจุบันได้ 1,000 ตัว

เห็นได้ชัดว่ามีพารามิเตอร์อีกมากที่ต้องคำนึงถึงความเร็วของซีพียูและอัลกอริธึมเช่นดิสก์หรือแรม แต่คำสั่งนั้นช่วยให้เราสามารถยกเลิกการทดสอบได้หากคุณเลือกภาษาที่มีระดับต่ำคุณจะมุ่งเน้นไปที่ปัจจัยผิด ๆ 1000 * 1000)

แน่นอนว่าเมื่อใช้อัลกอริธึมเฉพาะกับตัวเลขใด ๆเราสามารถคาดหวังให้ C หรือ Fortran เอาชนะ OCaml หรือ Common LISP ได้ด้วยปัจจัยขนาดใหญ่ แต่ถ้าคุณสนใจปัญหาเชิงตัวเลขและเต็มใจที่จะปรับปรุงอัลกอริธึมคุณควรเลือกภาษาระดับสูงที่จะช่วยให้คุณสามารถแสดงความคิดเห็นในระดับสูงและเพื่อปรับปรุงอัลกอริทึมได้อย่างง่ายดาย

ในฐานะที่เป็นบันทึกด้านข้างหากคุณพิจารณาการเขียนรหัสตัวเลขใน OCaml คุณควรรู้อย่างแน่นอนเกี่ยวกับวิธีที่ OCaml ส่งผ่านพารามิเตอร์ไปยังฟังก์ชั่นฟังก์ชั่นอินไลน์และ unbox ลอย ทั้งหมดนี้เป็นรายละเอียดในบันทึกของซาเวียร์เลอรอย


ขอบคุณสำหรับคำตอบ. ฉันใช้Jและรักมันตั้งแต่นั้นมา OCaml เป็นวินาทีที่ใกล้ชิดกับฉัน
Eelvex

6

ก่อนอื่นto solve numerically systems of differential equationsคุณต้องมีห้องสมุดที่เหมาะสมทั้งหมดก่อน ดังนั้นการตรวจสอบที่จำเป็นคือ: ภาษาการเขียนโปรแกรมxสนับสนุนพวกเขาหรือไม่

ส่วนตัวผมชอบที่จะเขียนรหัสระดับที่สูงกว่าCหรือFortranดังนั้นฉันได้ใช้Matlab, ,Octavenumpy\scipy


2

ฉันชอบ OCaml อย่างน้อยก็จนกว่าฉันจะดูการเขียนโปรแกรมแบบมัลติเธรด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.