อะไรคือวิธีที่ถูกต้องในการบูรณาการในการจำลองทางดาราศาสตร์?


15

ฉันกำลังสร้างเครื่องจำลองทางดาราศาสตร์อย่างง่ายที่ควรใช้ฟิสิกส์ของนิวตันเพื่อจำลองการเคลื่อนที่ของดาวเคราะห์ในระบบ (หรือวัตถุใด ๆ สำหรับเรื่องนั้น) ร่างกายทั้งหมดเป็นวงกลมในระนาบแบบยุคลิดที่มีคุณสมบัติเช่นตำแหน่ง, ความเร็ว, มวล, รัศมีและแรงที่เกิดขึ้น

ฉันต้องการอัปเดตจักรวาลในช่วงเวลาสั้น ๆ โดยปกติจะใช้เวลาไม่กี่มิลลิวินาที แต่ฉันไม่แน่ใจว่าจะคำนวณการเปลี่ยนแปลงที่ถูกต้องได้อย่างไร

แรงง่าย: fr = sum(G * body.m * bodyi.m / dist(body, bodyi)^2).

แต่ฉันจะไปจากที่นั่นได้อย่างไร

ฉันสามารถทำสิ่งนี้:

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

แต่แน่นอนว่าจะเป็นเท็จ บางทีถ้าฉันเพิ่ม 0.5 เป็นปัจจัยในการคำนวณตำแหน่ง?


มันตลกเกินไปที่จะไม่แสดงความคิดเห็น: มันเป็นปัญหาทางดาราศาสตร์ที่พบได้ทั่วไปเพื่อจำลองการเคลื่อนไหวของ "plants" ;-)
Wolfgang Bangerth

คำตอบ:


17

คุณได้คำตอบเป็นหลัก - ไม่จำเป็นต้องใช้ปัจจัย 0.5

โดยพื้นฐานแล้วคุณมีระบบสองมิติสำหรับลำดับแรก: ที่ทุกอย่างเป็นหน้าที่ของเวลายกเว้นสันนิษฐานเมตรและจุดแสดงเวลาสัญญาซื้อขายล่วงหน้า หากคุณทำตามลำดับแรกที่แตกต่างกันของออยเลอร์ - เอสก์คุณจะพบว่า x n + 1 -xn

x˙=โวลต์โวลต์˙=Fม.,
ม. หรือ xn+1
xn+1-xnΔเสื้อ=โวลต์nโวลต์n+1-โวลต์nΔเสื้อ=Fnม.,
นี่ฉันทำดัชนี timestep กับn
xn+1=xn+Δเสื้อโวลต์nโวลต์n+1=โวลต์n+Δเสื้อFnม..
n

เสื้อnเสื้อn+1เสื้อn+1/2x0โวลต์1/2

xn+1=xn+Δเสื้อโวลต์n+1/2โวลต์n+1/2=โวลต์n-1/2+Δเสื้อFnม.

โวลต์1/2โวลต์0

ω=GMR3,
MR

เฮ้คุณช่วยอธิบายได้ไหมว่าทำไมฉันถึงไม่ต้องการ0.5ปัจจัย ดูเหมือนว่าจะทำในสิ่งเดียวกันกับที่ใช้ความเร็วn-1/2dtวินาทีที่ผ่านมาซึ่งเป็นสิ่งที่คุณแนะนำ
jcora

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