घने बीमार वातानुकूलित मैट्रिक्स का विकर्ण


10

मैं कुछ घने, बीमार हालत वाले मैट्रिसेस को विकर्ण करने की कोशिश कर रहा हूं। मशीन परिशुद्धता में, परिणाम गलत हैं (नकारात्मक आईजेनवेल्स लौटाते हैं, eigenvectors के पास अपेक्षित समरूपता नहीं है)। मैंने मैथमेटिका के ईगेंससिस्टम [] कार्य पर स्विच किया ताकि मनमानी परिशुद्धता का लाभ उठाया जा सके, लेकिन गणना बेहद धीमी है। मैं किसी भी समाधान के लिए खुला हूं। क्या ऐसे पैकेज / एल्गोरिदम हैं जो अच्छी तरह से वातानुकूलित समस्याओं के अनुकूल हैं? मैं पूर्वशर्त पर विशेषज्ञ नहीं हूं, इसलिए मुझे यकीन नहीं है कि यह कितना मदद कर सकता है। अन्यथा, मैं सोच सकता हूं कि सभी समानांतर रूप से मनमाने ढंग से सटीक eigenvalue सॉल्वर हैं, लेकिन मैं गणितज्ञ, MATLAB और C ++ से परे किसी भी चीज से परिचित नहीं हूं।

समस्या पर कुछ पृष्ठभूमि देने के लिए, मैट्रिसेस बड़े हैं, लेकिन विशाल नहीं (4096x4096 से 32768x32768 सबसे अधिक)। वे वास्तविक, सममित हैं, और eigenvalues ​​0 और 1 (अनन्य) के बीच बंधे हुए हैं, कई eigenvalues ​​0 के बहुत करीब हैं और 1 के करीब कोई भी नहीं है। मैट्रिक्स अनिवार्य रूप से एक कन्वेंशन ऑपरेटर है। मुझे अपने सभी मैट्रिसेस को तिरस्कृत करने की आवश्यकता नहीं है, लेकिन जितना बड़ा मैं जा सकता हूं, उतना बेहतर होगा। मेरे पास कई प्रोसेसर के साथ कंप्यूटिंग क्लस्टर तक पहुंच है और कंप्यूटिंग क्षमताओं को वितरित किया है।

धन्यवाद


2
आप अपनी वास्तविक सममित मैट्रिक्स को विकर्ण करने के लिए किस दिनचर्या का उपयोग कर रहे हैं? और किस अर्थ में इजेनवेल्यू अपघटन गलत है?
जैक पॉल्सन

अर्नोल्ड के जवाब से संबंधित एक विचार यहां दिया गया है: अपने एसपीडी मैट्रिक्स का एक चोल्स्की अपघटन करें, और फिर चोल्स्की त्रिकोण के एकवचन मूल्यों को ढूंढें जो आपने अभी प्राप्त किया है, संभवतः सटीकता को संरक्षित करने के लिए एक dqd- प्रकार एल्गोरिथ्म का उपयोग कर।
जेएम

1
@ जेएम: एक समान रूप से विलक्षण सकारात्मक निश्चित मैट्रिक्स के चोल्स्की डीकम्पोजिटॉन का गठन सामान्य विधि के साथ संख्यात्मक रूप से अस्थिर होता है, क्योंकि एक नकारात्मक पाइवेट्स का सामना करता है। (उदाहरण के लिए, मतलब का छल (ए) आमतौर पर विफल रहता है।) एक को उन्हें शून्य पर सेट करना होगा और कारकों की इसी पंक्तियों को नष्ट करना होगा। ऐसा करने से संख्यात्मक रूप से शून्य स्थान प्राप्त करने का एक तरीका मिल जाता है।
अर्नोल्ड न्यूमैयर

@ अर्नोल्ड, यदि स्मृति कार्य करती है, तो चोल्स्की के अनुकूलन हैं जो उन मामलों के लिए सममितीय धुरी का उपयोग करते हैं जहां मैट्रिक्स सकारात्मक अर्ध- अनिश्चित (या लगभग ऐसा है)। शायद उन का इस्तेमाल किया जा सकता है ...
जेएम

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

जवाबों:


7

वर्णक्रमीय विघटन के स्थान पर SVD की गणना करें। परिणाम सटीक अंकगणित में समान हैं, क्योंकि आपका मैट्रिक्स सममित पॉज़िटिव निश्चित है, लेकिन परिमित सटीक अंकगणित में, आपको छोटे सटीकता के साथ बहुत अधिक सटीकता के साथ eigenvalues ​​मिलेंगे।

संपादित करें: डिमेल और काहन देखें, बिडिओगल मेट्रिसेस के सटीक एकवचन मान, सियाम जे। विज्ञान। स्टेट। कंप्यूटर। 11 (1990), 873-912।
ftp://netlib2.cs.utk.edu/lapack/lawnspdf/lawn03.pdf

EDIT2; ध्यान दें कि मशीन सटीकता का उपयोग करने वाले आदर्श समय के मुकाबले कोई भी विधि eigenvalues ​​को हल करने में सक्षम नहीं होगी, क्योंकि एक ulp द्वारा एकल प्रविष्टि को बदलने से पहले से ही इस द्वारा एक छोटे eigenvalue को बदल दिया जा सकता है। इस प्रकार बहुत छोटे लोगों के स्थान पर शून्य eigenvalues ​​प्राप्त करना उचित है, और कोई भी विधि (उच्च परिशुद्धता के साथ काम करने को छोड़कर) संबंधित eigenvectors को विच्छेदित नहीं करेगा, लेकिन सामान्य संख्यात्मक रिक्त स्थान के लिए बस एक आधार लौटाता है।


