2014 dxdy logo

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

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


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


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 12:37 
Заслуженный участник
Аватара пользователя


28/04/16
2395
Снаружи ускорителя
Добрый день.

Очередные глупые вопросы лезут в голову. У меня имеется симметричная действительная матрица квадратная $\mathcal{A}$ размера $N \times N$. Допустим, я хочу найти наилучшее её представление в виде внешнего произведения вектора $\mathbf{u}$ длины $N$, скажем в смысле
$\sum_{i,j = 1}^{N} \left( \underbrace{(\mathcal{A} - \mathbf{u} \mathbf{u}^\dagger)_{ij}}_{\mathcal{A}_{ij} - u_i u_j} \right)^2 \rightarrow \min$.
Есть ли какие-то библиотечные алгоритмы, которые позволяют такое делать?

Судя по поиску, если бы меня интересовало представление в виде внешнего произведения двух векторов, то ответом было бы SVD.

В этом же случае я только смог свести это всё к уравнению
$\mathcal{A} \mathbf{u} = \underbrace{\mathcal{U}}_{\mathbf{u} \mathbf{u}^\dagger} \mathbf{u}$
и для его решения я могу представить себе итерационные методы, типа
$\mathcal{A} \mathbf{u}_{n+1} = \mathcal{U}_{n} \mathbf{u}_{n}$
где нижний индекс нумерует итерации.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 13:10 
Заслуженный участник
Аватара пользователя


04/09/14
5255
ФТИ им. Иоффе СПб
madschumacher в сообщении #1441418 писал(а):
$\sum_{i,j = 1}^{N} \left( \underbrace{(\mathcal{A} - \mathbf{u} \mathbf{u}^\dagger)_{ij}}_{\mathcal{A}_{ij} - u_i u_j} \right)^2 \rightarrow \min$.
А-ля метод мин. квадратов - не? Дифференцируем по $u_i,$ приравниваем производную к нулю, получаем $N$ уравнений (линейных). Только Вам, небось, нужно, что бы "мало" отличались не матрицы, а их собственные значения, а в таком случае эта норма не катит.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 13:13 
Заслуженный участник
Аватара пользователя


28/04/16
2395
Снаружи ускорителя
amon в сообщении #1441424 писал(а):
А-ля метод мин. квадратов - не?

Так там и получается нелинейное уравнение в итоге:
madschumacher в сообщении #1441418 писал(а):
$\mathcal{A} \mathbf{u} = \underbrace{\mathcal{U}}_{\mathbf{u} \mathbf{u}^\dagger} \mathbf{u}$

amon в сообщении #1441424 писал(а):
Только Вам, небось, нужно, что бы "мало" отличались не матрицы, а их собственные значения, а в таком случае эта норма не катит.

Да нет, вроде именно что матрицы, я пытаюсь очистить изображение особого сорта от артефактов...

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 13:30 
Заслуженный участник
Аватара пользователя


04/09/14
5255
ФТИ им. Иоффе СПб
madschumacher в сообщении #1441425 писал(а):
Так там и получается нелинейное уравнение в итоге
Да, чего-то я нынче совсем не в форме.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 14:00 
Заслуженный участник
Аватара пользователя


06/10/08
6422
SVD от симметрической матрицы будет симметричным и называется оно обычно Eigenvalue decomposition ($A = UDU^T$, $U$ ортогональная). Потом берем вектор соотв. максимальному сз и делаем $u \lambda u^T = (\sqrt{\lambda}u)(\sqrt{\lambda}u)^T$. LAPACK умеет.

Что, собственно, получается и у Вас: $Au = uu^T u = u \|u\|^2$, т.е. $u$-собственный вектор.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 14:08 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
По-моему, Вам нужен собственный вектор, соответствующий максимальному собственному значению. Любой алгоритм, начиная со степенного метода, которым можно даже вручную побаловаться...

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 17:31 
Заслуженный участник


27/04/09
28128
madschumacher
Кстати outer product обычно не переводится как «внешнее произведение», внешнее чаще соответствует exterior product. :-)

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 18:45 
Заслуженный участник
Аватара пользователя


28/04/16
2395
Снаружи ускорителя
Спасибо большое, Xaositect, Евгений Машеров, действительно работает. Для моих целей оказалось, что даже можно несколько собственных векторов брать. :D

arseniiv, спасибо, буду иметь в виду. А как тогда outer product будет по-русски корректно называться?

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 19:13 
Заслуженный участник


