विभिन्न इंटीग्रेटर्स के पेशेवरों और विपक्षों [बंद]


29

खेलों में भौतिकी जैसी चीजें बनाते समय आपको एक इंटीग्रेटर की आवश्यकता होती है। मैंने देखा है कि वेरलेट एकीकरण ने कई स्थानों को यूलर एकीकरण के लिए एक बढ़िया विकल्प के रूप में उल्लेख किया है। उदाहरण के लिए थॉमस जैकबसेन द्वारा प्रसिद्ध दस्तावेज़ में । हालांकि इस लेख में ग्लेन फिडलर लिखते हैं:

आपको अलग-अलग इंटीग्रेटर्स के विशाल सरणी से परिचित कराने के बजाय, मैं पीछा करने जा रहा हूं और सीधे सर्वश्रेष्ठ में जाऊंगा। इस इंटीग्रेटर को रनगे कुट्टा ऑर्डर 4 इंटीग्रेटर उर्फ ​​आरके 4 कहा जाता है।

तो जाहिर है कोई चांदी की गोली नहीं है। विभिन्न इंटीग्रेटर्स के पेशेवरों और विपक्षों के बारे में क्या है? सादगी, गति, सटीकता, स्थिरता आदि के बारे में, कौन से इंटीग्रेटर्स किस प्रकार के खेलों के लिए सबसे उपयुक्त हैं? आप Verlet, RK4 या अन्य का उपयोग कब करेंगे? क्या आपको कभी यूलर का इस्तेमाल करना चाहिए?


वहाँ एक बहुत उत्तर है कि आप फैंसी stackoverflow.com/questions/2769466/…
teodron

लिंक के लिए धन्यवाद। मैं पहले से ही इसके बारे में पता कर रहा हूँ।
paldepind

जवाबों:


27

दोनों विधियों के पेशेवरों और विपक्ष:

RK4 पेशेवरों:

  1. सटीकता (इसके बेहतर सन्निकटन श्रृंखला के लिए धन्यवाद, यह 4 वें क्रम की पैदावार देता है)
  2. कृत्रिम / स्वाभाविक रूप से प्रेरित भिगोना (थोड़ा सा अंतर्निहित तरीकों से ऐसा करना) स्थिरता जोड़ता है (जबकि एक सरल यूलर कदम नहीं करता है - यह वास्तव में विपरीत करता है, भूत ऊर्जा का परिचय देता है जो सिस्टम बनाता है और अराजकता में सिस्टम को डुबा सकता है)

RK4 विपक्ष:

  1. अभिकलन व्यय: जबकि निहित तरीकों या हाइब्रिड IMEX विधियों की तुलना में मांग नहीं है, RK4 स्पष्ट यूलर की तुलना में 4 गुना अधिक महंगा है क्योंकि इसके लिए कई और फ़ंक्शन मूल्यांकन की आवश्यकता होती है। यह दिखाता है कि अनुकूलन के रक्तस्राव के किनारे का लक्ष्य क्या है।
  2. अभी भी अस्थिर: शामिल बलों के प्रकारों के आधार पर, आरके 4 केवल यूलर के रूप में अस्थिर हो सकता है। औसतन, आरके 4 थोड़ा अधिक स्थिर है और इस लाभ को इसके संपन्न डंपिंग "कौशल" से आकर्षित करता है।
  3. गैर-सहानुभूति: संख्यात्मक भिगोना एक लागत के साथ आता है - आप उन प्रणालियों का अनुकरण नहीं कर सकते हैं जहां ऊर्जा / मात्रा / आदि। हानि समय के साथ दृश्य प्रभाव लागू नहीं करना चाहिए (जैसे आणविक गतिशीलता, संभावित क्षेत्र व्युत्पन्न बल, परिवर्तनशील समस्याएं)

Verlet पेशेवरों:

  1. एक या दो बार यूलर स्टेप की जटिलता (आपके वर्ले स्वाद के आधार पर: स्थिति या वेग)।
  2. सहानुभूति: आंतरिक ऊर्जा का संरक्षण करती है
  3. दूसरे क्रम की सटीकता: कई खेलों में उच्च परिशुद्धता फ़्लोटिंग पॉइंट परिणामों की आवश्यकता नहीं होती है, और दूसरा ऑर्डर गेम परिदृश्य में आंख के लिए अधिक प्रसन्न होता है (प्लस: इसका उपयोग गैर-गेमिंग परिदृश्य सिमुलेशन में किया गया था, जब इसे "खोज" किया गया था, इसलिए) इतना खराब नहीं है)

