2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 18:23 
Заслуженный участник
Аватара пользователя


28/04/16
2346
Внутри ускорителя
Добрый день,

прошу прощения за беспокойство. Я тут пытаюсь в wxMaxima 15.08.2 посчитать унитарное ортогональное преобразование симметричной матрицы $\mathcal{A}$ при матрицей $\mathcal{R}$:
$\mathcal{A}' = \mathcal{R} \mathcal{A} \mathcal{R}^\dagger$.

(конкретика)

Конкретно, $\mathcal{R}$ -- это матрица вращения трёхмерной системы координат, выраженная через углы Эйлера.


Чтобы получить единичную матрицу из $\mathcal{R} \mathcal{R}^\dagger$ нужно сделать следующее:
Код:
R1(phi):= matrix([cos(phi), -sin(phi), 0],
                 [sin(phi),  cos(phi), 0],
                 [  0     ,    0,      1]);

R1(phi).transpose(R1(phi));

получая на выходе
$\[\begin{pmatrix}{{\mathrm{sin}\left( \phi\right) }^{2}}+{{\mathrm{cos}\left( \phi\right) }^{2}} & 0 & 0\cr 0 & {{\mathrm{sin}\left( \phi\right) }^{2}}+{{\mathrm{cos}\left( \phi\right) }^{2}} & 0\cr 0 & 0 & 1\end{pmatrix}\]$

По аналогии я считаю нужный мне результат как:
Код:
A: matrix(
[Axx,Axy,Axz],
[Axy,Ayy,Ayz],
[Axz,Ayz,Azz]);

R(phi,theta,chi):= matrix([ cos(phi)*cos(chi)*cos(theta) - sin(phi)*sin(chi),  sin(phi)*cos(chi)*cos(theta) + cos(phi)*sin(chi), -sin(theta)*cos(chi)],
                           [-cos(phi)*sin(chi)*cos(theta) - sin(phi)*cos(chi), -sin(phi)*sin(chi)*cos(theta) - cos(phi)*cos(chi),  sin(theta)*sin(chi)],
                           [     sin(theta)*cos(phi)                         ,     sin(theta)*cos(phi)                          ,  cos(theta)         ]);

(R(phi,theta,chi).A).transpose(R(phi,theta,chi));

К сожалению эта кроказябра сложна для понимания, поэтому я интегрирую эту штуку по переменным матрицы $\mathcal{R}$ и получаю физически малоосмысленный результат.

(конкретика)

Код:
J(theta):= sin(theta);
Q(phi,theta,chi):= (R(phi,theta,chi).A).transpose(R(phi,theta,chi));
integrate( integrate( integrate(Q(phi,theta,chi)*J(theta), phi, 0, 2*%pi ) , theta, 0, %pi )  , chi, 0 , 2*%pi    );

в результате чего получается ерунда (в нижнем диагональном элементе):
$\begin{pmatrix}\frac{2\cdot \left( 4\cdot {{\pi }^{2}}\cdot \mathit{Axx}+4\cdot {{\pi }^{2}}\cdot \mathit{Ayy}+4\cdot {{\pi }^{2}}\cdot \mathit{Azz}\right) }{3} & 0 & 0\cr 0 & \frac{8\cdot {{\pi }^{2}}\cdot \mathit{Axx}+8\cdot {{\pi }^{2}}\cdot \mathit{Ayy}+8\cdot {{\pi }^{2}}\cdot \mathit{Azz}}{3} & 0\cr 0 & 0 & 2\cdot \pi \cdot \left( \frac{4\cdot \pi \cdot \mathit{Azz}}{3}+\frac{2\cdot \left( 2\cdot \pi \cdot \mathit{Axx}+4\cdot \pi \cdot \mathit{Axy}+2\cdot \pi \cdot \mathit{Ayy}\right) }{3}\right) \end{pmatrix}$
чисто из требований симметрии.

