फोरट्रान 95 और लैपैक के साथ एक तिरछा-हर्मिटियन मैट्रिक्स का मैट्रिक्स विस्तार


11

मैं सिर्फ कुछ क्वांटम यांत्रिकी सिमुलेशन के लिए फोरट्रान 95 में टक रहा हूं। ईमानदारी से, मैं ओक्टेव द्वारा खराब कर दिया गया हूं, इसलिए मैंने मैट्रिक्स एक्सपेंटरशिप लिया है। यह देखते हुए (छोटा, ) skew -Hermitian मैट्रिक्स का आकार , इस समस्या को हल करने के लिए LAPACK का उपयोग करने का सबसे कारगर तरीका क्या है? मैं LAPACK95 आवरण का उपयोग नहीं कर रहा हूं, केवल LAPACK पर सीधे कॉल करें।n36n×n


2
क्या आपको मैट्रिक्स घातांक की आवश्यकता है या क्या आपको वेक्टर द्वारा गुणा घातीय मैट्रिक्स की आवश्यकता है?
पॉल

@Paul: क्षमा करें, यह पहले नहीं देखा था। नहीं, मुझे पूरी मैट्रिक्स की आवश्यकता है।
qubyte

कोई इस सवाल को कम क्यों करेगा? यदि आप कम करते हैं, तो कृपया टिप्पणियों में एक कारण छोड़ दें! शायद सवाल को इस तरह से बेहतर बनाया जा सकता है।
क्वेटी

हम DGPADM पर भरोसा करते हैं , लेकिन जैक पॉल्सन कहते हैं, एक बेहतर तरीका हो सकता है।
माइक डनलैवी

जवाबों:


16

तिरछा-हर्मिटियन मेट्रिक्स की मैट्रिक्स घातीय गणना करने के लिए सस्ते हैं:

मान लीजिए अपने तिरछा मैट्रिक्स Hermitian है, तो Hermitian है, और के माध्यम से zheevd और दोस्तों आप अपघटन प्राप्त कर सकते हैंआई मैं

मैं=यूΛयूएच,

जहां एकात्मक स्वदेशी मैट्रिक्स है और वास्तविक और विकर्ण है। फिर, तुच्छ,ΛयूΛ

=यू(-मैंΛ)यूएच

एक बार जब आपके पास और , तो गणना करना आसान होता हैΛयूΛ

exp()=exp(यू(-मैंΛ)यूएच)=यूexp(-मैंΛ)यूएच

पहले eigenvalues ​​को घातांक करके, को zcopy के माध्यम से सेट करना , प्रत्येक घातांक वाले eigenvalue के साथ प्रत्येक कॉलम पर zscal चलाकर का प्रदर्शन करना और अंत में अपना परिणाम सेट करनाबी : = बी exp ( - मैं Λ )बी: =यूबी: =बीexp(-मैंΛ)

exp(A):=BUH

zgemm के माध्यम से ।


धन्यवाद! मुझे वहाँ एक स्पष्ट चाल याद । आपने मुझे विशिष्ट LAPACK उप-रेखाओं पर रखा है जिनकी मुझे आवश्यकता है, इसलिए इसके लिए अतिरिक्त धन्यवाद। मैं इसे अभी तक सही नहीं मानूंगा (पहले इसका परीक्षण करना चाहता हूं)। मैं
qubyte

1
कोई जल्दी नहीं। मैंने वास्तव में इसे पहले लागू किया है, इसलिए मुझे बहुत विश्वास है :-)
जैक पॉल्सन

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

2
@JackPoulson: अच्छा खेला, सर। यह वह है जो मुझे एक प्रमुख को चुनने के लिए मिलता है जो काल्पनिक संख्याओं (आईजेनवल के अलावा) में विश्वास नहीं करता है।
जियोफ ऑक्सीबेरी

1
@JackPoulson: यह खूबसूरती से काम करता है। इसके लिए एक बार फिर धन्यवाद। खासकर zscal बिट। मेरे पास एक अन्य सबरूटीन में अधिकांश कोड थे, लेकिन यह कुछ ऐसा था जिसकी मैंने अनदेखी की थी।
दोपहर

5

चूंकि मैं अपने फोन पर हूं, मैं चीजों को आसानी से लिंक नहीं कर सकता, और बाद में लिंक जोड़ूंगा। आप शायद मैट्रिक्स एक्सपोनेंशियल की गणना के लिए "मैट्रिक्स के घातीय पुस्तकालय की गणना करने के लिए 19" ड्यूरेबल मैट्रिक्स की गणना के लिए पेपर, फोरट्रान लाइब्रेरी EXPOKIT, जित्स नाइसेन के पेपर को देखना चाहते हैं और मैट्रिक्स एक्सपोनेंशियल पर निक हिघम के हाल के कुछ पेपर। मैट्रिक्स घातीय और वेक्टर के उत्पाद की आवश्यकता अकेले मैट्रिक्स घातीय की तुलना में अधिक है, और यहाँ, क्रायलोव तरीके काफी सहायक हो सकते हैं। छोटे, घने मैट्रेस के लिए, जिनका आप वर्णन करते हैं, Padé तरीके बेहतर हो सकते हैं, लेकिन ODEs के संख्यात्मक एकीकरण के लिए घातीय विधियों के अंदर उपयोग करने पर मुझे Krylov विधियों के साथ बहुत सफलता मिली है।


