matlab - Factoring matrices into elementary matrices -
क्या MATLAB, मेपल या मेथेमेटिका में कोई पैकेज है जो यह करता है?
< Div class = "post-text" itemprop = "text">
मुझे लगता है कि "प्राथमिक" मैट्रिक्स से आप केवल उनसे कहते हैं जो पंक्ति स्वैपिंग, पंक्ति गुणा और पंक्ति जोड़ के प्राथमिक परिचालन करते हैं।
< पी> आप जानना चाहते हैं कि यह पीएलयू अपघटन (फर्किकीकरण) के परिणाम का हिस्सा है। पीएलयू अपघटन से आने वाली गाऊसी गाऊसी उन्मूलन का परिणाम है, और पीएलयू अपघटन केवल छिपाने में जीई है और पीएलयू अपघटन के पी और एल जीई को पूरा करने के लिए लिया गया elemetry संचालन सांकेतिक शब्दों में बदलना। और सभी मेपल, मटलाब, और मेथेमेटिका में एक अच्छा पीएलयू अपघटन रूटीन है। तो आप प्राथमिक कारकों को प्राप्त कर सकते हैं।आइए अब मान लें कि हमें कोई भी पंक्ति स्वैप करने की आवश्यकता नहीं होगी। इसलिए मैट्रिक्स एम दिया जा सकता है हम कम त्रिभुज एल और ऊपरी त्रिकोणीय एम प्राप्त कर सकते हैं। मुख्य विकर्ण के नीचे स्थित एल की प्रविष्टियां वह मान हैं, जिसके साथ प्राथमिक पंक्ति के अतिरिक्त मैट्रिक्स का निर्माण होता है।
अंत में मेपल कोड यह दिखाने के लिए कि यह कैसे किया जा सकता है। वहाँ तीन प्रकार के प्रारंभिक मैट्रिक्स हैं जो वहाँ पैदा होते हैं। पहला सेट, तालिका टी 1 में, एमई को पंक्ति सेनान के रूप में प्राप्त करने के जीई के कदमों के कारण होते हैं और एमए के पीएलयू अपघटन के एल l1
का इस्तेमाल करने से आते हैं। यह कम त्रिकोण किया है। इसके बाद हम एम 1 की पीयूयू अपघटन के यू 1, यू का स्थानांतरित कर देंगे, ताकि एम के ऊपरी त्रिकोण से निपटने के लिए
प्राथमिक तालिका में मेटाइज का दूसरा सेट, टेबल टी 2 में, के कारण होता है यू 1 ^% टी (एम के पीएलयू अपघटन से यू की पारस्परिकता) से पंक्ति सोपानक रूप प्राप्त करने के जीई चरण। वे l2
में प्रविष्टियों का उपयोग करके यू 1 ^% टी के पीएलयू अपघटन के एल का निर्माण कर रहे हैं।
यह पीयूयू अपघटन के यू को छोड़कर यू 2 यू 1 ^% टी का यह एक विकर्ण मैट्रिक्स है (यदि कोई पंक्ति स्वैप नहीं किया गया है) इसलिए हम
u2
की प्रत्येक पंक्ति के लिए प्राथमिक पंक्ति स्केलिंग मैट्रिक्स का निर्माण करते हैं।
अंत में, हम सभी को सही क्रम में रख सकते हैं, और उन्हें एक साथ गुणा कर सकते हैं। ध्यान दें कि टी 2 मैट्रिक्स रिवर्स ऑर्डर में दिखाई देते हैं, ट्रांस्फ़ोज्ड, क्योंकि उन्हें यू 1 ^% टी बनाने के लिए एक साथ गुणा करना चाहिए। इसी तरह, T3 T1 और T2 सेट के बीच में दिखाई देता है, क्योंकि टी 3 निर्माण u2
।
बाद में संपादन के रूप में, यह एक मेपल प्रक्रिया के रूप में है अब यह क्रम स्वैप मैट्रिक्स को क्रमचय परिणाम से उत्पन्न करता है। और यह कुछ अनावश्यक कारक नहीं लौटाता है जो सिर्फ पहचान बनते हैं।
ध्यान दें कि यह सटीक माट्रिस के लिए है, फ्लोटिंग-पॉइंट मैट्रिक्स नहीं (जिसके लिए आपका माइलेज भिन्न हो सकता है, परिमाण से चुना जाता है और यह कैसे तुलना करता है)।
ElemDecomp: = proc (M :: मैट्रिक्स (स्क्वायर)) स्थानीय पी 1, यू 1, आई, जे, टी 1, टी 2, टी 3, पी 2 , मी, एन, LU1, LU2, P1, P2; लीनियर एल्जेब्रा का उपयोग करता है; (एम, एन): = आयाम (एम); p1, LU1: = LUDecomposition (एम, उत्पादन = [ ': - एनएजी']); 1 से एम -1 के लिए मैं 1 से जी के लिए काम करता हूं अगर एलयू 1 [i + 1, j] <; lt; & gt; 0 तब टी 1 [i * j]: = पहचान मैट्रिक्स (एम, कॉम्पैक्ट = फॉल्स); टी 1 [मैं j *] [i + 1, जे]: = LU1 [i + 1, जे]; अगर अंत; अंत करना; अंत करना; 1 से मी के लिए यदि पी 1 [i] और पी 1 [i]: = पहचान मैट्रिक्स (एम, कॉम्पैक्ट = फॉल्स); P1 [मैं] [p1 [i], मैं], P1 [मैं] [मैं, p1 [i]]: = 1,1; P1 [मैं] [p1 [i], p1 [i]], P1 [मैं] [मैं, मैं]: = 0,0; अगर अंत; अंत करना; U1: = मैट्रिक्स (LU1, आकार = त्रिकोणीय [ऊपरी]); p2, LU2: = LUDecomposition (U1 ^% टी, उत्पादन = [ ': - एनएजी']); 1 से एम -1 के लिए मैं 1 से जी के लिए काम करता हूं अगर एलयू 2 [आई + 1, जे] <; lt; & gt; 0 तब टी 2 [i * j]: = पहचान मैट्रिक्स (एम, कॉम्पैक्ट = फॉल्स); टी 2 [मैं j *] [i + 1, जे]: = LU2 [i + 1, जे]; अगर अंत; अंत करना; अंत करना; 1 से मी के लिए, अगर एलयू 2 [i, i] & lt; & gt; 1 तब टी 3 [i]: = पहचान मैट्रिक्स (एम, कॉम्पैक्ट = फॉल्स); T3 [मैं] [मैं, मैं]: = LU2 [मैं, मैं]; अगर अंत; अंत करना; 1 से मी के लिए, यदि पी 2 [आई] और p2 [i]: = पहचान मैट्रिक्स (एम, कॉम्पैक्ट = फॉल्स); P2 [मैं] [p2 [i], मैं], P2 [मैं] [मैं, p2 [i]]: = 1,1; P2 [मैं] [p2 [i], p2 [i]], P2 [मैं] [मैं, मैं]: = 0,0; अगर अंत; अंत करना; `अगर` (प्रकार (पी 1, तालिका), प्रविष्टियां (पी 1, ': - नोलिस्ट'), नल), सीक (सीक (`यदि` (असाइन (टी 1 [आई * जे]), टी 1 [आई * जे] NULL), जे = 1..i), I = 1..m-1), seq (`if` (सौंपा (टी 3 [i]), टी 3 [i], NULL), i = 1..min ( एम, एन)), सीईसी (एसईसी (`ईजी` (सौंपा गया (टी 2 [आई * जे]), टी 2 [आई * जे] ^% टी, एनयूएलएल), जे = आई..1, -1), आई = एम -1.1, -1), `अगर` (प्रकार (पी 2, तालिका), प्रविष्टियां (पी 2, ': - नोलिस्ट'), नल); अंत proc: ए: = रैखिक एल्जेब्रा: -रोमैट मैट्रिक्स (3, जनरेटर = 1..4); ElemDecomp (ए); रैखिक एल्जेब्रा: -नॉर्म (`.` (%) - ए);
Comments
Post a Comment