Добрый день,
прошу прощения за беспокойство. Я тут пытаюсь в
wxMaxima 15.08.2 посчитать
унитарное ортогональное преобразование симметричной матрицы
при матрицей
:
.
(конкретика)
Конкретно,
-- это матрица вращения трёхмерной системы координат, выраженная через углы Эйлера.
Чтобы получить единичную матрицу из
нужно сделать следующее:
Код:
R1(phi):= matrix([cos(phi), -sin(phi), 0],
[sin(phi), cos(phi), 0],
[ 0 , 0, 1]);
R1(phi).transpose(R1(phi));
получая на выходе
По аналогии я считаю нужный мне результат как:
Код:
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));
К сожалению эта кроказябра сложна для понимания, поэтому я интегрирую эту штуку по переменным матрицы
и получаю физически малоосмысленный результат.
(конкретика)
Код:
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 );
в результате чего получается ерунда (в нижнем диагональном элементе):
чисто из требований симметрии.
Вопрос: правильно ли я делаю тройное перемножение матриц (это единственная причина, которую я смог придумать)?