реклама на сайте
подробности

 
 
> Эрмитовые Матрицы, выразыть в параметрах собственный вектор соответствующий...
reginil_y
сообщение Apr 3 2012, 09:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 4-03-12
Пользователь №: 70 608




Привет уважаемые форумчане,

У меня есть такой вопрос: Есть некая комплексная матрица V размером (Nx3). Я создаю Эрмитовую матрицу G=V^H*V (размер NxN). H обозначает conjugate transpose. Мне нужно выразить собственный вектор матрицы G соответствующий максимальному собственному значению. Может кто знает книгу где выведено уже готовое выражение для соответствующей задачи или может это есть в какой нибудь статье на IEE.

с уважением
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
iiv
сообщение Apr 14 2012, 20:35
Сообщение #2


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(reginil_y @ Apr 3 2012, 15:42) *
Есть некая комплексная матрица V размером (Nx3). Я создаю Эрмитовую матрицу G=V^H*V (размер NxN). H обозначает conjugate transpose. Мне нужно выразить собственный вектор матрицы G соответствующий максимальному собственному значению.


собственные векторы этой матрицы будут равны сингулярным векторам Вашей исходной матрицы V. Один вызов lapack-acml с названием dgesvd полностью решит Вашу задачу. Лапак можно вытащить бесплатно и официально в исходниках, и не только для фортрана, но и С, хотя если точность и скорость работы Вас не волнует, а компилить-ставить лапак - лениво, будет проще поступить, как Вам уже Xenia ответила через 3х3 матрицу.
Go to the top of the page
 
+Quote Post
reginil_y
сообщение Apr 15 2012, 08:21
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 4-03-12
Пользователь №: 70 608



Цитата(iiv @ Apr 15 2012, 00:35) *
собственные векторы этой матрицы будут равны сингулярным векторам Вашей исходной матрицы V. Один вызов lapack-acml с названием dgesvd полностью решит Вашу задачу. Лапак можно вытащить бесплатно и официально в исходниках, и не только для фортрана, но и С, хотя если точность и скорость работы Вас не волнует, а компилить-ставить лапак - лениво, будет проще поступить, как Вам уже Xenia ответила через 3х3 матрицу.


Спасибо за отклик но мне наверно нужно будет решить эту задачу аналитически. Я кое что тут набросал на power point ... Есть ли возможность определить кокой из собственных значений будет максимальным?
Прикрепленные файлы
Прикрепленный файл  a1.ppt ( 190.4 килобайт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Apr 18 2012, 21:27
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (reginil_y @ Apr 15 2012, 12:21) *
мне наверно нужно будет решить эту задачу аналитически
На этом скорбном пути вас ожидает некоторое нетривиальное количество печальных открытий. Начнём с того, что нет аналитической формулы отыскания корней уравнения степени > 3. Хотя у вас матрица Q ранга 3 и даже если вы её строите шестимерной, её характеристическое (вековое) уравнение сводится к кубическому - трёхкратный корень, равный нулю. Кубическое уравнение можно решить аналитически, используя формулы Кардано. Выглядят они вполне научно, но несколько громоздко и заранее не скажешь, исходя из элементов V, который из трёх ненулевых корней самый большой и как (хотя понятно как = det(Q - lambda*I)) он зависит от элементов V.

Дальше неприятностей ещё больше. Для собственных векторов вообще неизвестна конечная аналитическая процедура их построения. Её просто нет. Следовательно, крутим ортогональными матрицами до посинения, т.е. до диагонализации исходной матрицы Q, или её трёхдиагонального двойника, полученного серией отражений Хаусхолдера. Но бесконечный процесс никогда не кончится и уж точно никакой аналитичности решению не придаст.

Мораль: не пытайтесь доказать что выражению (V*h)^H*(V*h), оно же h^H*Q*h доставляет максимум собственный вектор, соответствующий максимальному собственному значению Q. Всё украдено, т.е. доказано до нас лет за двести и ныне это известно каждому первокурснику.

Максимальное собственное число Q вам знать не нужно, оно в вычислениях не участвует (хотя полезно посмотреть, как себя ведёт спектр - что бы представлять, как хорошо разделены максимальное и следующее за ним собственные числа, и оценить шансы прямой итерации), поэтому проще всего сосредоточиться на вычислении собственного вектора, соответствующий максимальному по модулю собственному значению. Естественно, численно. Используя простой метод прямой итерации:

Выберем h случайным образом. Сосчитаем h' = Q*h и примем новый h = h'/||h'||, т.е. отнормируем итерацию на евклидову норму. Продолжаем до тех пор, пока соседние итерации не совпадут с заранее заданной вычислительной точностью. Это и есть искомый собственный вектор. Понятно, что чем дальше лямбда_1 от лямбда_2, тем лучше сходятся итерации, хотя, конечно, даже о квадратичной сходимости речи нет. Понятно, что это тоже бесконечный процесс, но так как он обрезается по достижении некоторого количества верных цифр, то его можно сосчитать.


Go to the top of the page
 
+Quote Post
reginil_y
сообщение Apr 29 2012, 11:02
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 4-03-12
Пользователь №: 70 608



AndrewN , Спасибо (запоздалое) за отклик. Пожалуй вы правы по поводу того что в параметрах невозможно сказать какое С.З. будет максимальным, по этому скорее всего прийдется вычислять численно.
А вот по поводу серьезных познаний первокурсников я очень сильно сомневаюсь. Первокурсник первокурснику рознь... и эта реальность не зависит от того когда была доказана та или инная теорема или утверждение

С уважением


Сообщение отредактировал reginil_y - Apr 29 2012, 11:25
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01412 секунд с 7
ELECTRONIX ©2004-2016