আমি সম্প্রতি স্কিউ-হার্মিটিয়ান ম্যাট্রিক্সের জন্য একই লাইনে একটি প্রশ্ন জিজ্ঞাসা করেছি । এই প্রশ্নের সাফল্যের দ্বারা অনুপ্রাণিত হয়ে এবং কয়েক ঘন্টা ধরে একটি দেয়ালের বিরুদ্ধে মাথা ঠেকানোর পরে, আমি প্রকৃত অসমমিতি ম্যাট্রিক্সের ম্যাট্রিক্স এক্সফোনশিয়ালটির দিকে তাকিয়ে আছি। ইগেনভ্যালুগুলি এবং আইজেনভেেক্টরগুলি সন্ধানের রুটটি বরং বিশৃঙ্খলাযুক্ত বলে মনে হচ্ছে এবং আমি ভীত হয়েছি যে আমি হারিয়ে ফেলেছি।
পটভূমি: কিছু সময় আগে আমি তাত্ত্বিক পদার্থবিজ্ঞানের এসইতে এই প্রশ্নটি জিজ্ঞাসা করেছি । ফলাফলটি আমাকে মাস্টার সমীকরণগুলিকে আসল অসমমিতিক ম্যাট্রিক্স হিসাবে অভিহিত করতে দেয়। সময়-স্বতন্ত্র ক্ষেত্রে, মাস্টার সমীকরণটি এই ম্যাট্রিক্সটিকে ঘটা করে সমাধান করা হয়। সময়-নির্ভর ক্ষেত্রে এটির সংহতকরণ প্রয়োজন। এই মুহূর্তে আমি কেবল সময়-স্বাধীনতার সাথে উদ্বিগ্ন।
বিভিন্ন সাবরুটিনের দিকে তাকিয়ে পরে আমি কল করা উচিত ( ? Gehrd , ? Orghr , ? Hseqr ...) এটা স্পষ্ট নয় যদি এটা সহজ হবে থেকে ম্যাট্রিক্স কাস্ট করার জন্য real*8
করতে complex*16
এবং এই রুটিন জটিল ডবল সংস্করণের সাথে এগিয়ে যাওয়া, বা সাথে আটকে থাকুন real*8
এবং আমার অ্যারের সংখ্যা দ্বিগুণ করার এবং পরে এগুলির একটি জটিল ম্যাট্রিক্স তৈরির হিট নিন।
সুতরাং, আমি কোন রুটিনগুলিতে কল করব (এবং কোন ক্রমে), এবং আমার আসল ডাবল সংস্করণ বা জটিল ডাবল সংস্করণগুলি ব্যবহার করা উচিত? নীচে বাস্তব ডাবল সংস্করণ দিয়ে এটি করার একটি প্রচেষ্টা রয়েছে। আমি এর আইভালভ্যালু এবং ইগেনভেক্টর খুঁজে পেতে আটকে গিয়েছি 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