2009-03-06 10 views
19

उत्पन्न करने के लिए एक सरल एल्गोरिदम मैं सकारात्मक यादृच्छिक सेमी-निश्चित मैट्रिक्स उत्पन्न करना चाहता हूं। मैं सी, मैटलैब, जावा या किसी भी भाषा में एल्गोरिदम का एक एल्गोरिदम या अधिक अधिमानतः एक सरल कार्यान्वयन की तलाश में हूं।पॉजिटिव-सेमाइडफिन मैट्रिस

उत्तर

35
  1. यादृच्छिक मैट्रिक्स
  2. गुणा यह अपने आप स्थानांतरण
  3. आप एक सकारात्मक अर्द्ध निश्चित मैट्रिक्स प्राप्त किया है द्वारा उत्पन्न करते हैं।

उदाहरण कोड (अजगर):

from scipy import random, linalg 
matrixSize = 10 
A = random.rand(matrixSize,matrixSize) 
B = numpy.dot(A,A.transpose()) 
print 'random positive semi-define matrix for today is', B 
+1

क्या आप निश्चित हैं? विकिपीडिया के मुताबिक, आप एक मैट्रिक्स एल को अपने ट्रांसपोज़र द्वारा गुणा करके एक सकारात्मक निश्चित (अर्ध-निश्चित नहीं, लेकिन फिर भी) मैट्रिक्स का उत्पादन कर सकते हैं, जहां एल एक निम्न त्रिभुज मैट्रिक्स है जिसमें सभी विकर्ण तत्व होते हैं। यह सुझाव देता है कि एक यादृच्छिक मैट्रिक्स सामान्य रूप से काम नहीं करेगा। –

+2

विकिपीडिया से: "किसी भी मैट्रिक्स ए के लिए, मैट्रिक्स ए * ए सकारात्मक semidefinite है," लिंक: http://en.wikipedia.org/wiki/Positive-definite_matrix#Negative-definite.2C_semidefinite_and_indefinite_matrices – chillysapien

+1

आह, आप काफी हैं ठीक है, उस chillysapien के लिए धन्यवाद। मैंने क्वांटिफ़ायर को गलत समझा होगा। +1। –

8

आप अपने चुने हुए भाषा में एक यादृच्छिक मैट्रिक्स उत्पन्न कर सकते हैं, तो संपत्ति है कि एक मैट्रिक्स इसके पक्षांतरित से गुणा सकारात्मक अर्द्ध definte है का उपयोग करके, आप एक यादृच्छिक सकारात्मक अर्द्ध निश्चित matix

उत्पन्न कर सकते हैं मैटलैब में यह होगा के रूप में सरल रूप में

% Generate a random 3x3 matrix 
    A = rand(3,3) 
% Multiply by its tranpose 
    PosSemDef = A'*A 
15

आप करने की आवश्यकता है "यादृच्छिक" की अपनी परिभाषा पर स्पष्ट करें। परिणामस्वरूप मैट्रिक्स पर आपकी बाधाएं क्या हैं? क्या आप चाहते हैं कि गुणांक समान रूप से या सामान्य रूप से वितरित हों? क्या आप चाहते हैं कि eigenvalues ​​एक विशेष वितरण हो? (आदि)

तरीके सकारात्मक semidefinite मैट्रिक्स एम उत्पन्न करने के लिए, सहित की एक संख्या हैं:,

  1. को देखते हुए एक मनमाना मैट्रिक्स A गणना एम = एक टी एक
  2. (एक Cholesky decomposition निर्माण)
  3. गैर नकारात्मक विकर्ण प्रविष्टियों के साथ एक मनमाना विकर्ण मैट्रिक्स एस, और एक ही आकार के एक orthonormal मैट्रिक्स क्यू को देखते हुए, गणना एम = QSQ टी
(एक singular value decomposition निर्माण)

