एक छोटे रैंक विकर्ण अद्यतन के साथ एक प्रणाली को हल करना


9

मान लीजिए कि मेरे पास मूल बड़े, विरल रैखिक प्रणाली है: Ax0=b0। अब मेरे पास नहीं हैA1 चूंकि A बहुत बड़ा है या किसी भी प्रकार का अपघटन है A, लेकिन मान लें कि मेरे पास समाधान है x0 एक पुनरावृत्त हल के साथ मिला।

अब, मैं A के विकर्ण में एक छोटा रैंक अपडेट लागू करना चाहता हूं (कुछ विकर्ण प्रविष्टियों को बदलें): (A+D)x1=b0 कहाँ पे Dएक विकर्ण मैट्रिक्स है जिसके अधिकतर विकर्ण और कुछ गैर-अक्षीय मान हैं। अगर मैं होताA1मैं उलटा करने के लिए एक अद्यतन लागू करने के लिए वुडबरी फॉर्मूला का लाभ उठा सकता हूं। हालाँकि, मेरे पास यह उपलब्ध नहीं है। क्या ऐसा कुछ है जो मैं पूरे सिस्टम को फिर से हल करने के लिए कम कर सकता हूं? क्या कोई रास्ता है कि शायद मैं एक पूर्व-शिक्षक के साथ आ सकता हूंM कौन सा आसान \ आसान उल्टा है, इस तरह MA1A0, ताकि अगर मेरे पास हो तो सब मुझे करना पड़ेगा x0 लागू होता है M1 और एक पुनरावृत्ति विधि एक जोड़े / कुछ पुनरावृत्तियों में परिवर्तित होगा?


आप के लिए एक अच्छा पूर्व शर्त के साथ शुरू कर रहे हैं Aऔर यह जानना चाहते हैं कि इसे कैसे अपडेट किया जाए? अद्यतन क्या रैंक है? (एक रैंक1000 आकार के एक मैट्रिक्स की तुलना में अपडेट "छोटा" है 109लेकिन पुनरावृत्ति गिनती के संदर्भ में छोटा नहीं है।)
जेड ब्राउन

A आकार के आसपास है 106 सेवा 107, और अद्यतन <1000 (संभावना <100) तत्व है। मैं ए के लिए एक विकर्ण प्रकार के पूर्वगामी का उपयोग कर रहा हूं जो वास्तव में अच्छी तरह से काम करता है, इसलिए अद्यतन करना जो तुच्छ होगा, लेकिन मैं सोच रहा था कि क्या कुछ बेहतर है जो मैं खरोंच से नई प्रणाली को हल करने के बजाय कर सकता हूं।
कॉस्टिस

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

वर्तमान में मैं केवल एक आरएचएस के लिए हल कर रहा हूं (b वेक्टर) प्रत्येक के साथ A संशोधन करने से पहले मैट्रिक्स A
कॉस्टिस

जवाबों:


4
  1. दो मैट्रिसेस के कॉलम में सेव करें B तथा C सभी वैक्टर bj जिसे आपने पिछले पुनरावृत्तियों और परिणामों में मैट्रिक्स लागू किया था cj=Abj

  2. प्रत्येक नई प्रणाली के लिए (A+D)x=b (या Ax=b, जो विशेष मामला है D=0), लगभग अतिसक्रिय रैखिक प्रणाली का समाधान (C+DB)yb, उदाहरण के लिए, पंक्तियों के एक सबसेट (संभवतः सभी) का चयन करके और घने कम से कम वर्ग विधि का उपयोग करके। ध्यान दें कि केवल चयनित भागC+DBइकट्ठा करने की जरूरत है; तो यह एक तेज़ ऑपरेशन है!

  3. डाल x0=By। यह एक अच्छा प्रारंभिक सन्निकटन है जिसके समाधान के लिए पुनरावृति शुरू करना है(A+D)x=b। यदि आगे की प्रणालियों को संसाधित किया जाना चाहिए, तो मैट्रिक्स के विस्तार के लिए इस नए पुनरावृत्ति में मैट्रिक्स वेक्टर उत्पादों का उपयोग करेंB तथा C परिणामी उपतंत्र पर।

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

पंक्तियों को इस तरह से चुना जाना चाहिए कि वे लगभग पूरी समस्या के मोटे विवेक के अनुरूप हों। अपेक्षित मैट्रिक्स वेक्टर गुणकों की कुल संख्या की तुलना में पांच गुना अधिक पंक्तियाँ लेना पर्याप्त होना चाहिए।

