Cách tích hợp chính xác trong mô phỏng thiên văn học là gì?


15

Tôi đang tạo ra một trình mô phỏng thiên văn đơn giản nên sử dụng vật lý Newton để mô phỏng chuyển động của các hành tinh trong một hệ thống (hoặc bất kỳ vật thể nào, cho vấn đề đó). Tất cả các cơ thể là các vòng tròn trong một mặt phẳng Euclide, có các tính chất như vị trí, vận tốc, khối lượng, bán kính và lực kết quả.

Tôi muốn cập nhật vũ trụ theo các bước thời gian nhỏ, thường là vài mili giây, nhưng tôi không chắc làm thế nào để tính toán chính xác các thay đổi ở vị trí.

Các lực lượng là đơn giản : fr = sum(G * body.m * bodyi.m / dist(body, bodyi)^2).

Nhưng làm thế nào để tôi đi từ đó?

Tôi có thể làm điều này:

a = Fr/body.m
v += a*dt
position += v*dt

Nhưng điều đó, tất nhiên, là sai. Có lẽ nếu tôi thêm 0,5 như là một yếu tố trong tính toán vị trí?


Thật buồn cười khi không bình luận: Đây thực sự là một vấn đề thiên văn phổ biến để mô phỏng sự chuyển động của "thực vật" ;-)
Wolfgang Bangerth

Câu trả lời:


17

Về cơ bản, bạn đã có câu trả lời - không cần hệ số 0,5.

Về cơ bản, bạn có một hệ thống hai chiều của ODE bậc nhất:

x˙= =vv˙= =Fm,
m
xn+1-xnΔt= =vnvn+1-vnΔt= =Fnm,
xn+1= =xn+Δtvnvn+1= =vn+ΔtFnm.
n

tntn+1tn+1/2x0v1/2

xn+1= =xn+Δtvn+1/2vn+1/2= =vn-1/2+ΔtFnm

v1/2v0

ω= =GMr3,
Mr

Này, bạn có thể giải thích tại sao tôi không cần 0.5yếu tố này không? Nó dường như đang làm điều tương tự như lấy tốc độ n-1/2dtvài giây trước, đó là những gì có vẻ như bạn đang đề xuất.
jcora

(n-1)vnvn+1vn0
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.