27/04/09
28128
А вот тут я поискал и не нашёл (или начисто забыл). Можно попытаться говорить «тензорное произведение», в конце концов это частный случай именно его ($u\otimes v^\flat$, где $v^\flat$ — опускание (с помощью скалярного произведения) индекса у вектора, превращающее его в 1-форму — в индексной записи это всё будет $u^i v_j$, ну и кстати как вы наверно в курсе, в бра-кет-обозначениях то же самое есть $\lvert u\rangle\langle v\rvert$, а такие произведения «без упрощения» (когда не умножается непосредственно бра на кет) как раз тензорные). В присутствии скалярного произведения все тензорные произведения двух множителей, «использующие» два вектора — кроме первого это $u\otimes v, u^\flat\otimes v, u^\flat\otimes v^\flat$ и ещё четыре с обратным порядком — будут приводимыми одно к другому). Может, кто-то и более точное название слышал.

-- Вт фев 25, 2020 21:14:04 --

А, ну и да, вы же говорите о приближении оператора оператором ранга 1, и можно говорить «оператор ранга 1». :D

-- Вт фев 25, 2020 21:19:04 --

(Подобным образом вообще говорят о приближении произвольных тензоров тензорами ранга $m$ — только не того ранга, который связан с валентностью, а того, который равен наименьшему числу слагаемых вида $v_1\otimes\ldots\otimes v_n$, которые надо взять, чтобы в сумме получить такой тензор; для линейных операторов это совпадёт с их рангом.)

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 23:25 


11/08/18
363
arseniiv в сообщении #1441508 писал(а):
А вот тут я поискал и не нашёл (или начисто забыл). Можно попытаться говорить «тензорное произведение», в конце концов это частный случай именно его ($u\otimes v^\flat$, где $v^\flat$ — опускание (с помощью скалярного произведения) индекса у вектора, превращающее его в 1-форму — в индексной записи это всё будет $u^i v_j$, ну и кстати как вы наверно в курсе, в бра-кет-обозначениях то же самое есть $\lvert u\rangle\langle v\rvert$, а такие произведения «без упрощения» (когда не умножается непосредственно бра на кет) как раз тензорные). В присутствии скалярного произведения все тензорные произведения двух множителей, «использующие» два вектора — кроме первого это $u\otimes v, u^\flat\otimes v, u^\flat\otimes v^\flat$ и ещё четыре с обратным порядком — будут приводимыми одно к другому). Может, кто-то и более точное название слышал.

Все тензорные алгоритмы все равно через SVD или задачи на собственные значения решаются, там по сути ничего не меняется.

2 TC: А матрица у Вас теоретическая, или практическая, и какие размеры ее Вас интересуют? От этого сильно метод решения может измениться. Так, например, для на попробовать с матрицей порядка $5 \times 5$, проще всего эту матрицу несколько раз в квадрад возвести и первый столбец взять, а в случае с $5 * 10^6 \times 5* 10^6 $ Ланцоша или Давидсона использовать, а между - может и лапаком.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 23:29 
Заслуженный участник
Аватара пользователя


28/04/16
2395
Снаружи ускорителя
ilghiz в сообщении #1441550 писал(а):
А матрица у Вас теоретическая, или практическая, и какие размеры ее Вас интересуют?

Порядка $10^3 \times 10^3$. Через Numpy все замечательно работает.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 23:41 
Заслуженный участник


27/04/09
28128
ilghiz в сообщении #1441550 писал(а):
Все тензорные алгоритмы все равно через SVD или задачи на собственные значения решаются, там по сути ничего не меняется.
Я вообще ничего не говорил о том как решать задачу, так как это действительно выше уже сказали, так что не понятно, к чему возражать. :-) (Хотя кстати говоря SVD и eigendecomposition не определены для тензоров произвольного ранга вот прям так.) Отвечал лишь на вопрос, как называть выражения типа $\lvert u\rangle\langle v\rvert$.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 23:42 


11/08/18
363
Numpy - это фактически lapack. Для таких размерностей итерировать может быть дороже, чем в лоб через $QTQ^T, ~~Q^TQ=I$, и $T$ - трехдиагональная и далее QR алгоритмом, как собственно в лапаке и нумпи реализовано.

 Профиль  
                  
 
 Re: Симметричная матрица -> внешнее произведение
Сообщение25.02.2020, 23:56 
Заслуженный участник
Аватара пользователя


28/04/16
2395
Снаружи ускорителя
ilghiz в сообщении #1441555 писал(а):
Для таких размерностей итерировать может быть дороже, чем в лоб через $QTQ^T, ~~Q^TQ=I$, и $T$ - трехдиагональная и далее QR

Собственно, на решение уходит меньше минуты вычислительного времени (поиск собственных векторов - - не самая затратная операция кода). Так что оптимизировать код смысла мне пока нет.

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

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



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

Сейчас этот форум просматривают: VanD


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

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