मान लें कि मेरे पास वर्ग matrixM
है। मान लें कि मैं invert मैट्रिक्स M
करना चाहता हूं।पैकेज के बिना फास्ट मैट्रिक्स इनवर्जन
मैं अपने मैट्रिक्स M
के सदस्यों के रूप में gmpy2 के भीतर mpq
कक्षा के अंशों का उपयोग करने की कोशिश कर रहा हूं। यदि आप इन भिन्नताओं से परिचित नहीं हैं, तो वे कार्यात्मक रूप से पाइथन के अंतर्निहित पैकेज fractions
के समान हैं। एकमात्र समस्या यह है कि, कोई पैकेज नहीं है जो मेरे मैट्रिक्स को तब तक उलटा कर देगा जब तक कि मैं उन्हें अंश रूप से बाहर नहीं ले जाता। मुझे अंश रूप में संख्याओं और उत्तरों की आवश्यकता है। तो मुझे M
उलटा करने के लिए अपना खुद का फ़ंक्शन लिखना होगा।
ज्ञात एल्गोरिदम हैं जिन्हें मैं प्रोग्राम कर सकता हूं, जैसे कि gaussian elimination। हालांकि, प्रदर्शन एक मुद्दा है, इसलिए मेरा प्रश्न निम्नानुसार है:
क्या कोई कम्प्यूटेशनल तेज़ एल्गोरिदम है जिसका उपयोग मैं मैट्रिक्स M
के विपरीत की गणना करने के लिए कर सकता हूं?
ऐसा करने के लिए कोई भी उचित तेज़ एल्गोरिदम एक एक्सटेंशन के रूप में _ में लागू किया जाएगा। एक अन्य दृष्टिकोण उन सभी को अपने जीसीडी, या सिर्फ उनके denominators के उत्पाद को पूर्णांक में बनाने के लिए गुणा करना होगा, और सी एक्सटेंशन के साथ पैकेज का उपयोग करना होगा और अनुकूलित करने के लिए और अधिक समय लगाया जाएगा। यह 'ओ (एन)' है, इसलिए जब तक एल्गोरिदम उलटा करने के लिए 'ओ (एन)' से बेहतर नहीं है, यह समय जटिलता को नुकसान नहीं पहुंचाएगा। – Artyer
क्या आपने sympy को देखा है? यह gmpy2 और मैट्रिक्स के साथ महान काम करता है: http://docs.sympy.org/dev/modules/matrices/matrices.html#linear-algebra – denfromufa
हाँ, पर sympy के उलट हाथ से गाऊसी उन्मूलन कोडिंग की तुलना में धीमी है। मैं बेंचमार्क के साथ गाऊशियन उन्मूलन के लिए अपना कोड साझा कर सकता हूं। –