Вопрос: правильно ли я делаю тройное перемножение матриц (это единственная причина, которую я смог придумать)?

 Профиль  
                  
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 18:52 
Супермодератор
Аватара пользователя


09/05/12
24051
Кронштадт
madschumacher в сообщении #1476741 писал(а):
это единственная причина, которую я смог придумать
А в виде матрицы $\mathcal{R}$ вы уверены? Попробуйте ее саму получить как результат умножения трех матриц поворота, возможно, где-нибудь какой-нибудь минус лишний вылез...

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


28/04/16
2346
Внутри ускорителя
Pphantom в сообщении #1476745 писал(а):
А в виде матрицы $\mathcal{R}$ вы уверены?

Я её из Rev.Mod.Phys. стырил.
Pphantom в сообщении #1476745 писал(а):
Попробуйте ее саму получить как результат умножения трех матриц поворота, возможно, где-нибудь какой-нибудь минус лишний вылез...


Да я и так тоже пробовал.
Код:
R1(phi):= matrix([cos(phi), -sin(phi), 0],
                 [sin(phi),  cos(phi), 0],
                 [  0     ,    0,      1]);

R2(theta):= matrix([1, 0, 0],
                   [0, cos(theta), -sin(theta)],
                   [0, sin(theta),  cos(theta)]);

R3(chi) :=matrix([cos(chi), -sin(chi), 0],
                 [sin(chi),  cos(chi), 0],
                 [  0     ,    0,      1]);

R(phi,theta,chi) = ((R3(chi)).R2(theta)).(R1(phi));

A: matrix(
[Axx,Axy,Axz],
[Axy,Ayy,Ayz],
[Axz,Ayz,Azz]
);

J(theta):= sin(theta);

Q(phi,theta,chi):= (R(phi,theta,chi).A).transpose(R(phi,theta,chi));

integrate( integrate( integrate(Q(phi,theta,chi)*J(theta), phi, 0, 2*%pi ) , theta, 0, %pi )  , chi, 0 , 2*%pi    );

Та же лажа:
$\[\begin{pmatrix}\frac{2\cdot \left( 4\cdot {{\pi }^{2}}\cdot \mathit{Axx}+4\cdot {{\pi }^{2}}\cdot \mathit{Ayy}+4\cdot {{\pi }^{2}}\cdot \mathit{Azz}\right) }{3} & 0 & 0\cr 0 & \frac{8\cdot {{\pi }^{2}}\cdot \mathit{Axx}+8\cdot {{\pi }^{2}}\cdot \mathit{Ayy}+8\cdot {{\pi }^{2}}\cdot \mathit{Azz}}{3} & 0\cr 0 & 0 & 2\cdot \pi \cdot \left( \frac{4\cdot \pi \cdot \mathit{Azz}}{3}+\frac{2\cdot \left( 2\cdot \pi \cdot \mathit{Axx}+4\cdot \pi \cdot \mathit{Axy}+2\cdot \pi \cdot \mathit{Ayy}\right) }{3}\right) \end{pmatrix}\]$

 Профиль  
                  
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 19:14 
Супермодератор
Аватара пользователя


09/05/12
24051
Кронштадт
Что-то я не понимаю, каким образом этот код приводит к такому результату. Воспроизвести не удается. А, в одном месте двоеточие потеряли (определение функции R).

Ну и теперь все нормально. Если сделать, например, expand от последней строчки, сразу будет видно, что все одинаково.

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


28/04/16
2346
Внутри ускорителя
Pphantom в сообщении #1476749 писал(а):
Ну и теперь все нормально. Если сделать, например, expand от последней строчки, сразу будет видно, что все одинаково.