धन्यवाद। मुझे 19 संदिग्ध तरीकों के बारे में पता है , और यह भी स्पष्ट है, लेकिन मैं जिन लोगों के साथ काम कर रहा हूं, उनमें से कुछ उद्योग में हैं, इसलिए मैं इसे कॉपीराइट कारणों से बचना चाहता हूं। जब से मैं पहले से ही इन पुस्तकालयों से जुड़ा हूं, मैं इसे LAPACK / BLAS के साथ लागू करने का इच्छुक हूं। एक बात हालांकि; मुझे स्वयं मैट्रिक्स घातांक की आवश्यकता है। मैं क्वांटम प्रक्रिया टोमोग्राफी के एक संस्करण पर काम कर रहा हूं, और प्रश्न की प्रक्रिया मैट्रिक्स द्वारा सन्निहित है। बाद में मैं इस मैट्रिक्स घातीय के साथ संयोजन में एक इंटीग्रेटर के साथ काम कर रहा हूं, जो कि जब यह वास्तव में दिलचस्प हो जाता है!
qubyte

1

जटिल eigensolution दृष्टिकोण गणितीय रूप से सही है, लेकिन यह आवश्यक से अधिक काम करता है। दुर्भाग्य से, मैं जिस सुधार के बारे में बताने जा रहा हूं वह LAPACK कॉल के साथ लागू नहीं किया जा सकता है।

आरसी वार्ड और एलजे ग्रे, एसीएम ट्रांस को देखें। गणित। मुलायम। 4, 278, (1978)। यह TOMS एल्गोरिथ्म 530 में उपलब्ध सॉफ़्टवेयर का वर्णन करता है, और जिसे आप नेटलिब से डाउनलोड कर सकते हैं। यह वर्णन करता है कि तिरछा सममित मैट्रिक्स को कैसे फैक्टर करेंएक्स

एक्स=यूडीयूटी

जहां वास्तविक ओर्थोगोनल है और D वास्तविक तिरछा-सममित और ब्लॉक विकर्ण है। विकर्ण सबब्लॉक या तो 2 × 2 या 1 × 1 हैं । क्योंकि यह ब्लॉक विकर्ण है, आप प्रत्येक सबब्लॉक को अलग से एक्सपेक्ट कर सकते हैं। 1 × 1 ब्लॉक शून्य, और कर रहे हैं exp ( 0 ) = 1 , तो उन तुच्छ हैं। 2 × 2 subblocks के साथ किया जाता हैयूडी2×21×11×1exp(0)=12×2

exp(0-टीटी0)=(क्योंकिटी-पापटीपापटीक्योंकिटी)

तब आपके द्वारा चाहा जाने वाला घातीय मैट्रिक्स द्वारा दिया जाता है

exp(एक्स)=यूexp(डी)यूटी

मैंने कई दशकों तक अपने क्वांटम केमिस्ट्री कोड में इस दृष्टिकोण का उपयोग किया है और मुझे कभी भी किसी भी सॉफ्टवेयर में कोई समस्या नहीं हुई है।


हेलो @ शेपर्ड, और कम्प्यूटेशनल एक्सचेंज एसई में आपका स्वागत है। क्या आप अपने दूसरे और तीसरे समीकरण को संपादित कर सकते हैं? उन्हें समझना थोड़ा कठिन है।
nicoguaro

0

अगर आपको जरूरत है कि वेक्टर द्वारा गुणा किया गया मैट्रिक्स घातीय है, तो यह फोरट्रान सबरूटीन आपके कुछ काम आ सकता है। यह गणना करता है:

()v

जहां v एक सदिश राशि है, और A एक नियमित हेर्मिटियन मैट्रिक्स है। यह EXPOKIT लाइब्रेरी से एक सबरूटीन है

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


यह फोरट्रान पुस्तकालयों के संदर्भ की तरह नहीं दिखता है।
बजे ज्योफ ऑक्सीबेरी

@GeoffOxberry: मैं इसे दुबारा लिखा fortran सबरूटीन्स शामिल करने के लिए
पॉल

@Paul: अच्छा कोई डर नहीं। मैं जो कर रहा हूं वह प्रक्रिया टोमोग्राफी पर एक सभी-मैट्रिक्स भिन्नता है। इसके अलावा तिरछा -हेरमेटियन!
qubyte

मैं सराहना करता हूं कि आपने अपने उत्तर को फिर से लिखा है, लेकिन एडिट ट्रेल के आधार पर, ऐसा लगता है कि आपने अपने उत्तर को पूरी तरह से बदल दिया है, मेरे कालानुक्रमिक उत्तर के तत्वों को ले लिया है, और लिंक जोड़ दिए हैं।
ज्योफ ऑक्सीबेरी

@GeoffOxberry: इसके विपरीत ... मेरे परिणाम आपके स्वतंत्र रूप से आए, लेकिन आपने पोस्ट करने से पहले मुझे अपना उत्तर फिर से लिखने का मौका मिला :)
पॉल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.