संपादित करें: यह काम क्यों करता है? निर्माण से, मेट्रिसेसB तथा C द्वारा संबंधित हैं C=AB। यदि उप-स्तंभ के स्तंभ द्वारा स्‍पष्‍ट किया गया हैB सटीक समाधान वेक्टर शामिल है x (एक दुर्लभ लेकिन सरल स्थिति) तब x का रूप है x=By कुछ के लिए y। इसे समीकरण में परिभाषित करते हुएx समीकरण देता है (C+DB)y=b। इस प्रकार इस मामले में, उपरोक्त प्रक्रिया प्रारंभिक बिंदु के रूप में देती हैx0=By=x, जो सटीक समाधान है।

सामान्य तौर पर, कोई उम्मीद नहीं कर सकता है x के कॉलम स्पेस में झूठ बोलना B, लेकिन उत्पन्न होने वाला प्रारंभिक बिंदु इस बादल अंतरिक्ष में निकटतम बिंदु होगा x, चयनित पंक्तियों द्वारा निर्धारित मीट्रिक में। इस प्रकार यह एक समझदार सन्निकटन होने की संभावना है। जैसे ही अधिक प्रणालियां संसाधित होती हैं, कॉलम स्पेस बढ़ता है और अनुमानित रूप से बहुत सुधार होने की संभावना होगी, ताकि कोई कम और कम पुनरावृत्तियों में परिवर्तित होने की उम्मीद कर सके।

Edit2: उत्पन्न उप-वर्ग के बारे में: यदि कोई क्रिलोव विधि के साथ प्रत्येक सिस्टम को हल करता है, तो वैक्टरों ने दूसरे सिस्टम के लिए शुरुआती बिंदु प्राप्त करने के लिए पहले दाहिने हाथ की ओर क्रायलोव उप-क्षेत्र का उपयोग किया। इस प्रकार जब भी क्रायलोव उप-क्षेत्र में आपकी दूसरी प्रणाली के समाधान के करीब एक वेक्टर होता है, तो एक अच्छा सन्निकटन हो जाता है। सामान्य तौर पर, वैक्टर के लिए शुरुआती बिंदु प्राप्त करते थे(k+1)सेंट सिस्टम पहले के क्रायलोव उप-भाग वाले स्थान को फैलाता है k दाहिना हाथ।


धन्यवाद, न्यूइमर के प्रो। मैं यह कोशिश करूंगा। क्या आप शायद मुझे इसका संक्षिप्त विवरण दे सकते हैं कि यह कैसे काम करता है?
कॉस्टिस

इसके अलावा, क्या होगा यदि मैं कई अलग-अलग आरएचएस वैक्टर के लिए एक ही प्रणाली को हल करना चाहता हूं? अर्थातAx0=b0, Ax1=b1, Ax2=b2, आदि क्या ऐसी कोई जानकारी है जिसका उपयोग मैं पिछले हल से उपयोग कर सकता हूं ताकि बाद में तेजी लाई जा सके?
कॉस्टिस

@ कोस्टिस: एक ही मैट्रिक्स के साथ एक संकल्प सिर्फ विशेष मामला है D=0सामान्य समस्या की। अपने पहले प्रश्न के लिए संपादन देखें।
अर्नोल्ड न्यूमैयर

@ कॉस्टिस: मैंने चरण 2 में थोड़ा और विवरण जोड़ा है - यदि आप आवेदन लिखते हैं, तो कृपया मा को एक प्रीप्रिंट भेजें।
अर्नोल्ड न्यूमैयर

स्पष्टीकरण के लिए धन्यवाद! मैं सिर्फ ओवरडाइट सिस्टम को हल क्यों नहीं कर सकता(C+DB)ybक्यूआर फ़ैक्टराइज़ेशन आधारित दृष्टिकोण का उपयोग करके और सिर्फ एक उप-भाग के बजाय सभी पंक्तियों का उपयोग करके? मुझे लगता है कि C और B के स्तंभों की संख्या बढ़ गई है, इसलिए ऑपरेशन को तेज़ करने के लिए मुझे कुछ पंक्तियों से छुटकारा पाना पड़ सकता है। ज़रूर, मैं सिस्टम का विवरण लिखूंगा और आपको इसे ई-मेल करूंगा। मैं वास्तव में सोचता हूं कि यह एक एप्लिकेशन-विशिष्ट योजना के साथ आना संभव है जो सबसे सामान्य मामले से बेहतर काम कर सकता है। धन्यवाद!
कॉस्टिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.