Действительно, прогнал ещё раз, и получилось:
$
\[\begin{pmatrix}\frac{2\cdot \left( 4\cdot {{\pi }^{2}}\cdot \mathit{Axx}+4\cdot {{\pi }^{2}}\cdot \mathit{Ayy}+4\cdot {{\pi }^{2}}\cdot \mathit{Azz}\right) }{3} & 0 & 0\cr 0 & \frac{2\cdot \left( 4\cdot {{\pi }^{2}}\cdot \mathit{Axx}+4\cdot {{\pi }^{2}}\cdot \mathit{Ayy}+4\cdot {{\pi }^{2}}\cdot \mathit{Azz}\right) }{3} & 0\cr 0 & 0 & 2\cdot \pi \cdot \left( \frac{4\cdot \pi \cdot \mathit{Azz}}{3}+\frac{2\cdot \left( 2\cdot \pi \cdot \mathit{Axx}+2\cdot \pi \cdot \mathit{Ayy}\right) }{3}\right) \end{pmatrix}\]
$
(видимо где-то после переопределения не прогнал ячейки).
Спасибо большое. :D

Только всё равно странно: почему все недиагональные элементы исчезли при усреднении. По симметрии, и по логике, вроде не должно так бытью :?

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


06/10/08
6422
Почему нет? При усреднении должно остаться подпространство, инвариантное относительно действия $SO(3)$, как раз скалярные матрицы и получаются.

 Профиль  
                  
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 20:23 
Заслуженный участник
Аватара пользователя


28/04/16
2346
Внутри ускорителя
Xaositect в сообщении #1476753 писал(а):
Почему нет? При усреднении должно остаться подпространство, инвариантное относительно действия $SO(3)$, как раз скалярные матрицы и получаются.

Согласен про скалярные матрицы, но я ведь могу привести изначально матрицу $A$ к диагональному виду, а могу к недиагональному, и из этого у нас будут возникать разные результаты? Как-то по физике не согласуется.

Ну а во-вторых, симметричная матрица преобразуется по приводимому представлению $D^{(0)} \oplus D^{(2)}$ группы $SO(3)$. Матрица же $\mathcal{R} \in D^{(1)}$. По теореме сложения моментов мы получаем для диагональной части ($D^{(0)}$):
$D^{(1)} \oplus D^{(0)}  \oplus D^{(1)} = D^{(0)}  \oplus D^{(1)} \oplus D^{(2)}$ (т.е. есть полносимметричное представление $D^{(0)}$, а значит по теореме Вигнера-Эккарта должно быть что-то ненулевое в общем случае).
Для недиагональной же части имеем:
$D^{(1)} \oplus D^{(2)}  \oplus D^{(1)} = D^{(0)}  \oplus D^{(1)} \oplus D^{(2)} \oplus D^{(3)} \oplus D^{(4)}$, т.е. тоже должны быть ненулевые элементы.

 Профиль  
                  
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 21:09 
Заслуженный участник
Аватара пользователя


06/10/08
6422
madschumacher в сообщении #1476756 писал(а):
Согласен про скалярные матрицы, но я ведь могу привести изначально матрицу $A$ к диагональному виду, а могу к недиагональному, и из этого у нас будут возникать разные результаты? Как-то по физике не согласуется.
Почему разные? След матрицы сохранится, а в результате у Вас он как раз и фигурирует.

madschumacher в сообщении #1476756 писал(а):
Ну а во-вторых, симметричная матрица преобразуется по приводимому представлению $D^{(0)} \oplus D^{(2)}$ группы $SO(3)$. Матрица же $\mathcal{R} \in D^{(1)}$. По теореме сложения моментов мы получаем для диагональной части ($D^{(0)}$):
$D^{(1)} \oplus D^{(0)}  \oplus D^{(1)} = D^{(0)}  \oplus D^{(1)} \oplus D^{(2)}$ (т.е. есть полносимметричное представление $D^{(0)}$, а значит по теореме Вигнера-Эккарта должно быть что-то ненулевое в общем случае).
Для недиагональной же части имеем:
$D^{(1)} \oplus D^{(2)}  \oplus D^{(1)} = D^{(0)}  \oplus D^{(1)} \oplus D^{(2)} \oplus D^{(3)} \oplus D^{(4)}$, т.е. тоже должны быть ненулевые элементы.
Не понимаю, что Вы здесь делаете. $D^{(k)}$ - это $k + 1$-мерное представление? Что Вы имеете в виду под $\mathcal{R} \in D^{(1)}$?

