Здравствуйте, Khimik, Вы писали:
K>У меня стоит такая задача: научиться решать ядерное уравнение Шредингера в приближении “жёсткий ротатор – гармонический осциллятор”. Есть набор силовых постоянных – вторых производных энергии молекулы по декартовым координатам (предполагается что первые производные нулевые – это минимум на поверхности потенциальной энергии). Это матрица размером 3N*3N, где N – размер молекулы. Матрица симметричная: Uij=Uji. Мне сказали что эту матрицу надо диагонализовать, и на диагонали будут частоты колебаний, соответствующие полосам в инфракрасном спектре молекулы. И я теряюсь, как конкретно её можно диагонализовать.
K>Методов диагонализации матрицы много; в данном случае нужно диагонализовать её так, чтобы на диагонали остались собственные значения матрицы, с учётом что матрица симметрична. Вроде для этого подходит метод Якоби, я уже делал его реализацию. Однако меня смущает то, что алгоритм Якоби итерационный, значит он относительно медленной. Разве нет для этой задачи нормального неитерационного метода?
А что вас смущает, в итерационных методах? Вам в realtime надо считать?
Для симметричной матрицы используют редукцию Хаусхолдера.
http://www.tdoc.ru/c/programming/programming-theory/matrix-vectors-values-page8.html
http://www.tdoc.ru/c/programming/programming-theory/matrix-vectors-values-page9.html
http://www.tdoc.ru/c/programming/programming-theory/matrix-vectors-values-page10.html
K> Есть набор силовых постоянных – вторых производных энергии молекулы по декартовым координатам
Лучше явно уравнение напишите с заложенными допущениями.
У вас просто две молекулы и вы силу взаимодействия в системе центра масс раскладываете по малым параметрам потенциала?
Жесткий ротатор это когда эта система болтается как жесткая гантеля. Тобишь есть куча симметрий и оно сводится к одномерному волновому уравнению.
Что такое размер молекулы N?