2014 dxdy logo

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

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




 
 Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 18:23 
Аватара пользователя
Добрый день,

прошу прощения за беспокойство. Я тут пытаюсь в 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 
madschumacher в сообщении #1476741 писал(а):
это единственная причина, которую я смог придумать
А в виде матрицы $\mathcal{R}$ вы уверены? Попробуйте ее саму получить как результат умножения трех матриц поворота, возможно, где-нибудь какой-нибудь минус лишний вылез...

 
 
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 19:03 
Аватара пользователя
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 
Что-то я не понимаю, каким образом этот код приводит к такому результату. Воспроизвести не удается. А, в одном месте двоеточие потеряли (определение функции R).

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

 
 
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 19:30 
Аватара пользователя
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 
Аватара пользователя
Почему нет? При усреднении должно остаться подпространство, инвариантное относительно действия $SO(3)$, как раз скалярные матрицы и получаются.

 
 
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение31.07.2020, 20:23 
Аватара пользователя
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 
Аватара пользователя
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 
Аватара пользователя
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 
Аватара пользователя
Мне кажется, Вы путаете представления (линейные пространства, на которых действует группа - пространство векторов, пространство симметричных матриц и т.п.) и матрицы представлений (параметризованные матрицы, которые показывают, как именно группа действует, например, ваша $\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 
Аватара пользователя
Xaositect в сообщении #1476811 писал(а):
Мне кажется, Вы путаете представления... и матрицы представлений

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

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

 
 
 
 Re: Произведение трёх матриц в wxMaxima
Сообщение03.08.2020, 11:14 
Аватара пользователя
Да.

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group