Właśnie wciągam się w fortran 95 dla niektórych symulacji mechaniki kwantowej. Szczerze mówiąc, zostałem zepsuty przez Octave, więc wziąłem potęgowanie macierzy za pewnik. Biorąc pod uwagę (małe, ) pochylenie -Hermycka macierz o rozmiarze n × n , jaki jest najbardziej efektywny sposób użycia LAPACK do rozwiązania tego problemu? Nie używam otoki LAPACK95, tylko bezpośrednie połączenia z LAPACK.
11
Odpowiedzi:
Wykładnicze macierze macierzy skośno-hermitowskich są tanie do obliczenia:
przez zgemm .
źródło
Ponieważ korzystam z telefonu, nie mogę łatwo łączyć rzeczy i dodam je później. Prawdopodobnie zechcesz zajrzeć do artykułu „19 wątpliwych sposobów obliczania wykładniczej macierzy”, biblioteki Fortran EXPOKIT, pracy Jitse Niesen na temat metod obliczania wykładniczej macierzy Kryłowa oraz niektórych ostatnich prac Nicka Highama na temat wykładniczych macierzy. Bardziej powszechne jest wymaganie iloczynu macierzy wykładniczej i wektora niż samej macierzy wykładniczej, a tutaj metody Kryłowa mogą być bardzo pomocne. W przypadku mniejszych, gęstych matryc, takich jak te, które opisujesz, metody Padé mogą być lepsze, ale odniosłem spory sukces z metodami Kryłowa, gdy są stosowane w wykładniczych metodach integracji liczbowej ODE.
źródło
Złożone podejście do eigensolution jest poprawne matematycznie, ale działa więcej niż jest to konieczne. Niestety ulepszonego podejścia, które zamierzam opisać, nie można wdrożyć w przypadku wywołań LAPACK.
Macierz wykładnicza, którą chcesz, jest następnie podawana przez
Stosowałem to podejście w moich kodach chemii kwantowej od kilku dziesięcioleci i nigdy nie miałem żadnych problemów z żadnym oprogramowaniem.
źródło
Jeśli wszystko, czego potrzebujesz, to macierz wykładnicza pomnożona przez wektor, to ten fortranowy podprogram może ci się przydać . Oblicza:
gdzie v jest wektorem, a A jest regularną macierzą pustelnika. Jest to podprogram z biblioteki EXPOKIT
W przeciwnym razie warto rozważyć ten podprogram, który działa dla dowolnej ogólnej złożonej macierzy A.
źródło