Я просто заправлен в Фортран 95 для моделирования квантовой механики. Честно говоря, я был избалован Октавой, поэтому я воспринял возведение в матрицу как должное. Учитывая (малую, ) косоэрмитову матрицу размера n × n , каков наиболее эффективный способ использования LAPACK для решения этой проблемы? Я не использую оболочку LAPACK95, просто прямые звонки в LAPACK.
11
Ответы:
Матричные экспоненты косоэрмитовых матриц дешевы для вычисления:
Предположим, что - это ваша косоэрмитова матрица, тогда i A - эрмитова, и через zheevd и друзей вы можете получить разложениеA я
где - унитарная матрица собственных векторов, а Λ - вещественная и диагональная. Тогда, тривиально,U Λ
Если у вас есть и Λ , легко вычислитьU Λ
сначала возводя в степень собственные значения, устанавливая помощью zcopy , выполняя B : = B exp ( - i Λ ) , запуская zscal для каждого столбца с возведенным в степень собственным значением, и, наконец, устанавливая свой результат равнымB : = U B : = B exp( - я Λ )
через згемм .
источник
Поскольку я нахожусь на своем телефоне, я не могу связать вещи легко, и добавлю ссылки позже. Возможно, вам захочется взглянуть на статью «19 сомнительных способов вычисления экспоненциальной матрицы», библиотеку Фортрана EXPOKIT, статью Джитсе Нисена о методах Крылова для вычисления экспоненциальной матрицы и некоторые недавние статьи Ника Хайама об экспоненциальных показателях матрицы. Чаще всего требуется произведение экспоненциальной матрицы и вектора, а не только экспоненциальной матрицы, и здесь методы Крылова могут быть весьма полезны. Для более мелких плотных матриц, подобных тем, которые вы описываете, методы Паде могли бы быть лучше, но у меня был большой успех с методами Крылова, когда они использовались внутри экспоненциальных методов для численного интегрирования ОДУ.
источник
Комплексный подход eigensolution математически корректен, но он выполняет больше работы, чем необходимо. К сожалению, улучшенный подход, который я собираюсь описать, не может быть реализован с вызовами LAPACK.
Посмотрите на RC Ward и LJ Grey, ACM Trans. Математика Мягкий. 4, 278 (1978). Здесь описывается программное обеспечение, которое доступно в алгоритме 530 TOMS и которое можно загрузить с netlib. Здесь описывается, как разложить асимметричную матрицу какИкс
Вы хотите получить экспоненциальную матрицу
Я использовал этот подход в своих кодах квантовой химии в течение нескольких десятилетий, и у меня никогда не было проблем с любым программным обеспечением.
источник
Если все, что вам нужно, это экспоненциальная матрица, умноженная на вектор, то эта подпрограмма на Фортране может быть вам полезна . Он вычисляет:
где v - вектор, а A - регулярная эрмитова матрица. Это подпрограмма из библиотеки EXPOKIT
В противном случае вы можете рассмотреть эту подпрограмму, которая работает для любой общей сложной матрицы A.
источник