क्या कारण है कि LAPACK का उपयोग करता है


9

लैपैक के क्यूआर रूटीन स्टोर क्यू को हाउसहोल्डर रिफ्लेक्टर के रूप में रखते हैं। यह प्रतिबिंब वेक्टर को मापता हैv साथ में 1/v1, इसलिए परिणाम का पहला तत्व बन जाता है 1, इसलिए इसे संग्रहीत करने की आवश्यकता नहीं है। और यह एक अलग स्टोर करता हैτवेक्टर, जिसमें आवश्यक पैमाने कारक शामिल हैं। तो एक परावर्तक मैट्रिक्स इस तरह है:

H=IτvvT,

कहाँ पे vसामान्यीकृत नहीं है। जबकि, पाठ्यपुस्तकों में, परावर्तक मैट्रिक्स है

H=I2vvT,

कहाँ पे v सामान्यीकृत है।

LAPACK स्केल क्यों होता है v साथ में 1/v1, इसे सामान्य करने के बजाय?

जरूरत भंडारण (के बजाय) है τ, v1 जमा करना पड़ता है), और बाद में, आवेदन करना H तेजी से किया जा सकता है, क्योंकि इसके साथ गुणा करने की कोई आवश्यकता नहीं है τ (के साथ गुणा 2 पाठ्यपुस्तक संस्करण में, यदि सामान्य सामान्यीकरण के बजाय, अनुकूलित किया जा सकता है, v द्वारा बढ़ाया जाता है 2/v)।

(मेरे प्रश्न का कारण यह है कि मैं एक क्यूआर और एसवीडी दिनचर्या लिख ​​रहा हूं, और मैं इस निर्णय का कारण जानना चाहूंगा, कि मुझे इसका पालन करने की आवश्यकता है या नहीं)

जवाबों:


7

यह हाउसहोल्डर-क्यूआर का अवरुद्ध संस्करण है जो इस डिज़ाइन को चला रहा है। यदि आप गोलब और वैन लोन की पुस्तक (Ch 5.2 या तो) में देखते हैं, तो वे इस बारे में बात करते हैं कि एल्गोरिथ्म के k- पुनरावृत्तियों को कैसे अलग-अलग रिफ्लेक्टरों के रूप में रैंक-के रिफ्लेक्टर में जमा करके अवरुद्ध किया जा सकता है।I+WYT, जहां दोनों W तथा Y आकार के साथ "लम्बे-पतले" मैट्रीस हैं n×k। यह एल्गोरिथ्म अधिक काम करता है लेकिन व्यवहार में तेज है क्योंकि यह जेम () कॉल में समृद्ध है। दुर्भाग्य से यह प्रतिनिधित्व करने की आवश्यकता के कारण भंडारण में बेकार हैW तथा Y स्वतंत्र रूप से।

बाद के पेपर में (नीचे उद्धृत), वन लोन एक अधिक कुशल "सममित" डेटा संरचना का वर्णन करता है, जो फॉर्म का एक ब्लॉक परावर्तक है। I+YTYT। यहाँY अभी भी n×k, लेकिन बनाने के लिए फ्लॉप / भंडारण की आवश्यकता W शुरू करने से समाप्त कर दिया गया है T, एक छोटा k×kऊपरी त्रिकोणीय मैट्रिक्स। यद्यपि इसके द्वारा गुणा करने की आवश्यकता हैT अतिरिक्त काम की एक छोटी राशि का परिचय देता है, यह आमतौर पर शुद्ध लाभ है क्योंकि k<<n

LAPACK के भीतर, गैर-अवरुद्ध एल्गोरिथ्म वास्तव में सिर्फ एक सीमित है k1 ब्लॉक एल्गोरिथ्म का मामला, प्रतीकों की पसंद के लिए नीचे सभी तरह (जो हमें ले जाता है τ, थोड़ा सा 1×1 का संस्करण T त्रिकोण)।

प्रशस्ति पत्र: Schreiber, रॉबर्ट, और चार्ल्स वान ऋण। "हाउसहोल्डर परिवर्तनों के उत्पादों के लिए एक भंडारण-कुशल WY प्रतिनिधित्व।" वैज्ञानिक और सांख्यिकीय कम्प्यूटिंग पर SIAM जर्नल 10.1 (1989): 53-57।


जवाब के लिए धन्यवाद! मैं नहीं देखता, वहτ बस एक है 1×1आकार के T। उद्धृत पेपर में, एल्गोरिथम 5 में,Y है v, तथा T-2 है। तो यह टेक्स्टबुक संस्करण के रूप में समाप्त होता है, लैपैक संस्करण के रूप में नहीं। क्या मुझे कुछ याद है?
जार्ज

2

आपको स्टोर नहीं करना है τ, आप इसे वेक्टर के बाकी हिस्सों से फिर से गणना कर सकते हैं। (आप recompute कर सकते हैंv1 अन्य प्रविष्टियों से भी सामान्यीकृत संस्करण में, लेकिन यह स्पष्ट रूप से उन घटाव के कारण एक अस्थिर गणना है)।

दरअसल, आप के निचले-त्रिकोणीय हिस्से का पुन: उपयोग कर सकते हैं R स्टोर करने के लिए v2,...vn, ताकि कारक पूरी तरह से जगह में गणना की है। लैपैक इन एल्गोरिदम के इन-इन-प्लेस संस्करणों की बहुत परवाह करता है।


1

मेरा सुझाव Intel MKL https://software.intel.com/en-us/mkl-developer-reference-c-geqrf के लिए प्रलेखन पर आधारित है । ऐसा लगता है कि आउटपुट स्टोर R के विकर्ण के ऊपर और ऊपर मान निम्न हैं, क्यू के लिए केवल निचला त्रिकोण बचा है। स्केलिंग कारकों के लिए अतिरिक्त भंडारण का उपयोग करना स्वाभाविक लगता है।

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