न्यूमेरिक्स: मैं निम्नलिखित ODE का नाम कैसे बदलूं


9

यह प्रश्न अधिक है कि किसी समस्या का संख्यात्मक रूप से सामना कैसे किया जाए।

एक छोटे से प्रोजेक्ट में मैं जानूस और एपिमिथियस के कोऑर्बिटल गति का अनुकरण करना चाहता था। यह मूल रूप से तीन शरीर की समस्या है। मैं शनि मूल पर तय किया जाना चुनते हैं, तो जाने और जानूस और एपिमेथेउस के स्थान वैक्टर, क्रमशः। चूंकि प्रभाव तब होता है जब जानूस और एपिमिथियस एक साथ बहुत करीब होते हैं मैंने एक बेहतर रिज़ॉल्यूशन के लिए रिश्तेदार निर्देशांक चुने, अर्थात और । अब मुझे गति के निम्नलिखित समीकरण मिलते हैं:आर1आर2आर=आर1-आर2आर=आर1+आर2

2टी2(आरआर)=-जी(2±1)आरआर3-4जी(आर+आर(आर+आर)3आर-आर(आर-आर)3)

जहाँ मैं चन्द्रमाओं के द्रव्यमान से मेल खाता है, शनि का द्रव्यमान है और जी गुरुत्वाकर्षण स्थिरांक है। समस्या तब पैदा होती है जब मैं इसे संख्यात्मक रूप से हल करने का प्रयास करता हूं। एक को पूरी तरह से अलग परिमाण के मूल्यों से निपटना पड़ता है, अर्थात ~28 और मैं~17 । और आर , आर 0 से 150,000 के क्षेत्रों में हैं।

ईमानदार होने के लिए मुझे यकीन नहीं है कि इस तरह की संख्यात्मक समस्याओं पर चर्चा करने के लिए यह जगह है।

अधिक जानकारी:

कोड Matlab में लिखा गया है और मैं परिणाम प्राप्त करने के लिए एक मानक ODE सॉल्वर का उपयोग करता हूं। हालाँकि, यह टूट रहा है क्योंकि मशीन की सटीकता के तहत चरण का आकार कम नहीं किया जा सकता है। (मुझे लगता है कि यह आश्चर्य की बात नहीं है क्योंकि किसी को परिमाण के पहले से उल्लिखित आदेशों से निपटना होगा)।


2
क्या आप एसआई इकाइयों में इस सिमुलेशन को चला रहे हैं? न्यूनतम पर, आपको कुछ कारक के माध्यम से सब कुछ विभाजित करना चाहिए , ताकि आप परिमाण के कुछ आदेशों को समाप्त कर सकें। जी*2

नमस्ते, मैं यह, लेकिन यह अभी भी काम नहीं कर रहा है ... वही समस्याएं पहले की तरह होती हैं। :(

आपको अपने द्रव्यमान की इकाई को चंद्रमा के द्रव्यमान में से एक पर सेट करना है, और आपकी इकाइयों की लंबाई / समय चीजों को सेट करने के लिए 1. कुछ भी 1/100 से छोटा नहीं होना चाहिए यदि आप इसे अच्छी तरह से लिखते हैं। ओवर-द-काउंटर सॉल्वर की कोई आवश्यकता नहीं है। अपने आप को ऐसा करने के लिए कोड लिखें, जहां आप चरणों को नियंत्रित करते हैं। इस प्रकार की संभावनाओं के साथ चरणों में ब्रेकडाउन टकरावों पर हो सकता है, जहां सॉल्वर अभिसरण तक चरणों को कम करने की कोशिश करेगा, और टकराव में कोई अभिसरण नहीं है। आपको यह सुनिश्चित करने की आवश्यकता है कि कक्षाएँ मिलीभगत नहीं हैं, इसलिए आपको अनुकरण देखने की आवश्यकता है। जैसा है वैसा जवाब आपको नहीं मिल सकता।
रॉन मैमन

1
कृपया शीर्षक में संक्षिप्त रूप से बचें। DGL = डिफरेंशियल क्लिचंग?

आप किस मानक ODE सॉल्वर का उपयोग कर रहे हैं?
ज्योफ ऑक्सबेरी

जवाबों:


2

आपका वर्तमान दृष्टिकोण संख्यात्मक स्थिरता को बर्बाद करता है; वास्तव में आप शायद इस तरह से संकल्प खो देते हैं।

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


2

"शास्त्रीय" (कठोर) ODE सॉल्वर का उपयोग करने के बजाय, आप ज्यामितीय संख्यात्मक एकीकरण के लिए समर्पित एल्गोरिदम का उपयोग कर सकते हैं। उदाहरण के लिए देखें यह पुस्तक और जीएनआई कोड आप अर्न्स्ट हेयरर की वेबसाइट पर पा सकते हैं ।


0

यदि आपके सिमुलेशन में तीन चरण हैं, तो आप कैसे करें:

  1. जानूस - शनि बल की गणना करके जानूस स्थिति को अपडेट करें।
  2. एपिमिटेयस - शनि बल की गणना करके एपिमिटेयस स्थिति को अपडेट करें।
  3. Janus - Epimetheus बल की गणना करके Janus और Epimetheus स्थिति को अद्यतन करें।

संभवतः # 3 के लिए महीन टाइमस्टेप का उपयोग करना।

मुझे यकीन नहीं है कि यह मदद करेगा। मुझे लगता है कि असली समस्या यह है कि बल का परिमाण चंद्रमा - चंद्रमा और चंद्रमा - शनि के मामले में अलग-अलग है, सिवाय इसके कि क्या चंद्रमा के करीब हैं?

वैकल्पिक रूप से:

  1. यदि चन्द्रमा बंद हो जाते हैं, तो एक समीपवर्ती चन्द्रमा की गणना करते हैं - शनि बल अपने द्रव्यमान वेक्टर के केंद्र का उपयोग करते हैं और एक ही वेक्टर के साथ दोनों स्थिति को अपडेट करते हैं।
  2. यदि वे दूर हैं, तो उन्हें अलग से अपडेट करें।
  3. पहले जैसा।

शुभकामनाएँ!

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