2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 Квадратный корень из матрицы
Сообщение23.06.2013, 18:48 
Аватара пользователя


12/06/11
102
СПб
Здравствуйте.

Мне нужно извлечь квадратный корень из квадратной матрицы общего вида. Я делаю программную реализацию на С++ - т.е. если кто-нибудь знает какие-нибудь встроенные библиотечные функции IPP и TBB, для работы с распараллеливанием - дайте, пожалуйста, ссылку, это будет идеальный вариант. В документации по IPP смотрел, но не нашел, возможно, плохо искал, и я даже не представляю сколько существует всего руководств по IPP.

По сути самого вопроса: я понимаю, что существует алгоритм через собственные числа, с разложением типа $A=S\Lambda^{1/2}S^T$, но я не хотел бы его использовать; в книге Голуб, Дж., Ван Лоун Ч. Матричные вычисления.- М.: Мир, 1999. (с.493), я нашел алгоритм возведения матрицы в произвольную степень, который вычисляет $F=A^s$, но только для целых степеней. Можно ли этот алгоритм адаптировать для дробных степеней?
Вот алгоритм: пусть $ s $ - двоичное представление требуемой степени, $s = \sum\limits_{k=0}^t{\beta_k 2^k} $

Код:
Z = A, q=0
WHILE beta_q = 0
    Z=Z^2
    q=q+1
END

F=Z
FOR k=q+1:t
   Z=Z^2
   IF beta_k!=0
      F=FZ
   END
END


Или если есть какой-то иной способ, подскажите пожалуйста.
Спасибо.

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:11 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Imaginarium в сообщении #739659 писал(а):
Можно ли этот алгоритм адаптировать для дробных степеней?
Нет, это бинарный алгоритм, он никак не учитывает природу возводимого в степень объекта и работает даже в структурах, где квадратных корней нет.

Тут самый первый вопрос, который возникает --- каким образом выбирать корень из матрицы общего вида, если он неоднозначно определен.

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:15 
Заслуженный участник
Аватара пользователя


08/11/11
5940
Imaginarium в сообщении #739659 писал(а):
Мне нужно извлечь квадратный корень из квадратной матрицы общего вида.


А что такое квадратный корень из матрицы общего вида? Например, из
$$
\left(\begin{matrix}0&1\\0&0\end{matrix}\right)?
$$

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:30 
Аватара пользователя


12/06/11
102
СПб
Xaositect в сообщении #739668 писал(а):
Тут самый первый вопрос, который возникает --- каким образом выбирать корень из матрицы общего вида, если он неоднозначно определен.

Понимаю вопрос, у меня он тоже возник сразу же. Он особенно остро стоит, если собственные числа у обрабатываемой матрицы кратные. Но главное - просто пока научиться выделять этот самый корень, вопрос выбора конкретного будет решен.
g______d в сообщении #739670 писал(а):
А что такое квадратный корень из матрицы общего вида? Например, из
$$
\left(\begin{matrix}0&1\\0&0\end{matrix}\right)?
$$

На английской википедии пишут, что исходная матрица должна быть положительно определена - http://en.wikipedia.org/wiki/Square_root_of_a_matrix. У меня скорее всего будут именно такие на входе. Простите, я был неточен в вопросе.

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:35 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Imaginarium в сообщении #739674 писал(а):
На английской википедии пишут, что исходная матрица должна быть положительно определена.http://en.wikipedia.org/wiki/Square_root_of_a_matrix
Так Вам все-таки нужна матрица общего вида или положительно определенная? Для положительно определенных все хорошо - у них существует единственный положительно определенный корень. А в википедии и алгоритмы вычисления есть.

-- Вс июн 23, 2013 20:40:49 --

А так-то корни могут быть и у отрицательно определенных матриц, и у несимметричных. Например, $\left(\begin{matrix}0& 1\\-1&0\end{matrix}\right)^2 = \left(\begin{matrix}-1& 0\\0&-1\end{matrix}\right)$ и $\left(\begin{matrix}1& 1/2\\0&1\end{matrix}\right)^2 = \left(\begin{matrix}1& 1\\0&1\end{matrix}\right) $

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:42 
Аватара пользователя


12/06/11
102
СПб
Xaositect в сообщении #739678 писал(а):
Так Вам все-таки нужна матрица общего вида или положительно определенная? Для положительно определенных все хорошо - у них существует единственный положительно определенный корень. А в википедии и алгоритмы вычисления есть.

Беда в том, что я точно не могу ответить на этот вопрос. Как я написал выше, что скорее всего будут положительно определенные матрицы. Но я знаю, откуда они придут и я лично уверен, что они будут именно "общего вида"- никто не будет стараться сделать их положительно определенными. Так что вопрос надо решать в общем случае.

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:44 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Imaginarium в сообщении #739681 писал(а):
Беда в том, что я точно не могу ответить на этот вопрос. Как я написал выше, что скорее всего будут положительно определенные матрицы. Но я знаю, откуда они придут и я лично уверен, что они будут именно "общего вида"- никто не будет стараться сделать их положительно определенными. Так что вопрос надо решать в общем случае. Мне начинает казаться, что он либо неразрешим, либо некорректен.
А какова исходная задача-то? А то может проще взять готовую функцию для диагонализации (*syev в LAPACK) и сделать втупую?

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:57 
Аватара пользователя


12/06/11
102
СПб
Xaositect в сообщении #739683 писал(а):
А какова исходная задача-то? А то может проще взять готовую функцию для диагонализации (*syev в LAPACK) и сделать втупую?


нет, это точно не подойдет. Я пытался предложить разложение Холецкого, оно использовалось ранее в аналогичной задаче, но почему-то отказали. Вы сказали, что в википедии есть алгоритмы для вычисления корня даже несимметричных матриц- но я их там не увидел, не могли бы Вы уточнить, где именно увидели?

 Профиль  
                  
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:58 
Заслуженный участник
Аватара пользователя


08/11/11
5940
Xaositect в сообщении #739678 писал(а):
А так-то корни могут быть и у отрицательно определенных матриц, и у несимметричных. Например, $\left(\begin{matrix}0& 1\\-1&0\end{matrix}\right)^2 = \left(\begin{matrix}-1& 0\\0&-1\end{matrix}\right)$ и $\left(\begin{matrix}1& 1/2\\0&1\end{matrix}\right)^2 = \left(\begin{matrix}1& 1\\0&1\end{matrix}\right) $


Я специально подбирал так, чтобы из нее корня не было :)

-- 23.06.2013, 21:00 --

Т. е. не очень понятно, что хочется делать, если корня вообще не существует.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group