खगोल विज्ञान सिमुलेशन में एकीकृत करने का सही तरीका क्या है?


15

मैं एक साधारण एस्ट्रोनॉमी सिम्युलेटर बना रहा हूं, जिसे सिस्टम में ग्रहों की गति (या किसी भी वस्तु के लिए, इस मामले के लिए) का अनुकरण करने के लिए न्यूटनियन भौतिकी का उपयोग करना चाहिए। सभी शरीर एक यूक्लिडियन विमान में मंडलियां हैं, जिनमें स्थिति, वेग, द्रव्यमान, त्रिज्या और परिणामी बल जैसे गुण हैं।

मैं छोटे समय के चरणों में ब्रह्मांड को अपडेट करना चाहता हूं, आमतौर पर कुछ मिलीसेकंड, लेकिन मुझे यकीन नहीं है कि स्थिति में बदलाव की सही गणना कैसे करें।

बल सरल है fr = sum(G * body.m * bodyi.m / dist(body, bodyi)^2):।

लेकिन मैं वहां से कैसे जाऊं?

मैं ऐसा कर सकता था:

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

लेकिन यह निश्चित रूप से गलत होगा। शायद अगर मैंने स्थिति गणना में एक कारक के रूप में 0.5 जोड़ा?


यह टिप्पणी नहीं करने के लिए बहुत हास्यास्पद है: "पौधों" की गति को अनुकरण करने के लिए यह वास्तव में एक सामान्य खगोलीय समस्या है; ;-)
वोल्फगैंग बंगर्थ

जवाबों:


17

आपको अनिवार्य रूप से जवाब मिल गया है - 0.5 के कारक की कोई आवश्यकता नहीं है।

अनिवार्य रूप से आपके पास पहले क्रम के ODEs की द्वि-आयामी प्रणाली है:

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

tntn+1tn+1/2x0v1/2

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

v1/2v0

ω=GMr3,
Mr

अरे, क्या आप बता सकते हैं कि मुझे 0.5कारक की आवश्यकता क्यों नहीं है? यह गति n-1/2dtसेकंड पहले लेने जैसा ही काम कर रहा है , जो आपको लगता है कि आपको सुझाव दे रहा है।
जकोरा

(n1)vnvn+1vn0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.