मैंने हाल ही में तिरछा-हर्मिटियन मेट्रिसेस के लिए समान लाइनों के साथ एक प्रश्न पूछा था । उस प्रश्न की सफलता से प्रेरित होकर, और कुछ घंटों के लिए एक दीवार के खिलाफ मेरे सिर को पीटने के बाद, मैं वास्तविक असममित मैट्रिक्स के मैट्रिक्स घातीय को देख रहा हूं। Eigenvalues और eigenvectors को खोजने के लिए मार्ग बल्कि जटिल लगता है, और मुझे डर है कि मैंने खो दिया है।
पृष्ठभूमि: कुछ समय पहले मैंने सैद्धांतिक भौतिकी एसई पर यह प्रश्न पूछा था । परिणाम मुझे वास्तविक विषमता के रूप में मास्टर समीकरणों को वाक्यांशित करने की अनुमति देता है। समय-स्वतंत्र मामले में, इस मैट्रिक्स को घातांक करके मास्टर समीकरण को हल किया जाता है। समय-निर्भर मामले में इसे एकीकरण की आवश्यकता होगी। मैं इस समय केवल समय-स्वतंत्रता से संबंधित हूं।
विभिन्न सबरूटीन्स को देख करने पर मुझे लगता है कि मैं बुला किया जाना चाहिए ( ? Gehrd , ? Orghr , ? Hseqr ...) यह स्पष्ट नहीं है अगर यह आसान हो जाएगा से मैट्रिक्स कास्ट करने के लिए real*8
करने के लिए complex*16
और इन दिनचर्या के जटिल डबल संस्करणों के साथ आगे बढ़ना, या मेरे साथ real*8
आने वाली संख्या को दोगुना करने और बाद में उनमें से एक जटिल मैट्रिक्स बनाने के हिट के साथ रहें ।
तो, मुझे किस रूटीन को कॉल करना चाहिए (और किस क्रम में), और क्या मुझे वास्तविक डबल संस्करणों या जटिल डबल संस्करणों का उपयोग करना चाहिए? नीचे वास्तविक दोहरे संस्करणों के साथ ऐसा करने का प्रयास किया गया है। मैं eigenvalues और eigenvectors का पता लगाने के लिए अटक गया हूँ L*t
।
function time_indep_master(s,L,t)
! s is the length of a side of L, which is square.
! L is a real*8, asymmetric square matrix.
! t is a real*8 value corresponding to time.
! This function (will) compute expm(L*t).
integer, intent(in) :: s
real*8, intent(in) :: L(s,s), t
real*8 :: tau(s-1), work(s), wr(s), wi(s), vl
real*8, dimension(s,s) :: time_indep_master, A, H, vr
integer :: info, m, ifaill(2*s), ifailr(2*s)
logical :: sel(s)
A = L*t
sel = .true.
call dgehrd(s,1,s,A,s,tau,work,s,info)
H = A
call dorghr(s,1,s,A,s,tau,work,s,info)
call dhseqr('e','v',s,1,s,H,s,wr,wi,A,s,work,s,info)
call dhsein('r','q','n',sel,H,s,wr,wi,vl,1,vr,s,2*s,m,work,ifaill,ifailr,info)
! Confused now...
end function