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

 
 
> Вычисление собственных векторов
mihalevski
сообщение Aug 1 2013, 03:49
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 100
Регистрация: 20-05-10
Из: Omsk
Пользователь №: 57 391



Имеется матрица комплексных значений размером 4 на 4.
Необходим код на Си решающий задачу определения собственных векторов указанной матрицы.
Дополнительные сведения:
1. Собственные числа матрицы уже определены с помощью алгоритма QR.
2. Система построена на сигнальном процессоре Аналог девайс DSP TigerSHARC.

Помогите ссылкой на удобный в реализации на процессоре алгоритм или готовый код программы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Aug 1 2013, 11:47
Сообщение #2


Гуру
******

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



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

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

Не знаю, как сейчас, но традиционно для последней цели использовались обратные итерации с последующей реортогонализацией полученного набора собвекторов. Процедура гадкая по части объема вычислений, т.к. матрицу векторов приходится очень много раз вращать. А в случае комплексных чисел и вовсе ужасная по числу операций.

Из собственного опыта (правда он у меня касается только действительных матриц) могу посоветовать повторить QR-алгоритм в варианте с собственными векторами. Однако ускорив его тем, что "подсказывать" этой процедуре готовые величины собзначений (в точности в том же порядке, в котором они были найдены и никаком другом!), а не находить их методом итераций. Тогда, несмотря на итерационную реализацию алгоритма, он сходится за один проход на каждое собственное значение. Об этом еще Парлетт писал в своей книжке "Симметричная проблема собственных значений". И, кажется, именно он это свойство впервые обнаружил.

Но это я пишу лишь с очень слабой надеждой, что реализация алгоритма вам интересна. Но если нужен просто чужой готовый код, чтоб свои мозги не утруждать, то тогда я пас.
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Sep 16 2013, 01:30
Сообщение #3


Местный
***

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



QUOTE (mihalevski @ Aug 1 2013, 06:49) *
Имеется матрица комплексных значений размером 4 на 4.
Необходим код на Си решающий задачу определения собственных векторов
Удалось?
QUOTE (Xenia @ Aug 1 2013, 14:47) *
Об этом еще Парлетт писал
Ай да Бересфорд... А за пол-итерации можно?

Go to the top of the page
 
+Quote Post
mihalevski
сообщение Jun 26 2014, 07:22
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 100
Регистрация: 20-05-10
Из: Omsk
Пользователь №: 57 391



Цитата(AndrewN @ Sep 16 2013, 08:30) *
Удалось?
Ай да Бересфорд... А за пол-итерации можно?

Все удалось но только ж...пу отсидел. И еще выполнение операций в фомате float не позволяло пеленговать сигналы приходящие с малым угловым разрешением. И только переход на long double дал результат.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 27 2014, 11:44
Сообщение #5


Гуру
******

Группа: Модератор 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 аппаратно поддерживается?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:31
Рейтинг@Mail.ru


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