2010-09-24 35 views
10

Tôi đã được ra khỏi mô hình biz, vì vậy để nói chuyện, trong một thời bây giờ. Khi tôi còn học đại học, hầu hết các mô hình tôi làm việc đều được viết bằng FORTRAN, điều tôi chưa bao giờ thích. Tôi đang tìm cách trở lại khoa học, vì vậy tôi tự hỏi liệu có những ngôn ngữ hiện đại với các tính năng phù hợp cho loại ứng dụng này hay không. Bạn sẽ coi đây là ngôn ngữ tối ưu để mô phỏng các hệ thống vật lý phức tạp?Ngôn ngữ tốt nhất cho mô hình vật lý là gì?

+1

Câu hỏi hay, nhưng tôi nghĩ điều này thuộc về http://programmers.stackexchange.com/ –

Trả lời

4

Tôi nghĩ có thể cho rằng FORTRAN vẫn chiếm ưu thế khi giải quyết các vấn đề quy mô lớn trong vật lý, miễn là chúng ta đang nói về tính toán nối tiếp.

Tôi biết rằng việc song song đang thay đổi trò chơi. Tôi ít chắc chắn về việc có hoặc không song song các phiên bản của LINPACK và các gói đại số tuyến tính khác vẫn được viết bằng FORTRAN.

Rất nhiều kỹ sư đang sử dụng MATLAB và Mathematica những ngày này, vì chúng kết hợp các khả năng số và đồ họa.

Tôi cũng chỉ ra rằng có sự khác biệt giữa công cụ tính toán và hiển thị. Trước đây có thể vẫn được viết bằng FORTRAN, nhưng sau này có thể đang sử dụng nhiều ngôn ngữ hiện đại hơn và OpenGL.

Tôi cũng không chắc chắn về việc có bao nhiêu người mẫu đã lọt vào sinh học. Vật lý hóa học có thể là một động vật rất khác nhau hoàn toàn.

Nếu bạn viết một gói đại số tuyến tính song song tuyệt vời trong Scala hoặc F # hoặc Haskell hoạt động tốt, thế giới sẽ đánh bại đường dẫn đến cửa của bạn.

+1

Xin lỗi, tôi không nhận ra bạn đã đề xuất Matlab. Để thêm vào câu trả lời của bạn mặc dù: Fortran vẫn còn xung quanh ngày hôm nay trong các mã như Siesta (Sáng kiến ​​tiếng Tây Ban Nha cho mô phỏng điện tử với hàng ngàn nguyên tử) được song song. – Geodesic

+1

Tôi nghĩ rằng nó thậm chí không đáng nói đến FORTRAN trong ngày và tuổi tác này. – OTZ

+3

Thật sao? Có tất cả các gói phần tử hữu hạn thương mại được viết lại không? Có phải mọi người đang làm CFD trong C# bây giờ không? Bạn đang viết phần mềm để mô hình hóa các vấn đề vật lý? Nếu có, nó có được bán bằng tiền không? – duffymo

8

Trong khi chắc chắn Fortran là người cai trị tuyệt đối cho điều này, Python đang được sử dụng ngày càng chính xác cho mục đích này. Trong khi rất khó để nói đó là chương trình TỐT NHẤT cho điều này, tôi đã tìm thấy python khá hữu ích cho mô phỏng vật lý và giáo dục vật lý.

+1

+1 - NumPy và SciPy. Tôi không tin phần mềm thương mại có sẵn đang theo dõi khách hàng tiềm năng của bạn. – duffymo

2

Python + Matplotlib + NumPy + α

1

Ngoài ra còn có rất nhiều khả năng với MATLAB. Đặc biệt là khi interfacing mô phỏng của bạn với phần cứng, hoặc nếu bạn cần kết quả của bạn hình dung.

+3

Tôi xin lỗi, các phần mềm thương mại như MATLAB quá cũ. Xem xét xác suất của bạn liên tục trả tiền cho việc đăng ký và nâng cấp trong tương lai, nó không đáng để đầu tư. – OTZ

+1

Những người tôi biết tại một công ty kỹ thuật Dow Jones đều sử dụng Matlab và viết các gói CFD ở Fortran. Bạn có thông tin gì để sao lưu những gì bạn đang nói? – duffymo

+0

Và bạn sẽ không gọi Dow Jones là "trường học cũ"? Tôi chưa bao giờ nghe bất cứ điều gì về công nghệ sáng tạo từ DJ & Co và những thứ tương tự. – OTZ

3

Cộng đồng vật lý năng lượng hạt nhân/hạt/năng lượng cao đã di chuyển rất nhiều về phía C++ (một phần do ROOT và Geant4), với một số quan tâm đến Python (vì nó có liên kết ROOT). Tuy nhiên, bạn sẽ lưu ý rằng đây là phụ thuộc kỷ luật phụ ... "vật lý" và "mô hình hóa" là lớn, chủ đề rộng, do đó không có câu trả lời nào.

+0

Thú vị. Tôi đã làm tất cả công việc của mình trong vật lý astro và hành tinh, và tôi đã làm việc với một số mô hình, tất cả đều được viết bằng FORTRAN. Chúng tôi đã sử dụng IDL để phân tích. – FCBastiat

7

Nó phụ thuộc vào nhiệm vụ

  • C++ rất giỏi cấu trúc dữ liệu phức tạp, nhưng nó là xấu tại slicing và nhân ma trận. (Nhiệm vụ này làm bạn mất nhiều thời gian để viết vòng lặp.)
  • FORTRAN có ký pháp tốt để cắt và nhân ma trận, nhưng nó là vụng về để tạo cấu trúc dữ liệu phức tạp như đồ thị và danh sách liên kết.
  • Python/scipy có một ký hiệu tốt đẹp cho mọi thứ, nhưng python là một ngôn ngữ interepreted, do đó, nó là chậm tại một số nhiệm vụ.
  • Một số người quan tâm đến các ngôn ngữ như CUDA cho phép bạn sử dụng GPU để tăng tốc độ mô phỏng của mình.

Trong cộng đồng động lực học phân tử C++ có vẻ là phổ biến, vì bạn cần cấu trúc dữ liệu hơi phức tạp để biểu thị hình dạng của các phân tử.

+1

bạn có thể cung cấp một liên kết đến các cấu trúc dữ liệu phức tạp được sử dụng trong động lực phân tử? – mt3

2

Modelica là ngôn ngữ chuyên biệt để lập mô hình (và mô phỏng) hệ thống vật lý. OpenModelica là một triển khai mã nguồn mở của Modelica.

1

Tôi sẽ kêu gọi bằng Python nhưng bạn cũng nên xem R cho bất kỳ công việc thống kê nào mà bạn có thể cần làm. Bạn thực sự nên hỏi thêm về những gói mà ngôn ngữ sử dụng thay vì ngôn ngữ.

0

Python rất phổ biến trong số những người theo định hướng khoa học, như Matlab. Vấn đề với những điều này là chúng đều rất chậm (để chạy). Nếu bạn muốn thực hiện các mô phỏng lớn có thể mất vài phút/giờ/ngày, bạn sẽ phải chọn một ngôn ngữ khác.

Miễn là bạn đang chọn ngôn ngữ cho tốc độ, hãy hút nó lên và sử dụng C/C++, có thể với CUDA tùy theo nhu cầu của bạn.

Suy nghĩ cuối cùng: nếu bạn mất hai ngày để viết và gỡ lỗi mô hình của bạn bằng C, và mã kết quả mất 10 phút để chạy thay vì một giờ, bạn có thực sự lưu bất kỳ lúc nào không?

Các vấn đề liên quan