संख्यात्मक कारणों के लिए मैं संभवतः वांछित गुणों के साथ विकर्ण मैट्रिक्स उत्पन्न करके दूसरा दृष्टिकोण चुन सकता हूं, फिर क्यू को Householder reflections की रचना के रूप में उत्पन्न करना (एक यादृच्छिक वेक्टर बनाम, इकाई लंबाई तक स्केल, एच = आई - 2vv उत्पन्न करना टी); मुझे संदेह है कि आप के * एन का उपयोग करना चाहते हैं, जहां एन मैट्रिक्स एम का आकार है, और के 1.5-3 (मैं इस पर अनुमान लगा रहा हूं) के बीच एक संख्या है जो सुनिश्चित करता है कि इसमें स्वतंत्रता की पर्याप्त डिग्री है।

आप Givens rotations का उपयोग करके एक ऑर्थोनॉर्मल मैट्रिक्स क्यू भी उत्पन्न कर सकते हैं: 1 से एन के 2 अलग-अलग मान चुनें और अक्ष की उस जोड़ी के बारे में एक गिवेन्स रोटेशन उत्पन्न करें, जिसमें कोण को 0 से 2 * पीआई तक समान रूप से वितरित किया जाता है। तब इनमें से कश्मीर * N (पैराग्राफ़ के ऊपर के रूप में ही तर्क) लेने के लिए और उनकी संरचना प्र

संपादित पैदावार: मैं चाहते लगता (नहीं यकीन है कि) आप गुणांक है कि स्वतंत्र रूप से उत्पन्न कर रहे हैं और सामान्य रूप से वितरित किया है, तो संपूर्ण रूप से मैट्रिक्स "सामान्य रूप से वितरित" होगा (जो भी इसका मतलब है)। यह कम से कम वैक्टरों के लिए सच है। (एन स्वतंत्र रूप से उत्पन्न गाऊशियन यादृच्छिक चर, प्रत्येक घटक के लिए एक, आपको गॉसियन यादृच्छिक वेक्टर देता है) यह समान रूप से वितरित घटकों के लिए सच नहीं है।

+0

Cholesky अपघटन के आधार पर विधि केवल _dense_ matrices के लिए काम करता है। अनुमोदित, एक यादृच्छिक गृहस्थ मैट्रिक्स सामान्य रूप से घने भी होगा, इसलिए एसवीडी-आधारित विधि के लिए भी यही बात कहा जा सकता है। – ocramz

4

सकारात्मक semidefinite मैट्रिक्स पर प्राकृतिक वितरण Wishart distributions हैं।

2

ए '* एक एक सकारात्मक semidefite मैट्रिक्स iff दे देंगे और केवल यदि एक रैंक की कमी है।तो ऊपर वर्णित उत्तरों और विकिपीडिया से कॉपी की गई आम तौर पर सच नहीं होती है। एक सकारात्मक अर्धविराम मैट्रिक्स की गणना करने के लिए बस किसी भी आयताकार एम को एन मैट्रिक्स (एम < एन) द्वारा लें और इसे अपने ट्रांसपोज़ द्वारा गुणा करें। अर्थात। यदि बी एम मैट्रिक्स द्वारा एम है, एम < एन के साथ, तो बी '* बी एक सेमेडिफिन मैट्रिक्स है। आशा है कि ये आपकी मदद करेगा।

+1

यदि ए में पूर्ण रैंक है, एए 'अभी भी semidefinite सकारात्मक है। यदि ए में एम पंक्तियां और एन कॉलम हैं, तो एए 'में अधिकांश * एम पर रैंक * है। –

+0

ठीक है, आपका कथन सच नहीं है एलेक्स। एए के इग्नेवल हमेशा एए के समान होते हैं। तो यदि ए पूर्ण रैंक का स्क्वायर मैट्रिक्स है, तो एए और एए दोनों स्क्वायर सममित और पूर्ण रैंक दोनों हैं। सीधे शब्दों में कहें: यदि ए में पूर्ण रैंक है, तो एए 'semidefinite नहीं हो सकता है। यह सकारात्मक-निश्चित होना चाहिए। –

+1

एक सकारात्मक निश्चित मैट्रिक्स विशेष रूप से semidefinite सकारात्मक में है। –

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

  • कोई संबंधित समस्या नहीं^_^