|
Вычисление собственных векторов |
|
|
|
 |
Ответов
|
Aug 1 2013, 11:47
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Задача получения собственных векторов к уже имеющимся собственным значениям возникает довольно часто. Особенно, когда нужны не все собвектора, а только для малого числа выбранных собзначений (обычно либо самых больших, либо самых маленьких). Опять же хочется сэкомить вычисления, рассчитывая на то, что определить избранные собвектора будет быстрее, чем их полный набор.
К сожалению, эти надежды оправдываются далеко не всегда. В большинстве случае бавает гораздо проще вычислить полный набор того и другого, используя алгортмы, вычисляющие собзначения вместе с их собвекторами, нежели прилаживать вектора к уже имеющимся собственным значениям.
Не знаю, как сейчас, но традиционно для последней цели использовались обратные итерации с последующей реортогонализацией полученного набора собвекторов. Процедура гадкая по части объема вычислений, т.к. матрицу векторов приходится очень много раз вращать. А в случае комплексных чисел и вовсе ужасная по числу операций.
Из собственного опыта (правда он у меня касается только действительных матриц) могу посоветовать повторить QR-алгоритм в варианте с собственными векторами. Однако ускорив его тем, что "подсказывать" этой процедуре готовые величины собзначений (в точности в том же порядке, в котором они были найдены и никаком другом!), а не находить их методом итераций. Тогда, несмотря на итерационную реализацию алгоритма, он сходится за один проход на каждое собственное значение. Об этом еще Парлетт писал в своей книжке "Симметричная проблема собственных значений". И, кажется, именно он это свойство впервые обнаружил.
Но это я пишу лишь с очень слабой надеждой, что реализация алгоритма вам интересна. Но если нужен просто чужой готовый код, чтоб свои мозги не утруждать, то тогда я пас.
|
|
|
|
|
Sep 16 2013, 01:30
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
QUOTE (mihalevski @ Aug 1 2013, 06:49)  Имеется матрица комплексных значений размером 4 на 4. Необходим код на Си решающий задачу определения собственных векторов Удалось? QUOTE (Xenia @ Aug 1 2013, 14:47)  Об этом еще Парлетт писал Ай да Бересфорд... А за пол-итерации можно?
|
|
|
|
|
Jun 26 2014, 07:22
|
Частый гость
 
Группа: Участник
Сообщений: 100
Регистрация: 20-05-10
Из: Omsk
Пользователь №: 57 391

|
Цитата(AndrewN @ Sep 16 2013, 08:30)  Удалось? Ай да Бересфорд... А за пол-итерации можно? Все удалось но только ж...пу отсидел. И еще выполнение операций в фомате float не позволяло пеленговать сигналы приходящие с малым угловым разрешением. И только переход на long double дал результат.
|
|
|
|
|
Jun 27 2014, 11:44
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(mihalevski @ Jun 26 2014, 11:22)  Все удалось но только ж...пу отсидел. И еще выполнение операций в фомате float не позволяло пеленговать сигналы приходящие с малым угловым разрешением. И только переход на long double дал результат. Оно и без программирования было ясно, что на float'е в матричной алгебре далеко не уедешь. Но процессор у вас прежний остался, TigerSHARC? Какой разрядности у него doublе и long double? Аппаратная арифметика или эмуляция? P.S. Давно (в 2008 году) у нас на форуме тема была, где Sharc-процессоры сильно ругали по поводу плавучки: http://electronix.ru/forum/index.php?showtopic=55332Насколько это справедливо к вашему TigerSHAC? Что-то сдинулсь с тех времен? Может быть вам на другой процессор перейти, где double64 аппаратно поддерживается?
|
|
|
|
Сообщений в этой теме
mihalevski Вычисление собственных векторов Aug 1 2013, 03:49    mihalevski Цитата(Xenia @ Jun 27 2014, 18:44) Оно и ... Jun 27 2014, 13:33   AndrewN QUOTE (mihalevski @ Jun 26 2014, 10:22) В... Aug 12 2014, 17:06 mihalevski Цитата(mihalevski @ Aug 1 2013, 10:49) Им... Aug 1 2013, 16:53 iiv Цитата(mihalevski @ Aug 1 2013, 09:49) По... Aug 1 2013, 17:01 mihalevski Цитата(iiv @ Aug 2 2013, 00:01) проще все... Aug 4 2013, 06:46  iiv Цитата(mihalevski @ Aug 4 2013, 12:46) Эт... Aug 4 2013, 19:57   Kluwert Цитата(iiv @ Aug 4 2013, 23:57) Пусть Ваш... Aug 11 2013, 19:23    iiv 2 Kluwert, не буду с Вами дискутировать, видя у Ва... Aug 13 2013, 08:26   mihalevski Цитата(iiv @ Aug 5 2013, 02:57) да, тогда... Aug 13 2013, 17:46    iiv Цитата(mihalevski @ Aug 13 2013, 23:46) д... Aug 14 2013, 00:41 Major ЦитатаИ только переход на long double дал результа... Jun 27 2014, 04:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|