Verlet विपक्ष:

  1. स्थिर, लेकिन अभी भी: शायद स्थिरता के संदर्भ में सबसे अच्छा स्पष्ट तरीका है। जब सिस्टम में हार्ड बाधाओं को जोड़ा जाता है, तो यह बढ़त जीतने के लिए जाता है, इस प्रकार स्थिति आधारित डायनेमिक्स इंजन में अनुमानित बाधाओं को लागू करते समय कम सिर-दर्द की अनुमति देता है। यदि सिस्टम बड़ी बाहरी शक्तियों से गड़बड़ा जाता है और कोई भिगोना / घर्षण नहीं जोड़ा जाता है, तो यह अनन्तता के लिए बंद हो जाता है। फिर भी, कुछ निश्चित रूप से लगाई गई सीमाएं हैं कि आंतरिक (वसंत) बल कितने बड़े हो सकते हैं, लेकिन वे औसतन आरके 4 की तुलना में अधिक हैं
  2. कम सटीकता: उपयोगी नहीं है यदि आप उच्च प्रसार अनुमान चाहते हैं
  3. कुछ सिमुलेशन के लिए आरके 4 की तुलना में औसतन, छोटे समय-चरणों की आवश्यकता होती है (आरके 4 इसकी सटीकता और आंतरिक भिगोना दोनों से लाभ)

एक के ऊपर एक का उपयोग करना परिदृश्य पर निर्भर करता है। यदि कठोरता और बड़ी बाहरी शक्तियों और आभासी ऊर्जा एक समस्या है, तो उनके विवरण / शीर्षक में "निहित" शब्द वाले अन्य तरीकों पर विचार करें।


ध्यान दें कि कुछ लेखक / पुस्तकें अर्ध-निहित शब्द का उपयोग एक वास्तविक स्पष्ट यूलर इंटीग्रेटर के लिए सहानुभूति यूलर विधि (या यूलर क्रॉमर) के लिए करते हैं, जिसमें से वेरलेट वास्तव में व्युत्पन्न है। वर्लेट को कुछ लोग "लीपफ्रॉग विधि" से भी पुकारते हैं। वेग वर्लेट और मिडपॉइंट विधि एक समय कदम पर एक अनुमान के बाद से काफी समान हैंt + 0.5*dtभविष्यवक्ता-सुधारक जैसे कदम के लिए आवश्यक है। IMEX विधियों (अंतर्निहित-स्पष्ट) का उपयोग दो समान नाम के लिए भी किया जाता है, लेकिन समान दृष्टिकोण नहीं हैं: अभिकलनों को कठोर और गैर-कठोर भागों में अलग करें और उन पर अलग-अलग इंटीग्रेटर्स का उपयोग करें (गैर-कठोर के लिए स्पष्ट, कठोर के लिए निहित) या हल के लिए। एक निहित अद्यतन कदम के साथ वेग और एक स्पष्ट तरीके से स्थिति को अद्यतन करें (यह एक हाइब्रिड अर्ध-निहित विधि है जो IMEX तरीकों की श्रेणी में आती है क्योंकि कठोर भाग त्वरण गणना को सबसे अधिक प्रभावित करते हैं)। निहित तरीके अधिक बोझिल हैं और संपूर्ण कॉन्फ़िगरेशन के लिए एक साथ गैर-रेखीय समीकरणों की एक प्रणाली को हल करने की आवश्यकता होती है। विकृत विधियों का उपयोग विकृत शरीरों के लिए किया जाता है और आमतौर पर कठोर शरीर के लिए उपयोग नहीं किया जाता है।

जैसा कि टिप्पणियों में से एक में कहा गया है, यदि आप कर सकते हैं, तो यूलर का उपयोग न करें। मिडपॉइंट विधि, अर्ध-निहित यूलर या, एक ही खर्च पर, स्थिति-वर्लेट का उपयोग करें। उन सभी में स्पष्ट ईयूल इंटीग्रेटर की तुलना में थोड़ी अधिक सटीकता और समझदारी से अधिक स्थिरता है।

अनुशंसित लघु-तुलना पठन:

http://wiki.vdrift.net/Numerical_Integration


