2014 dxdy logo

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

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




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

Мне нужно извлечь квадратный корень из квадратной матрицы общего вида. Я делаю программную реализацию на С++ - т.е. если кто-нибудь знает какие-нибудь встроенные библиотечные функции 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 
Аватара пользователя
Imaginarium в сообщении #739659 писал(а):
Можно ли этот алгоритм адаптировать для дробных степеней?
Нет, это бинарный алгоритм, он никак не учитывает природу возводимого в степень объекта и работает даже в структурах, где квадратных корней нет.

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

 
 
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:15 
Аватара пользователя
Imaginarium в сообщении #739659 писал(а):
Мне нужно извлечь квадратный корень из квадратной матрицы общего вида.


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

 
 
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:30 
Аватара пользователя
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 
Аватара пользователя
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 
Аватара пользователя
Xaositect в сообщении #739678 писал(а):
Так Вам все-таки нужна матрица общего вида или положительно определенная? Для положительно определенных все хорошо - у них существует единственный положительно определенный корень. А в википедии и алгоритмы вычисления есть.

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

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

 
 
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:57 
Аватара пользователя
Xaositect в сообщении #739683 писал(а):
А какова исходная задача-то? А то может проще взять готовую функцию для диагонализации (*syev в LAPACK) и сделать втупую?


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

 
 
 
 Re: Квадратный корень из матрицы
Сообщение23.06.2013, 19:58 
Аватара пользователя
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