2009-11-21 11 views
5

मैं पाइथन के लिए विल्सन के स्पेक्ट्रल घनत्व कारककरण एल्गोरिदम [1] के कार्यान्वयन को लिखने की कोशिश कर रहा हूं। एल्गोरिदम स्वचालित रूप से एक [QxQ] मैट्रिक्स फ़ंक्शन को इसके वर्ग रूट में कारक बनाता है (यह वर्णक्रमीय घनत्व matrices के लिए न्यूटन-रैफसन स्क्वायर-रूट खोजक का विस्तार है)।संख्यात्मक स्थिरता मुद्दों को डीबग करने के लिए रणनीतियां?

समस्या यह है कि मेरा कार्यान्वयन केवल आकार 45x45 और छोटे आकार के matrices के लिए अभिसरण करता है। तो 20 पुनरावृत्तियों के बाद, matrices के बीच summed squared अंतर लगभग 2.45e-13 है। हालांकि, अगर मैं आकार 46x46 का इनपुट करता हूं, तो यह 100 वें या फिर पुनरावृत्ति तक अभिसरण नहीं करता है। 47x47 या बड़े के लिए, matrices कभी अभिसरण नहीं; त्रुटि लगभग 100 पुनरावृत्तियों के लिए 100 और 1000 के बीच उतार-चढ़ाव करती है, और फिर बहुत तेज़ी से बढ़ने लगती है।

आप इस तरह कुछ डीबग करने की कोशिश करने के बारे में कैसे जाएंगे? ऐसा कोई विशिष्ट बिंदु प्रतीत नहीं होता है जिस पर यह पागल हो जाता है, और मेरे लिए मैट्रिस वास्तव में हाथ से गणना करने का प्रयास करने के लिए बहुत बड़े हैं। क्या किसी के पास इस तरह की विचित्र संख्यात्मक बग खोजने के लिए टिप्स/ट्यूटोरियल/हेरिस्टिक्स हैं?

मैंने पहले इस तरह कुछ भी साथ पेश किया है कभी नहीं, लेकिन मैं आशा करती हूं कि आप में से कुछ है ...

धन्यवाद, - दान

[1] जी टी विल्सन। "मैट्रिक स्पेक्ट्रल घनत्व का फैक्टरेशन"। सियाम जे एप्पल गणित (वॉल्यूम 23, संख्या 4, दिसंबर 1 9 72)

+0

आपका मतलब क्या है "केवल आकार 45x45 के मैट्रिक्स के लिए अभिसरण?" 45x45 से भी कम मैट्रिक्स भी असफल हो जाते हैं? – badp

+0

नहीं, क्षमा करें, पोस्ट संपादित करेंगे। यह आकार 45x45 और छोटे – Dan

उत्तर

3

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

अन्यथा, मुझे डर है कि मेरे पास कोई विचार नहीं है ... यदि आपको लगता है कि यह एक संख्यात्मक परिशुद्धता/फ़्लोटिंग पॉइंट राउंडिंग मुद्दा है, तो सबसे पहले आप कोशिश कर सकते हैं कि सभी dtypes float128 तक जाएं और देखें अगर कोई फर्क पड़ता है।

+0

के लिए सफलतापूर्वक अभिसरण करता है हां, मैं उन दोनों को आजमाउंगा। मैं _certain_ नहीं हूं यह एक संख्यात्मक परिशुद्धता मुद्दा है .. लेकिन मैट्रिक्स आयामता निश्चित रूप से अलगो में कहीं भी इनपुट के रूप में उपयोग नहीं की जाती है ... और तथ्य यह है कि यह छोटे matrices के लिए काम करता है यह सुझाव देता है _probably_ है। – Dan

2

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

+0

तो ... आपका मतलब साइपी में अंतराल के प्लग मैट्रिस का मतलब है? मुझे यह भी यकीन नहीं है कि मैं अंतराल गणित में लिनपैक को फिर से लिखने के बिना ऐसा कर सकता हूं, क्या मैं कर सकता हूं? – Dan

संबंधित मुद्दे