एक मैट्रिक्स सकारात्मक अर्ध-निश्चित है तो परीक्षण


12

मैं एक सूची है L मैं सकारात्मक अर्द्ध निश्चितता के लिए जांच करने की आवश्यकता है कि सममित मैट्रिक्स की (यानी उनके eigenvalues गैर नकारात्मक कर रहे हैं।)

उपरोक्त टिप्पणी का तात्पर्य यह है कि कोई भी संबंधित प्रतिजन की गणना करके यह जांच सकता है कि क्या वे गैर-नकारात्मक हैं (शायद गोल त्रुटियों का ध्यान रखना है।)

Eigenvalues ​​की गणना करना मेरे परिदृश्य में काफी महंगा है, लेकिन मैंने देखा है कि मैं जिस लाइब्रेरी का उपयोग कर रहा हूं, उसकी सकारात्मक निश्चितता के लिए काफी तेज़ परीक्षण है (यदि मैट्रिक्स की eigenvalues ​​सख्ती से सकारात्मक हैं।)

इसलिए विचार होगा, कि एक मैट्रिक्स दी BL , एक परीक्षण करता है, तो B+ϵI सकारात्मक निश्चित है। यदि यह नहीं है, तो B सकारात्मक अर्ध-निश्चित नहीं है, अन्यथा कोई यह सुनिश्चित करने के लिए के eigenvalues ​​की गणना कर सकता है Bकि यह वास्तव में सकारात्मक अर्ध-निश्चित है।

मेरा सवाल अब है:

क्या परीक्षण का एक अधिक प्रत्यक्ष और कुशल तरीका है कि क्या मैट्रिक्स सकारात्मक अर्ध-निश्चित है, बशर्ते कि सकारात्मक निश्चितता के लिए एक कुशल परीक्षण दिया जाए?


1
A


1
B+cIccc

हाँ, आप eigenvalues ​​को शिफ्ट कर सकते हैं और सबसे छोटे eigenvalue की गणना कर सकते हैं, लेकिन आपके पास जो कुछ भी है उसे स्वीकार करने के लिए (और यह सुनिश्चित करने के लिए कि आपके eigenvalues ​​की गणना कम से कम उस सहिष्णुता से की गई है!) के लिए समस्या है
ब्रायन Borchers

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

जवाबों:


23

"सकारात्मक अर्धचालक" या "सकारात्मक निश्चित" की आपकी कार्य परिभाषा क्या है? फ्लोटिंग पॉइंट अंकगणित में, आपको इसके लिए किसी प्रकार की सहिष्णुता निर्दिष्ट करनी होगी।

Aλ=1.01030λ=1.0

ϵ|λmax|λmax

दुर्भाग्य से, एक मैट्रिक्स के सभी eigenvalues ​​की गणना करने में समय लगता है। एक अन्य आमतौर पर इस्तेमाल किया दृष्टिकोण यह है कि अगर एक मैट्रिक्स सममित मैट्रिक्स है, अगर मैट्रिक्स में फ्लोटिंग पॉइंट अंकगणित में चोल्स्की कारक है। चोल्स्की फैक्टराइजेशन की गणना आइजनवेल्यूज की गणना की तुलना में तेजी से परिमाण का एक क्रम है। आप मैट्रिक्स में पहचान के एक छोटे से कई जोड़कर इसे सकारात्मक अर्धचालकता तक बढ़ा सकते हैं। फिर, स्केलिंग मुद्दे हैं। एक तेजी से दृष्टिकोण मैट्रिक्स के एक सममित स्केलिंग करना है ताकि विकर्ण तत्व 1.0 हो और चोल्स्की फैक्टराइजेशन की गणना करने से पहले विकर्ण में जोड़ दें। ϵ