Симметричные матрицы - это $\mathbf{1} \oplus \mathbf{5}$, интеграл по мере Хаара даст инвариантное подпространство. Даже если матрица произвольная (представление $\mathbf{1} \oplus \mathbf{3} \oplus \mathbf{5}$), будет все равно то же самое.

 Профиль  
                  
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 23:30 
Заслуженный участник
Аватара пользователя


28/04/16
2346
Внутри ускорителя
Xaositect в сообщении #1476758 писал(а):
Почему разные? След матрицы сохранится, а в результате у Вас он как раз и фигурирует.

А, да, действительно, Вы правы.
Xaositect в сообщении #1476758 писал(а):
Не понимаю, что Вы здесь делаете. $D^{(k)}$ - это $k + 1$-мерное представление?

Нет, это $(2k+1)^2$-мерное неприводимое представление группы $SO(3)$, например в виде вигнеровских D-матриц ($k$ -- по-сути квантовое число для полного момента импульса).
Xaositect в сообщении #1476758 писал(а):
Что Вы имеете в виду под $\mathcal{R} \in D^{(1)}$?

Что матрица вращений преобразуется по соответствующему неприводимому представлению (элементы этой матрицы выражаются через D-функции Вигнера для $k=1$).
Xaositect в сообщении #1476758 писал(а):
Симметричные матрицы - это $\mathbf{1} \oplus \mathbf{5}$, интеграл по мере Хаара даст инвариантное подпространство. Даже если матрица произвольная (представление $\mathbf{1} \oplus \mathbf{3} \oplus \mathbf{5}$), будет все равно то же самое.

Простите, для меня это сложновато. :oops:

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


06/10/08
6422
Мне кажется, Вы путаете представления (линейные пространства, на которых действует группа - пространство векторов, пространство симметричных матриц и т.п.) и матрицы представлений (параметризованные матрицы, которые показывают, как именно группа действует, например, ваша $\mathcal{R}$).

Ваш интеграл имеет вид $\int_{\mathrm{SO}(3)} (g \bullet A)\, \mathrm{d}g$, где $g$ - это элемент группы, $A$ - это элемент представления (симметричных матриц), $g \bullet A$ - это действие элемент $g$ на $A$, т.е. $g \cdot A = gAg^{-1}$, и $\mathrm{d}g$ - это мера Хаара, по которой Вы интегрируете. Эта мера инвариантна, т.е. для любого $a\in \mathrm{SO}(3)$ имеем $\int_{\mathrm{SO}(3)} f(g)\, \mathrm{d}g = \int f(ag) \,\mathrm{d}g$.
Из инвариантности понятно, что $\int_{\mathrm{SO}(3)} (g \bullet A)\, \mathrm{d}g$ будет инвариантен относительно действия группы $G$, то есть он преобразуется как $D^{(0)}$. И вся операция $A \mapsto \int_{\mathrm{SO}(3)} (g \bullet A)\, \mathrm{d}g$ - это проекция на инвариантное подпространство, в Вашем случае, с $D^{(0)} \oplus D^{(2)}$ на $D^{(0)}$. При этом важна только структура представления, в котором живет $A$, Вы же зачем-то еще считаете что-то с $\mathcal{R} \in D^{(1)}$ (эта запись вообще некорректна).

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


28/04/16
2346
Внутри ускорителя
Xaositect в сообщении #1476811 писал(а):
Мне кажется, Вы путаете представления... и матрицы представлений

Да, вполне может быть. В Группах Ли и их представлениях я плавую 100%.

Спасибо большое за ликбез. Но в практическом смысле получается, что недиагональные элементы не выживут при таком усреднении, т.е. результат правильный?

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


06/10/08
6422
Да.

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

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



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

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


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

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