एक सममित घने मैट्रिक्स (2000 * 2000
) के विपरीत के विकर्ण की गणना करने का सबसे अच्छा तरीका क्या है? वर्तमान में मैं पहले solve(x)
का उपयोग कर उलटा गणना और फिर निकालने विकर्ण (diag(y)
)। भले ही यह काम करता है लेकिन मैं सोच रहा हूं कि ऐसा करने का एक बेहतर तरीका है ताकि कोड तेजी से चलता है। मैंने chol2inv()
की कोशिश की लेकिन यह काम नहीं किया क्योंकि मेरा मैट्रिक्स सकारात्मक-निश्चित नहीं है।एक मैट्रिक्स के विपरीत के विकर्ण की गणना करने के लिए कुशल तरीका
अद्यतन: रुचि रखने वाले किसी भी व्यक्ति के लिए, मैं एक अनुकूलित गणित लाइब्रेरी इंटेल एमकेएल का उपयोग करके मैट्रिक्स उलटा गति को गति देने में सक्षम था। मेरी मशीन पर 2000 * 2000 मैट्रिक्स को उलटा करने में 3 सेकंड लगते हैं। इंटेल एमकेएल माइक्रोसॉफ्ट आर ओपन के साथ उपलब्ध है।
छोटी Google खोज में मैंने एल्गोरिदम और इस समस्या से संबंधित अन्य कार्यान्वयन के लिए कुछ लिंक पाया। क्या आपको स्पष्ट रूप से विकर्ण के प्रत्येक तत्व की आवश्यकता है या क्या आप इसे किसी अन्य गणना में उपयोग करना चाहते हैं? यदि आप इसे आगे की गणना में उपयोग करना चाहते हैं, तो यह ज्ञान निष्पादन को तेज करने के लिए महत्वपूर्ण होगा। – Vandenman
मैं अन्य गणनाओं में विकर्ण का उपयोग करता हूं। विशेष रूप से, मैं प्रत्येक तत्व को किसी अन्य वेक्टर में उलटा मैट्रिक्स के विकर्ण के प्रत्येक तत्व से विभाजित करता हूं और उन्हें जोड़ता हूं। – Katherine
आप कैसे जानते हैं कि उलटा विकर्ण के प्रत्येक तत्व शून्य नहीं है? क्या मैट्रिक्स में कुछ संपत्ति है जो इसकी गारंटी देती है? – dmuir