एक अवलोकन: दोनों वर्लेट वेरिएंट को केवल फ्रेम अपडेट के अनुसार त्वरण का मूल्यांकन करने के लिए कोडित किया जा सकता है।
टेओड्रॉन

1
जवाब के लिए धन्यवाद! बहुत ज्यादा मैं क्या देख रहा था।
paldepind

3

यूलर कार्यान्वयन बहुत तेजी से होता है, लेकिन विकल्पों की तुलना में बहुत कम स्थिर है। रन कुट्टा यूलर की तुलना में धीमी है, लेकिन कहीं अधिक सटीक और स्थिर है।

मैं वेरलेट एकीकरण पर बहुत जानकार नहीं हूं, इसलिए मुझे पता नहीं है कि यह यूलर और रनगे कुट्टा के खिलाफ कैसे ढेर हो गया।

यदि आपको अधिक सटीक होने के लिए अपने सिमुलेशन की आवश्यकता है, या संख्यात्मक रूप से प्रमाण भी है, तो रनगे कुट्टा दो में से बेहतर है।

यदि आपको एक सरल गेम के लिए तेज, कम लागत वाली भौतिकी की आवश्यकता है, तो Euler बेहतर विकल्प है।


2
रन कुट्टा FAR NOT MORE STABLE THAN EULER है। यह अभी भी यूलर है, 1 के बजाय प्रति फ्रेम 8 बार किया गया (भविष्यवाणी और सुधार के थोड़ा सा लेकिन फिर भी ..) फ़ोरम ।evilmana.com
game-

2
निर्भर करता है कि आपको 'स्थिर' होने की क्या जरूरत है। शायद मुझे विस्तृत होना चाहिए, रन कुट्टा शासक की तुलना में संख्यात्मक रूप से अधिक स्थिर है। farside.ph.utexas.edu/teaching/329/lectures/node35.html
टिमोथी ग्रोट

3
जहाँ तक मुझे पता चल सकता है कि कोई कारण नहीं है कि वर्ल ईलर की तुलना में धीमा होगा। इसलिए वेरलेट यूलर की तुलना में कोई गति लाभ नहीं है और यह अभी भी बहुत अधिक सटीक और अधिक स्थिर है। इसलिए मुझे लगता है कि आपका दावा है कि यूलर एक तेज और सरल भौतिकी के लिए सबसे अच्छा है।
paldepind

4
यहाँ सटीकता में भारी अंतर दिखाते हुए एक ब्लॉगपोस्ट है: kahrstrom.com/gamephysics/2011/08/03/euler-vs-verlet
paldepind

2
ट्रांसफॉर्मर्स (पीएस 2, 2004) के अंतिम स्तर में, मैंने जिस फ्लाइट मॉडल को लागू किया, उसमें एक यूलर इंटीग्रेटर का इस्तेमाल किया गया, जिसे मैंने प्रति फ्रेम 2000 बार अपडेट किया। (बेशक, यह सुपरसोनिक गति के लिए एक काफी यथार्थवादी उड़ान मॉडल था और एक घुमावदार गुरुत्वाकर्षण क्षेत्र के अंदर रखा गया था, इसलिए स्थिरता के लिए इसकी आवश्यकताएं बहुत तीव्र थीं। और उस स्तर पर सीपीयू-गहनता के अलावा और कुछ भी नहीं था। मैं इससे दूर होने में सक्षम था)। यूलर पर अतिरिक्त पुनरावृत्तियों को फेंकना अक्सर एक अलग पुनरावृत्ति पर स्विच करने की तुलना में बहुत आसान होता है।
ट्रेवर पॉवेल

1

सबसे पहले और सबसे पहले, मुझे लगता है कि आपको यूलर का उपयोग करना चाहिए जब तक कि आप एक अधिक उन्नत एकीकरण योजना का उपयोग करने के लिए प्रत्यक्ष आवश्यकता का अनुभव न करें। यह तेज और लागू करने में आसान है।

यदि आप स्प्रिंग्स की प्रणालियों जैसे स्थिरता के मुद्दों का अनुभव करते हैं जो कभी आराम नहीं करते हैं या यदि आपके सिमुलेशन को उच्च स्तर की सटीकता की आवश्यकता होती है तो दूसरों के साथ प्रयोग करना शुरू करें।

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


1
मुझे लगता है कि वेरलेट सिर्फ एक सरल और लागू करने में आसान है
paldepind

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