2017-06-02 7 views
7

मान लें कि मेरे पास वर्ग matrixM है। मान लें कि मैं invert मैट्रिक्स M करना चाहता हूं।पैकेज के बिना फास्ट मैट्रिक्स इनवर्जन

मैं अपने मैट्रिक्स M के सदस्यों के रूप में gmpy2 के भीतर mpq कक्षा के अंशों का उपयोग करने की कोशिश कर रहा हूं। यदि आप इन भिन्नताओं से परिचित नहीं हैं, तो वे कार्यात्मक रूप से पाइथन के अंतर्निहित पैकेज fractions के समान हैं। एकमात्र समस्या यह है कि, कोई पैकेज नहीं है जो मेरे मैट्रिक्स को तब तक उलटा कर देगा जब तक कि मैं उन्हें अंश रूप से बाहर नहीं ले जाता। मुझे अंश रूप में संख्याओं और उत्तरों की आवश्यकता है। तो मुझे M उलटा करने के लिए अपना खुद का फ़ंक्शन लिखना होगा।

ज्ञात एल्गोरिदम हैं जिन्हें मैं प्रोग्राम कर सकता हूं, जैसे कि gaussian elimination। हालांकि, प्रदर्शन एक मुद्दा है, इसलिए मेरा प्रश्न निम्नानुसार है:

क्या कोई कम्प्यूटेशनल तेज़ एल्गोरिदम है जिसका उपयोग मैं मैट्रिक्स M के विपरीत की गणना करने के लिए कर सकता हूं?

+1

ऐसा करने के लिए कोई भी उचित तेज़ एल्गोरिदम एक एक्सटेंशन के रूप में _ में लागू किया जाएगा। एक अन्य दृष्टिकोण उन सभी को अपने जीसीडी, या सिर्फ उनके denominators के उत्पाद को पूर्णांक में बनाने के लिए गुणा करना होगा, और सी एक्सटेंशन के साथ पैकेज का उपयोग करना होगा और अनुकूलित करने के लिए और अधिक समय लगाया जाएगा। यह 'ओ (एन)' है, इसलिए जब तक एल्गोरिदम उलटा करने के लिए 'ओ (एन)' से बेहतर नहीं है, यह समय जटिलता को नुकसान नहीं पहुंचाएगा। – Artyer

+3

क्या आपने sympy को देखा है? यह gmpy2 और मैट्रिक्स के साथ महान काम करता है: http://docs.sympy.org/dev/modules/matrices/matrices.html#linear-algebra – denfromufa

+0

हाँ, पर sympy के उलट हाथ से गाऊसी उन्मूलन कोडिंग की तुलना में धीमी है। मैं बेंचमार्क के साथ गाऊशियन उन्मूलन के लिए अपना कोड साझा कर सकता हूं। –

उत्तर

4

क्या आप इन matrices के बारे में कुछ और जानते हैं? उदाहरण के लिए, positive definite मैट्रिस के लिए, Cholesky अपघटन आपको मानक गॉस-जॉर्डन विधि से तेज़ी से उलटा करने की अनुमति देता है।

सामान्य मैट्रिक्स इनवर्जन के लिए, Strassen algorithm आपको गॉस-जॉर्डन की तुलना में तेज़ परिणाम देगा लेकिन चोलस्की से धीमा होगा।

ऐसा लगता है कि आप सटीक परिणाम चाहते हैं, लेकिन यदि आप अनुमानित इनवर्जन के साथ ठीक हैं, तो ऐसे एल्गोरिदम हैं जो पहले उल्लिखित एल्गोरिदम की तुलना में विपरीत तेज़ी से अनुमान लगाते हैं।

हालांकि, आप खुद से पूछना चाहेंगे कि क्या आपको अपने विशिष्ट एप्लिकेशन के लिए संपूर्ण मैट्रिक्स उलटा होना चाहिए। आप जो कर रहे हैं उसके आधार पर यह एक और मैट्रिक्स संपत्ति का उपयोग करने के लिए तेज़ हो सकता है। मैट्रिक्स उलटा गणना करने के अपने अनुभव में एक अनावश्यक कदम है।

मुझे उम्मीद है कि इससे मदद मिलती है!

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