सुन्नत में मैट्रिक्स उलटा की जटिलता


11

मैं विभेदक समीकरणों को हल कर रहा हूं जिनके लिए घने वर्ग मैट्रिक्स की आवश्यकता होती है। यह मैट्रिक्स उलटा मेरे अभिकलन समय का सबसे अधिक खपत करता है, इसलिए मैं सोच रहा था कि क्या मैं उपलब्ध सबसे तेज एल्गोरिथ्म का उपयोग कर रहा हूं।

मेरी वर्तमान पसंद numpy.linalg.inv है । अपनी संख्याओं से मैं देखता हूं कि यह जहां n पंक्तियों की संख्या है, इसलिए विधि गौसियन उन्मूलन लगती है।O(n3)

विकिपीडिया के अनुसार , तेज एल्गोरिदम उपलब्ध हैं। क्या कोई जानता है कि कोई पुस्तकालय है जो इन पर अमल करता है?

मुझे आश्चर्य है, इन तेज़ एल्गोरिदम का उपयोग करना क्यों खस्ता नहीं है?


आपको पहले अपने मेट्रिसेस का प्रदर्शन करने की आवश्यकता है। Scipy को देखो। आपकी मदद के लिए विरलता। इसमें कई उपकरण हैं जिनकी आपको आवश्यकता है।
टोबाल

@ मुझे यकीन नहीं है कि मैं अनुसरण करता हूं ... आप मैट्रिक्स का "प्रदर्शन" कैसे करेंगे? और वास्तव में कैसे scipy.sparseमदद करेगा ?
गोहोकीज

@GoHokies scipy सुन्न के लिए एक पूरक है। कुछ गणना करने से पहले घने / विरल मैट्रिस को अच्छी तरह से लागू किया जाना चाहिए, इससे आपकी गणना में सुधार होता है। कृपया इस docs.scipy.org/doc/scipy/reference/sparse.html को पढ़ें, यह मेरी खराब अंग्रेजी के साथ मुझसे बेहतर समझाता है।
तोबल

@ टोबाल प्रश्न विशेष रूप से घने मैट्रीस को संदर्भित करता है , इसलिए मैं यह नहीं देखता कि scipy.sparseयहां प्रासंगिक कैसे है?
क्रिश्चियन क्लैसन

2
@ टोबाल - मुझे लगता है कि मुझे अभी भी समझ नहीं आया है। "आपके मेट्रिसेस को प्रीफ़ॉर्म करने" के साथ वास्तव में आपका क्या मतलब है, और "कुछ गणनाएँ करने से पहले मैट्रिस को अच्छी तरह से लागू किया जाना चाहिए"? आपकी पिछली टिप्पणी के बारे में, निश्चित रूप से आप इस बात से सहमत होंगे कि विरल और सघन मैट्रिस के लिए जिन तकनीकों का उपयोग किया जा सकता है, वे बहुत अलग हैं।
वुल्फगैंग बैंगर्थ

जवाबों:


21

(यह टिप्पणियों के लिए बहुत लंबा हो रहा है ...)

n

  1. OnC1n3C2n2.xn

  2. जटिलता मानती है कि प्रत्येक (अंकगणितीय) ऑपरेशन में एक ही समय लगता है - लेकिन यह वास्तविक अभ्यास में सच से बहुत दूर है: एक ही संख्या के साथ संख्याओं का एक गुच्छा गुणा करना विभिन्न संख्याओं की समान मात्रा को गुणा करने की तुलना में बहुत तेज है । यह इस तथ्य के कारण है कि वर्तमान कंप्यूटिंग में प्रमुख बोतल-गर्दन डेटा को कैश में प्राप्त कर रहा है, न कि उस डेटा के वास्तविक अंकगणितीय संचालन के लिए। तो एक एल्गोरिथ्म जिसे पहली स्थिति (जिसे कैश-अवेयर कहा जाता है ) के लिए फिर से व्यवस्थित किया जा सकता है, यह एक से अधिक तेज़ी से होगा जहाँ यह संभव नहीं है। (उदाहरण के लिए, स्ट्रैसोन एल्गोरिथ्म का मामला है।)

इसके अलावा, संख्यात्मक स्थिरता प्रदर्शन के रूप में कम से कम महत्वपूर्ण है; और यहाँ, फिर से, मानक दृष्टिकोण आमतौर पर जीतता है।

O(n3)O(n2.x)


A1bAx=bnumpy.linalg.solvexAA1A


महान उत्तर, धन्यवाद सर, विशेष रूप से विवरण में शैतान को इंगित करने के लिए (बड़े ओ अंकन में स्थिरांक) जो सैद्धांतिक गति और व्यावहारिक गति के बीच एक बड़ा अंतर बनाता है।
गबोरस

मुझे लगता है कि "उलटा शायद ही कभी आवश्यक होता है" भाग पर अधिक जोर दिया जाना चाहिए। यदि उद्देश्य अंतर समीकरणों की एक प्रणाली को हल करना है, तो यह संभावना नहीं लगती है कि एक पूर्ण व्युत्क्रम की आवश्यकता है।
जारेड गोगुएन

@o_o खैर, यह मेरी पहली मूल टिप्पणी थी (जो मैंने उन सभी को एक उत्तर में समेकित करने के बाद हटा दी थी)। लेकिन मैंने सोचा, साइट (और बाद के पाठकों) के लाभ के लिए, एक उत्तर में प्रश्न में वास्तविक प्रश्न का उत्तर होना चाहिए (जो उचित और ऑन-टॉपिक दोनों है), भले ही इसके पीछे एक एक्सवाई समस्या हो। इसके अलावा, मैं यह भी नहीं कहना चाहता था ...
क्रिश्चियन क्लैसन

1
n

1
A

4

आपको शायद यह ध्यान रखना चाहिए कि, खतना स्रोत कोड के अंदर गहरे दफन (देखें https://github.com/numpy/numpy/blob/master/numpy/linalg/umath_linalg.c.src ) डॉग्रफ फ़ंक्शन को कॉल करने के लिए नियमित दिनचर्या के प्रयास आपके सिस्टम LAPACK पैकेज से, जो तब आपके मूल मैट्रिक्स का LU अपघटन करता है। यह नैतिक रूप से गाऊसी उन्मूलन के बराबर है, लेकिन उच्च-प्रदर्शन BLAS में तेजी से मैट्रिक्स गुणन एल्गोरिदम का उपयोग करके थोड़ी कम जटिलता के लिए तैयार किया जा सकता है।

यदि आप इस मार्ग का अनुसरण करते हैं, तो आपको चेतावनी दी जानी चाहिए कि पूरी लाइब्रेरी चेन को सिस्टम के बजाय नई लाइब्रेरी का उपयोग करने के लिए मजबूर करना जो आपके वितरण के साथ आया था, काफी जटिल है। आधुनिक कंप्यूटर सिस्टम पर एक विकल्प स्कैलपैक या पाइथन दुनिया में पेट्सकैप जैसे पैकेजों का उपयोग करके समानांतर तरीकों को देखना है। हालाँकि, ये आम तौर पर रैखिक बीजीय प्रणालियों के लिए पुनरावृत्त सॉल्वर के रूप में उपयोग किए जा रहे हैं, जो कि सीधे तरीकों पर लागू होते हैं और घने लोगों की तुलना में विशेष रूप से टारगेट सिस्टम में PETSc।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.