Цитата(reginil_y @ Apr 4 2012, 15:20)

Спасибо за ресурс,
Дело все в том что у меня есть два варианта. Или прийти к конкретному математическому выражению или же использовать программу и прийти к численному результату. Для численного я обычно использую Матлаб.
Не думаю, что это такой уж хороший ресурс. Там хороши только описания, но не сами тексты программ. Лучше всего, на мой взгляд, старый добрый Eispack (это проект такой "древний" матричных функций на FORTRANе), а еще лучше алгоритмы этих функций на ALGOLе из Справочника Уилкинсона-Райнша, которые послужили прототипом для проекта Eispack. Первоисточник мне нравится больше, поскольку код на ALGOLе очень легко переписывается на C, чего нельзя сказать про FORTRAN. А автоматический перевод с FORTRANа на C при помощи ретранслятора f2c вызывает у меня слёзы

, т.к. напрочь убивает понимание алгоритма.
Вас, я полагаю, вся эта кухня интересует много меньше, чем решение вашей конкретной задачи, поэтому я вам капать на мозги больше не стану

, а ограничусь исключительно практическим советом. Суть его с том, что комплексная эрмитова матрица после приведения ее к тридиагональной форме становиться действительной! Всегда! Т.е. и главная диагональ тридиагональной матрицы, и две ее симметричные соседки (нижняя и верхняя поддиагонали) не содержат мнимых членов. Доказательств этого удивительного явления не знаю, но знаю алгоритм (htridi), который это делает.
На FORTRANе тут:
http://www.netlib.org/eispack/htridi.fДурацкий автоматический перевод на C тут:
http://www.koders.com/cpp/fidD3E4B58F2614D...6B45.aspx?s=desЭтот алгоритм запихивает обе найденные диагонали в вектора d и e, а на месте исходной матрицы строит базис матрицы поворота (она понадобится для получения собственных векторов).
А дальше с комплексными числами можно распрощаться и вычислять собственные значения и вектора тридиагональной матрицы с учетом состовшегося поворота). Т.е. далее задача сводится к действительному случаю:
http://www.netlib.org/eispack/tql2.f Кстати, на каком языке пишете вы? Ведь если вы используете MatLab, то тот бы решил вашу задачу в лоб одной командой. Я бы могла с вами поделиться и своим кодом для решения таких задач, только он вряд ли вам подойдет из-за того, что я храню комплексные матрицы в особом виде - не в виде массива комплексных структур, а в виде двух отдельных массивов для реальных и мнимых ее составляющих. А кроме того активно пользуюсь ассеблерными функциями для ускорений вычислений (главным образом, для вычисления скалярного произведения пары векторов и гивенсовских вращений матрицы), из-за чего код становится непереносимым и трудно понимаемым для тех, кто его не писал.