2013-08-07 23 views
53

Tôi đã viết mô phỏng các hành tinh ngoài của hệ mặt trời bằng cách sử dụng Euler symplectic method và triển khai thực hiện a) sử dụng repa và b) sử dụng yarr.Hiệu suất 'Repa' cho mô phỏng hành tinh

yarr seems to perform about x30 quicker than repa.

Với điều này, tôi thậm chí không cố gắng sử dụng song song. Có bất kỳ vấn đề hiệu suất rõ ràng nào trong mã số repa của tôi không? Kho lưu trữ là github. Tôi có thể tạo ra một phiên bản repa chỉ đơn giản nếu điều này hữu ích, nhưng sau đó bạn sẽ không nhận được so sánh hiệu suất với yarr.

Ngoài ra, làm cách nào để gỡ lỗi các vấn đề về hiệu suất trong repa?

+0

Bạn cũng có thể xuất bản mô-đun 'Initial', do đó, biên dịch này? – leftaroundabout

+0

https://github.com/idontgetoutmuch/Leapfrog/blob/master/Initial.hs – idontgetoutmuch

Trả lời

2

Hầu hết các phương thức tích hợp số Euler đều gặp phải lỗi vòng tròn tích lũy mà cuối cùng sẽ khiến cho mô phỏng "nổ tung". Bạn có thể muốn điều tra các phương pháp tích phân số tiên tiến, chẳng hạn như Runge-Kutta bậc 4 hoặc bộ hiệu chỉnh dự đoán.

Một nơi khác mà mô phỏng vấn đề cơ thể trở nên dính là khi hai vật thể đến gần nhau, chẳng hạn như mặt trăng với quỹ đạo rất lập dị về hành tinh của nó. Nếu người ta sử dụng gia tăng thời gian cố định cho mô phỏng, lỗi trong những thay đổi lớn của vận tốc góc có thể dẫn đến lỗi chia theo số không hoặc chia cho các giá trị rất nhỏ dẫn đến mô phỏng bị thổi lên. Sử dụng biến delta-t phụ thuộc vào vận tốc góc có thể mang lại lợi ích.

Những đề xuất này dựa trên việc chạy nhiều mô phỏng như một dự án cho khóa học vật lý đại học mà tôi đã thực hiện năm 1973, trong khi thử nghiệm nhiều phương pháp tích hợp số khác nhau. Runge-Kutta và các phương pháp hiệu chỉnh dự đoán đã có từ sáng sớm của máy tính số và một số sách có sẵn. Xem, ví dụ:, Bí quyết số: Nghệ thuật máy tính khoa học bởi William H. Press, Brian P. Flannery, Saul A. Teukolsky và William T. Vetterling. (Nhà xuất bản Đại học Cambridge, 1989)

+0

Lưu ý rằng mã NR thực sự có bản quyền, vì vậy bạn không thể * thực sự * sử dụng chúng trong các mã công cộng. –

+2

Cảm ơn bạn nhưng điều này dường như không giải quyết được câu hỏi của tôi về hiệu suất * của thư viện * repa * cho vấn đề cụ thể này. Như một RK4 sang một bên cũng gặp vấn đề tương tự như các phương thức Euler rõ ràng và tiềm ẩn, đó là năng lượng không được bảo toàn; Tôi có thể đã thêm "làm mềm" để giải quyết vấn đề của các hành tinh nhận được quá gần nhưng đối với các quỹ đạo vòng tròn được xem xét trong bài viết này là không cần thiết. – idontgetoutmuch

+0

Kyle, tôi không ngụ ý rằng mã trong Bí quyết số được sử dụng mà không được phép. Nhiều ví dụ được hiển thị trong cuốn sách dựa trên các phương pháp tính toán số không có bản quyền, một số ví dụ thậm chí còn phát triển các máy tính kỹ thuật số. Đó là một nơi tốt để bắt đầu nếu một người không quen với các kỹ thuật khác nhau. –

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