[0,BT;B,0]

2
@JackPoulson: मुद्दा यह है कि द्विआधारी रूप छोटे एकवचन मूल्यों को बेहतर तरीके से निर्धारित करता है। संबद्ध सममित त्रिदिगोनल रूप में विकर्ण पर शून्य होते हैं, जो द्विभुज में कमी को विकर्ण से संरक्षित करते हैं, लेकिन त्रिगुणात्मक पर लागू क्यूआर द्वारा नहीं।
अर्नोल्ड न्यूमैयर

1
संदर्भ? जैकोबी की विधि को अत्यधिक सटीक (यद्यपि धीमा) कहा जाता है।
जैक पॉल्सन

@JackPoulson: कोशिश करो और देखो। डेमेल और काहन, बीडीओगल मेट्रिसेस का सटीक एकवचन मान, 202.38.126.65/oldmirrors/ftp.netlib.org/lapack/lawnspdf/…
अर्नोल्ड नेउमर

[0,BT;B,0]

1

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

@JackPoulson, मैंने जैकोबी के आपके द्वारा संदर्भित विधि पर कागज को स्किम किया, और यह आशाजनक लग रहा है। क्या आप या कोई भी जैगोबाई सिस्टम खोजने के लिए जैकोबी की विधि को लागू करने के लिए एक अच्छा तरीका सुझा सकते हैं? मैं अनुमान लगा रहा हूं कि अगर मैंने इसे (MATLAB में) कोडित कर दिया, तो यह बहुत धीमी गति से होगा।


मैंने इसका परीक्षण नहीं किया है, लेकिन यहां MATLAB कार्यान्वयन है: group.google.com/forum/?fromgroups@msg/sci.math.num-analysis/…
जैक पॉल्सन

ध्यान दें कि मशीन सटीकता का उपयोग करने वाले आदर्श समय के मुकाबले कोई भी विधि eigenvalues ​​को हल करने में सक्षम नहीं होगी, क्योंकि एक ulp द्वारा एकल प्रविष्टि को बदलने से पहले से ही इस द्वारा एक छोटे eigenvalue को बदल दिया जा सकता है। इस प्रकार बहुत छोटे लोगों के स्थान पर शून्य eigenvalues ​​प्राप्त करना उचित है, और कोई भी विधि (उच्च परिशुद्धता के साथ काम करने को छोड़कर) संबंधित eigenvectors को विच्छेदित नहीं करेगा, लेकिन सामान्य संख्यात्मक रिक्त स्थान के लिए बस एक आधार लौटाता है। क्या आप के लिए eigenvalues ​​की आवश्यकता है?
अर्नोल्ड न्यूमैयर

@AnnoldNeumaier: मैंने MATLAB में कुछ परीक्षणों को [०,१] की श्रेणी में eigenvalues ​​के साथ चलाया, एक स्वदेशी के साथ मैन्युअल रूप से ६.१e-१६, और ऑक्टेव के SVV रूटीन (dgesvd पर आधारित), जो बीडीऑनल और कमी का उपयोग करता है तब क्यूआर) इन मूल्यों को ऑक्टेव के ईग की तुलना में अधिक सटीक रूप से उठाता है। लिंक किए गए जैकोबी कोड का उपयोग करने में बहुत धीमा प्रतीत होता है, यहां तक ​​कि मामूली आकार के मैट्रीस पर भी।
जैक पॉल्सन

@JackPoulson: हाँ। लेकिन Leigh कई बहुत छोटे eigenvalues ​​के बारे में शिकायत करने लगता है , और उनके eigenvectors शायद ही कभी उन डिज़ाइन किए जाएंगे, लेकिन स्वतंत्र रूप से मिश्रण करेंगे, चाहे कोई भी विधि का उपयोग किया जाए। और सकारात्मक बहुत छोटे सकारात्मक मूल्य (1e-16 से छोटे) निश्चित रूप से शून्य पाए जाएंगे।
अर्नोल्ड न्यूमैयर

@AnnoldNeumaier सही है कि मैं कई बहुत छोटे eigenvalues ​​ढूंढ रहा हूं, जो मैं अनुमान लगा रहा हूं कि यह समस्या को बढ़ा देता है। मुझे एहसास नहीं था (हालांकि पूर्वव्यापी में यह स्पष्ट है) कि 1e-16 से कम eigenvalues ​​फ्लोटिंग पॉइंट में शून्य होगा। मुझे लगता है कि संख्या को संग्रहीत किया जा सकता है, लेकिन बड़ी संख्या में जोड़ते समय गोलाई त्रुटि होती है। Eigenvectors मुझे बताएं कि क्या एक निश्चित समस्या हल करने योग्य है। आइजनवेक्टर समस्या के विघटन को सॉल्व और नॉन-सॉल्व करने योग्य भागों में अनुमति देता है। अगर मैं मौलिक रूप से सटीक रूप से सीमित हूं, तो क्या आप तेजी से समाधान के लिए किसी भी पैकेज की सिफारिश कर सकते हैं?
लेह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.