एक विरल लीनियर सिस्टम सॉल्वर चुनते समय मुझे किन दिशा-निर्देशों का पालन करना चाहिए?


49

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

कोई यह कैसे निर्धारित करता है कि प्रत्यक्ष या पुनरावृत्त विधि का उपयोग करना है या नहीं? उस विकल्प को बनाने के बाद, कोई विशेष एल्गोरिथम कैसे चुन सकता है? मैं पहले से ही समरूपता के शोषण के बारे में जानता हूं (उदाहरण के लिए एक विरल सममित सकारात्मक निश्चित प्रणाली के लिए संयुग्म ढाल का उपयोग करें), लेकिन क्या इस तरह की कोई अन्य विचार विधि लेने में विचार किया जाता है?

जवाबों:


33

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


2
"आप जो कुछ भी कर सकते हैं उसे फेंक दें" बहुत ज्यादा सलाह थी जिसे मैं करने का आदी था। :) आपके द्वारा लिंक किया गया तीसरा पेपर कुछ ऐसा है जो मैंने पहले नहीं देखा है; उसके लिए धन्यवाद!
जेएम

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

5
एरन का अनुमान अच्छा है लेकिन भारी भरकम पर निर्भर करता है क्योंकि विरल प्रत्यक्ष तरीके आमतौर पर थकावट से पहले स्मृति को समाप्त करते हैं।
मैट नेप्ले

18

प्रत्यक्ष और पुनरावृत्त तरीकों के बीच का चुनाव लक्ष्यों और समस्या पर निर्भर है।

प्रत्यक्ष तरीकों के लिए, हम नोट कर सकते हैं:

  • गुणांक मैट्रिक्स अभिकलन और विरल सिस्टम निकास स्मृति आवश्यकताओं के लिए मई के पाठ्यक्रम पर रैखिक प्रणाली में परिवर्तन की और काम पूर्ति की वजह से प्रयास में वृद्धि
  • उपयोगी परिणाम देने के लिए पूरा करना होगा
  • यदि दाएं हाथ के कई हिस्से मौजूद हैं, तो बाद के चरणों में फैक्टराइजेशन का पुन: उपयोग किया जा सकता है
  • केवल रैखिक प्रणालियों को हल करने के लिए इस्तेमाल किया जा सकता है।
  • शायद ही कभी विफल होता है।

Iterative विधियों के लिए, हम नोट कर सकते हैं:

  • इसका लक्ष्य कम संख्या में पुनरावृत्तियों के बाद आंशिक परिणाम देना है।
  • उसी समस्या के लिए समाधान के प्रयास प्रत्यक्ष तरीकों से कम होने चाहिए।
  • भंडारण के संबंध में किफायती (कोई भरण नहीं)
  • अक्सर प्रोग्राम करना आसान होता है।
  • एक ज्ञात अनुमानित समाधान का फायदा उठाया जा सकता है।
  • कभी-कभी वे तेज होते हैं और कभी-कभी वे (कभी-कभी विचलनशील) भी नहीं होते हैं।
  • जटिल समस्याओं के लिए, प्रत्यक्ष तरीकों की तुलना में पुनरावृत्त तरीके काफी कम मजबूत हैं।

प्रत्यक्ष या पुनरावृत्त तरीकों का उपयोग करने के लिए दिशानिर्देश?

  • जब गुणांक मैट्रिक्स विरल होता है और प्रत्यक्ष विधियां कुशलता से स्पार्सिटी का दोहन नहीं कर सकती हैं (भरने से बचें)।
  • कई दाहिने हाथों के लिए सीधी विधियाँ।
  • यदि सटीकता कम चिंता का है तो Iterative विधियाँ अधिक कुशल हो सकती हैं
  • समीकरणों के nonlinear प्रणालियों के लिए पुनरावृत्ति विधियां।

8
O(n)O(n)O(n2)हे(1)

8

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


5
यह उत्तर यह आभास देता है कि मल्टीग्रिड की प्रभावशीलता एक अच्छा प्रारंभिक अनुमान लगाने से आती है। वास्तव में, प्रारंभिक अनुमान रैखिक समस्याओं के लिए एक मामूली चिंता है और वास्तव में केवल पूर्ण मल्टीग्रिड के लिए एक चिंता का विषय है। वर्णक्रमीय अलगाव के कारण मल्टीग्रिड काम करता है। ध्यान दें कि कठिन समस्याओं के लिए मल्टीग्रिड अच्छा प्रदर्शन करना एक महत्वपूर्ण चुनौती है। मल्टीग्रिड समानांतर में बहुत अच्छी तरह से काम करता है, यह कई गॉर्डन बेल पुरस्कारों में प्रमुख घटक रहा है और कुछ खुले स्रोत पैकेज आज की सबसे बड़ी मशीनों पर उच्च दक्षता के साथ चलते हैं। GPU कार्यान्वयन के लिए, CUSP लाइब्रेरी देखें।
जेड ब्राउन

ज्यादातर बार एक यादृच्छिक प्रारंभिक अनुमान काफी अच्छा होता है। Lanczos एल्गोरिथ्म का उपयोग कर eigenvalues ​​निकालने में, एक यादृच्छिक शुरुआत / पुनः आरंभ करने वाला वेक्टर मदद करता है। लांसरोज़ एल्गोरिथम में कई बार रिस्टार्ट होते हैं।
अनिलज

3

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

यदि आपका मैट्रिक्स चिकनी गुणांक वाले आंशिक अंतर समीकरण से उत्पन्न होता है, तो एक ज्यामितीय मल्टीग्रिड विधि को हरा करना मुश्किल होगा, विशेष रूप से तीन आयामों में। यदि आपकी समस्या कम नियमित है, तो बीजगणितीय मल्टीग्रिड एक अच्छी विधि है। दोनों आमतौर पर क्रायलोव-अंतरिक्ष विधियों के साथ संयुक्त होते हैं। अन्य कुशल सॉल्वर को तेज गुणन विधियों या फास्ट फूरियर ट्रांसफॉर्म से प्राप्त किया जा सकता है।

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