मैं पाइथन के लिए विल्सन के स्पेक्ट्रल घनत्व कारककरण एल्गोरिदम [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)
आपका मतलब क्या है "केवल आकार 45x45 के मैट्रिक्स के लिए अभिसरण?" 45x45 से भी कम मैट्रिक्स भी असफल हो जाते हैं? – badp
नहीं, क्षमा करें, पोस्ट संपादित करेंगे। यह आकार 45x45 और छोटे – Dan