आपको हालांकि इसके साथ सावधान रहना चाहिए, क्योंकि दृष्टिकोण के साथ कुछ समस्याएं हैं। उदाहरण के लिए, ऐसी परिस्थितियाँ हैं, जहाँ और इस अर्थ में निश्चित हैं कि उनके पास फ़्लोटिंग पॉइंट चोल्स्की फ़ैक्टिविज़ेशन है, लेकिन में चोल्स्की फ़ैक्टरीकरण नहीं है। इस प्रकार "फ्लोटिंग पॉइंट चोल्स्की फैक्टरेबल पॉजिटिव निश्चित मेट्रिसेस" का सेट उत्तल नहीं है! AB(A+B)/2


क्या आप उस अंतिम पैराग्राफ पर विस्तार से बता सकते हैं या स्रोत से लिंक पोस्ट कर सकते हैं? यह बहुत विचित्र है।
डैनियल शेपरो

2
इस स्केलिंग का एक क्लासिक संदर्भ ए वैन डर स्लुई है। मैट्रिसेस न्यूमेरिस मैथिक 14 (1): 14-23, 1969 की स्थिति संख्या और संतुलन। यह गोलूब और वैन लोन जैसी पाठ्यपुस्तकों में भी चर्चा की गई है। Code- अंतिम अनुच्छेद में बिट एक semidefinite प्रोग्रामिंग में लाइन खोज कोडिंग में कठिन जीत व्यक्तिगत अनुभव से है मैं स्थितियों में, जहां का सामना किया है और लेकिन LAPACK द्वारा Cholesky factorizations है, LAPACK के अनुसार चोल्स्की फ़ैक्टर नहीं है। जब आप लगभग विलक्षण होते हैं तो इस प्रकार की समस्याएं उत्पन्न होने लगती हैं। X + α Δ X X + 0.95 α Δ XXX+αΔXX+0.95αΔX
ब्रायन बॉर्कर्स

1
यह पता लगाना भी असामान्य नहीं है कि कुछ मेट्रिक्स को विस्तारित या चौगुनी परिशुद्धता में चोल्स्की फैक्टर किया जा सकता है, लेकिन नियमित डबल परिशुद्धता या एकल परिशुद्धता फ्लोटिंग पॉइंट अंकगणित में नहीं।
ब्रायन बॉर्कर्स

3
SDP (CSDP, SDPT3, SDPA) के लिए कई प्राइमल-डुअल इंटीरियर पॉइंट कोड हमेशा ऐसे मेट्रिसेस को लौटाते हैं जो सकारात्मक निश्चित होते हैं और चोल्स्की फैक्टरलाइज़ेशन होते हैं, जबकि एक अन्य लोकप्रिय सॉल्वर (SeDuMi) एक आइजनवेल्यू अपघटन का उपयोग करता है और ऐसे समाधान लौटाएगा, जिनमें बहुत छोटे नकारात्मक होते हैं eigenvalues।
ब्रायन बॉर्चर्स

3

5
उपयोगकर्ता नाम की तरह लगता है बहुत उत्तर के लेखक और कागजात के लेखक के बीच संबंध का खुलासा करता है। कागज में जो कुछ सम्‍मिलित है उस पर थोड़ा और जानकारी अच्छी होगी; हालांकि, वैसे भी, यह प्रश्न पत्रों की सूची के लिए एक बहुत ही रोचक और प्रासंगिक है!
एंटोन मेन्शोव

0

@Brian Borchers के सुझाव के लिए अजगर, चोल्स्की अपघटन का प्रयास करें:

from sksparse.cholmod import cholesky, CholmodNotPositiveDefiniteError
    # https://scikit-sparse.readthedocs.io/en/latest/cholmod.html

def testposdef( A, beta=1e-6, pr="" ):
    """ try cholesky( a scipy.sparse matrix  + beta I )

    Why A + beta I, beta say 1e-6 ?
    If A has tiny eigenvalues, 0 to within machine precision,
    about half of these "zeros" may be negative -- tough on solvers.
    Also the condition number improves to ~ rho(A) / beta.
    """
    try:
        solve = cholesky( A, beta=beta )  # A + beta I
        if pr:
            print( "%s + %g I is positive-definite" % (pr, beta ))
        return solve  # x = solve( b )
    except CholmodNotPositiveDefiniteError:
        if pr:
            print( "%s + %g I is not positive-definite" % (pr, beta ))
        return False
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.