एक सकारात्मक निश्चित सममित (सहसंयोजक) मैट्रिक्स के व्युत्क्रम से निपटना?


27

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

संख्यात्मक स्थिरता के संदर्भ में सबसे अच्छा क्या है, कंप्यूटिंग या उपयोग के बारे में जाने का तरीका (चलो सामान्य रूप में द्विघात रूपों या मैट्रिक्स-वेक्टर गुणन के लिए कहें)? कुछ कारक जो काम आ सकते हैं?

जवाबों:


14

चोल्स्की फ़ैक्टराइज़ेशन , उल्टे के ऊपरी भाग के त्रिभुजाकार मैट्रिक्स साथ Cholesky जैसे कारक का नेतृत्व करता है ।C=RTRC1=SSTS=R1

व्यवहार में, उलटा तथ्य रखने के लिए सबसे अच्छा है। यदि विरल है, तो आमतौर पर निहित रखना बेहतर होता है , क्योंकि मैट्रिक्स-वेक्टर उत्पादों को दो त्रिकोणीय सिस्टम और को हल करके गणना की जा सकती है ।RSy=C1xRTz=xRy=z


25

जब आप एक सहसंयोजक मैट्रिक्स के साथ काम कर रहे हैं, तब सबसे अच्छा स्थिरता और गति के लिए सबसे अधिक समझ में आता है, जब से कोवरियन मैट्रिक्स सकारात्मक अर्ध-निश्चित सममित मैट्रिक्स होगा। चोल्स्की यहाँ एक प्राकृतिक है। परंतु...

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

C=ATA

जहाँ का स्तंभ हटा दिया गया है, तो यह देखें कि जब आप बनाते हैं , तो वह स्थिति संख्या को वर्ग करता है। इसलिए बेहतर है कि चोल्स्की फैक्टराइजेशन को स्पष्ट रूप से आंकने की बजाय के क्यूआर कारकों को बनाया जाए ।ACAATA

A=QR

क्यूंकि ऑर्थोगोनल है,

C=(QR)TQR=RTQTQR=RTIR=RTR

इस प्रकार हमें के रूप में सीधे क्यूआर फैक्टराइजेशन से चोल्स्की फैक्टर मिलता है । यदि क्यूआर फैक्टराइजेशन उपलब्ध है, तो यह तब भी बेहतर है क्योंकि आपको आवश्यकता नहीं है । एक के बाद से -less क्यूआर, गणना करने के लिए एक तेजी से बात है उत्पन्न कभी नहीं किया गया है। यह केवल हाउसहोल्डर परिवर्तनों का एक क्रम बन जाता है। (एक कॉलम pivoted, क्यूआर तार्किक रूप से और भी अधिक स्थिर होगा, जहां कुछ अतिरिक्त काम के लिए priots को चुनना होगा।)RTQQQQQ

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

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


5
और यदि आपको आधार पर द्विघात रूप का मूल्यांकन करने की आवश्यकता है , तो आप इस स्टैकिंग को , यानी, एक आगे प्रतिस्थापन और आदर्श लेने। C1x,C1x=x,(RTR)1x=RTx2
क्रिश्चियन क्लैसन

3

मैंने यह पहली बार हाल ही में किया, मैथ्स के सुझावों का उपयोग करते हुए।

एसवीडी की सिफारिश सबसे अधिक मुझे लगता है, लेकिन मैंने चोल्स्की की सादगी का विकल्प चुना था:

यदि मैट्रिक्स , तो मैं को Cholesky का उपयोग करते हुए त्रिकोणीय मैट्रिक्स विघटित करता हूं, जैसे कि । मैं तब बैकस्बस्ट्रेशन या फॉरवर्डूबस्ट्रेशन का उपयोग करता हूं (इस पर निर्भर करता है कि मैं एल को ऊपरी या निचला त्रिकोणीय चुनता हूं), को पलटने के लिए , जैसे कि मेरे पास । इस से, मैं गणना कर सकता हूं ।M=AAMLM=LLLL1M1=(LL)1=LL1


के साथ शुरू:

M=AA , जहां जाना जाता है और अंतर्निहित सममित है और सकारात्मक-निश्चित भी है।M

चोल्स्की कारक:

MLL , जहाँ वर्ग और गैर-एकवचन हैL

बैक प्रतिस्थापन:

LL1 , संभवतः को पलटने का सबसे तेज़ तरीका (मुझे उस पर उद्धरण न दें)L

गुणा:

M1=(LL)1=LL1

संकेतन का उपयोग किया जाता है: निचले सूचकांक पंक्तियाँ हैं, ऊपरी सूचकांक स्तंभ हैं और का स्थानान्तरण हैLL1


मेरा चोल्स्की एल्गोरिथ्म (शायद न्यूमेरिकल रेसिपी या विकिपीडिया से)

Lij=MijMiMjMiiMiMi

यह लगभग इन-प्लेस किया जा सकता है (आपको केवल विकर्ण तत्वों के लिए अस्थायी भंडारण, एक संचायक और कुछ पूर्णांक पुनरावृत्तियों की आवश्यकता होती है)।


मेरा बैक-प्रतिस्थापन एल्गोरिथ्म (न्यूमेरिकल रेसिपी से, उनके संस्करण की जाँच करें क्योंकि मैंने LaTeX मार्को के साथ एक गलती की है)

(L1)ij={1/Liiif i=j(Li(LT)j)/Liiotherwise

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


2

यदि आप जानते हैं कि मैट्रिक्स में एक व्युत्क्रम है (यानी, यदि यह वास्तव में सकारात्मक है) और यदि यह बहुत बड़ा नहीं है, तो चोल्स्की अपघटन मैट्रिक्स के व्युत्क्रम को चिह्नित करने के लिए एक उपयुक्त साधन देता है।

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