Углы Эйлера от матрицы вращения 2x2 ZYZ?

Как я могу найти углы Эйлера из случайной матрицы вращения 2x2 ZYZ? Мы знаем, что все матрицы SU (2) можно разложить, используя разложение ZYZ, как произведение трех матриц, основанное на углах Эйлера. В Википедии об углах Эйлера:

«Подобное трехугловое разложение применимо к SU (2), специальной унитарной группе вращений в сложном двумерном пространстве, с той разницей, что β находится в диапазоне от 0 до 2π. Их также называют углами Эйлера».

Я попытался создать систему уравнений в Matlab, но в некоторых случаях она находила решение (матрицы Паули), а во многих других - нет. Он никогда не находит случайную матрицу SU (2).

Кто-нибудь знает общий подход? Я уже нашел, как делать матрицы 3х3, но не для 2х2 ЗЫЗ.

С наилучшими пожеланиями!


person user901366    schedule 30.01.2013    source источник
comment
Я что-то упускаю? Для матов 2x2 возможен только один поворот. Можно представить только вращение вокруг Z. Вы можете привести пример, чтобы мы могли понять.   -  person John Alexiou    schedule 30.01.2013
comment
Конечно. Вся матрица SU (2), игнорируя глобальный фазовый фактор, может быть разложена как: U = e ^ {- i / 2 * t1 * Z} * e ^ {- i / 2 * t2 * Y} * e ^ {- i / 2 * t3 * Z}, где Y и Z - матрицы Паули, Y = [0 -i; i 0] e Z = [1 0; 0 -1]. Это вращение ZYZ.   -  person user901366    schedule 31.01.2013
comment
Да, вы можете поместить все это в исходный вопрос и включить ссылки, поскольку это важно для ответа.   -  person John Alexiou    schedule 31.01.2013


Ответы (1)


из https://groups.google.com/forum/?fromgroups=#!topic/mathtools/q25a5WoG6Eo, автор - Хайфэн ГОНГ (сам не нашел):

function orthm = ang2orth(ang) 

sa = sin(ang(2)); ca = cos(ang(2)); 
sb = sin(ang(1)); cb = cos(ang(1)); 
sc = sin(ang(3)); cc = cos(ang(3)); 

ra = [  ca,  sa,  0; ... 
       -sa,  ca,  0; ... 
         0,   0,  1]; 
rb = [  cb,  0,  sb; ... 
         0,  1,  0; ... 
       -sb,  0,  cb]; 
rc = [  1,   0,   0; ... 
        0,   cc, sc;... 
        0,  -sc, cc]; 
orthm = rc*rb*ra; 

function ang = orth2ang(orthm) 
ang(1) = asin(orthm(1,3)); %Wei du 
ang(2) = angle( orthm(1,1:2)*[1 ;i] ); %Jing Du 
yz = orthm* ... 
    [orthm(1,:)',... 
     [-sin(ang(2)); cos(ang(2)); 0],... 
     [-sin(ang(1))*cos(ang(2)); -sin(ang(1)*sin(ang(2))); 
cos(ang(1))] ]; 

ang(3) = angle(yz(2,2:3)* [1; i]); % Xuan Du 

Как видно здесь и здесь There is an isomorphism between SO(3) and SU(2):

введите описание изображения здесь

person 0x90    schedule 30.01.2013
comment
Привет, друг, спасибо, но этот алгоритм предназначен для трехмерного вращения. Мне нужны комплексные матрицы 2х2. - person user901366; 31.01.2013
comment
Переход между 2d и 3d состоит в том, чтобы установить, что одна из осей имеет плоскость const, скажем, z = 0, делайте это осторожно - person 0x90; 31.01.2013
comment
Извините, я не понимаю. Могу ли я преобразовать комплексную матрицу 2x2 U = [0,2762 + 0,2832i 0,6413 + 0,6575i; -0.6413 + 0.6575i 0.2762 - 0.2832i] в вещественную матрицу 3x3 и применить вышеупомянутый подход? - person user901366; 01.02.2013
comment
вы можете сделать это разными способами, вы можете настоять на том, чтобы вращение в соответствии с z было равно 2pi или нулю, скажем. не имеет смысла для вас? - person 0x90; 01.02.2013
comment
Еще раз извините, но нет. Я не очень хорошо разбираюсь в этом контексте вращения, мне нужен другой контекст, но я прошу, чтобы повороты стали более распространенными. Не могли бы вы дать образец, используя матрицу U 2x2 из комментария выше? Спасибо! - person user901366; 02.02.2013
comment
Привет друг, отличные ссылки! Я провел тест с некоторыми случаями, и результаты были не идеальными, но удовлетворительными :-)). Благодарю за внимание. - person user901366; 02.02.2013
comment
Не могли бы вы поделиться с нами, что вы сделали к концу? - person 0x90; 02.02.2013
comment
Конечно. Я использую карту, указанную на странице 4 этого справочника, чтобы преобразовать комплексную матрицу 2x2 в действительную матрицу вращения 3x3. Затем я использую эту реализацию Matlab для извлечения углов Эйлера. Но это работает не во всех случаях .. :( Если я попробую с матрицами Паули, я не узнаю значений. :( - person user901366; 03.02.2013
comment
Привет, что тебе нужно? Я делаю в точности то, что сказал выше, я использую последнее уравнение страницы 4. Вам нужен код? Как я могу отформатировать код здесь? - person user901366; 05.02.2013
comment
Опубликуйте ответ, нажав «Ответить на свой вопрос», разместив свой код и объяснив его. - person 0x90; 05.02.2013