Матрица поворота на случайный угол

Scout

Друзья, помогите разобраться с геометрией.
Читаю статью, в которой описана процедура построения червеобразной цепи. Первый сегмент задан, а последующие получаются наклонениями предыдущего сегмента на какой-то случайный угол.
Есть даже выдержка с описанием:

Голова плохо работает, не могу понять, какой должна иметь в этом тексте "generator matrix"?

griz_a

Это, вероятно, инфинитезимальный оператор соответствующего марковского процесса.

Scout

Что-то мне моя эрудиция даже не позволила понять, это шутка или реальный ответ . А попроще можно сформулировать? В виде матрицы 3х3, например?

griz_a

Я не силен в телепатии, но мне кажется, что речь идет о том, что положение пучка в момент t описывается однородным гауссовским марковским процессом с нулевым средним. По-видимому, марковский процесс при этом очень простой, поскольку осуществляет только поворот, поэтому он задан некоторой случайной матрицей, отвечающей за локальную скорость поворота.
По-крайней мере, если мы просто взяли и случайно повернули вектор, то непонятно зачем говорить об экспонентах и скорости поворота.
Впрочем, пока мы о динамике процесса не говорим, это все не очень важно - в один конкретный момент мы просто повернули вектор на случайную матрицу вида exp(At где A - эта самая матрица скорости

Martika1

на первый взгляд, в этом фрагменте текста демонстрируется связь между червеобразной моделью (полимерной цепи?) и процедурой построения цепи Кратки-Порода (а не процедура построения червеобразной). Порождающая (или как это по-русски называется?) матрица определяет гибкость цепи. Как она должна выглядеть — тут я пас.

iri3955

Думаю надо взять генератор матриц вращений в пространстве ( Паули или Гелл-Манна )
В этом случае вращения задаётся линейным пространством (на торе) А дальеш брать случайную точку на этом торе по какому-то распределнию

griz_a

Это плохо согласуется с понятиями "скорость" и "экспонента от матрицы"

iri3955

Генераторы как раз задают экспоненту exp{\sum_i{A_ie_i}}

griz_a

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

Scout

да, все верно, речь идет о построении полимерной цепи. Каждый следующий ее сегмент наклонен по отношению к предыдущему на некоторый случайный угол. При этом гибкость цепи изотропна, а энергия изгиба квадратична по углу (отсюда углы должны быть Гауссовскими случайными величинами с нулевым средним).

2 & _SS_: Правильно я понимаю, что можно взять матрицу-генератор в таком виде:
A=(0 wz -wy; -wz 0 wx; wy -wx 0
где wx, wy, wz - скорости, случайно выбранные из Гауссовского распределения с нулевым средним,
а матрица поворота тогда будет T=exp(A)
?

griz_a

Давайте я просто распишу, как я представляю происходящее. Тут можно напрямую с процессом работать, поскольку он, по сути, явно задан. Тогда марковские\дифузионные процессы вмешивать не придется.
Берем матрицу X_t 3 на 3 из координат наших векторов в момент t (по столбцам).
Тогда если углы меняются с некоторой скоростью, то за небольшое время мы из X_t переходим в
X_{t+dt} = X_t + A X_t dt
Отсюда X'_t = A X_t, X_t = X_0 e^{A t}
Если интересен момент времени 1, то
X_t = X_0 e^{A}
Кто здесь такая А? А - это мой локальный поворот. То есть, вообще говоря, это любая случайная матрица поворота. В данном случае говорится, что она должна быть гауссовской. По-видимому, это означает, что ее элементы являются многомерным нормальным вектор размерности 9, рассматриваемым при условии, которое надо наложить на матрицу, чтобы это был поворот.

tester1

Я чуть-чуть понимаю в генераторах неслучайных полугрупп, если есть вопросы именно по этой теме - могу попробовать помочь. Но вот со случайностью работать не умею, увы.

Scout

Спасибо! Но все-таки не до конца понял. Значит и e^{A}, и А - это матрицы поворота? Как все-таки сгенерировать такую порождающую матрицу А, чтобы e^{A} была матрицей поворота на случайный угол, выбранный из гауссовского распределения?

stm8853410

А тебе нужна размерность два, три или больше? Если три, то поворот это ось поворота + угол поворота, и какие условия ты в таком случае накладываешь на ось?

stm8853410

Вообще говоря, экспонента от кососимметричной матрицы — это матрица поворота. У кососимметричной матрицы три на три как раз ровно три параметра, которыми она задаётся. Может, это и есть то, что нужно? (если эти три параметра — числа над диагональю — сделать гауссовскими)

BSCurt

Должно быть так и есть, за повороты отвечает ортогональная группа (специальная ортогональная если нужно сохранять ориентацию пространства их алгебра Ли это кососимметрические матрицы, они берут случайный элемент гаусовским распрелеление из кососимметрических матриц(как уже написали выше экспоненциируют его получают матрицу поворота.

BSCurt

2 & _SS_: Правильно я понимаю, что можно взять матрицу-генератор в таком виде:
A=(0 wz -wy; -wz 0 wx; wy -wx 0
где wx, wy, wz - скорости, случайно выбранные из Гауссовского распределения с нулевым средним,
а матрица поворота тогда будет T=exp(A)
?
Да, кажется, да.
Интересно, кстати, что есть непрерывный предел такого процесса, т.е. если длинна звена и дисперсия соответсвенно стремятся у нулю.

stm8853410

Я вот только не пойму:
вот у нас есть способ построить случайную кососимметричную матрицу. Будет ли полученное распределение случайных операторов симметрично относительно всех поворотов?

BSCurt

Если так как написал выбирать, то должно быть (относительно правильного скалярного произведения на пространстве кососимметричных матриц (X,Y)=-Tr(X Y базис (0 z -y; -z 0 x; y -x 0 ортогональный и базисные вектора имеют одинаковую длину, на это пространство действует ортогональная группа сопряжениями, скалярное умножени сохраняется, ну вобщем тут всё очень симметричное, как-то так если выбрать какое-то другое Гауссово распредление или другой базис в пространстве кососимметричных матриц то может и нет быть.

Scout

& : спасибо за соображения.
Вот только действительно ли экспонента кососимметричной матрицы является матрицей поворота?
Проверяю в Матлабе на одном из генераторов группы Ли: например, J1=[0 0 0; 0 0 -1; 0 1 0], и не получается. А именно, матрица T=exp(J1 меняет длину вектора, а обратная матрица от T не равна транспонированной.
Так же обстоит дело и с матрицей, равной экспоненте от A=(0 z -y; -z 0 x; y -x 0). Т.е. она тоже не удовлетворяет этим свойствам матрицы поворота.
Что я упускаю?

stm8853410

Кажется, ты пишешь exp вместо expm. Сверь с примером.

BSCurt

J1=[0 0 0; 0 0 -1; 0 1 0]
Это практически тоже самое что брать экспоненту матрицы J=[0 -1; 1 0], для наглядности будем рассматривать матрицу
x*J=[0 -x; x 0], обозначим I=[1 0 ; 0 1] - единичную матрицу, заметим что J*J=-I
тогда
Exp(x*J) = I + J x/(1!) - I x^2/(2!) - J x^3/(3!) + I x^4/(4!) + ...
В итоге ясно что коэффиценты экспоненты это просто разложение в ряд Тейлора для синуса и косинуса
Exp(x*J)=[ cos x , -sin x; sin x, cos x] - очевидно ортогональная матрица поворота.

Scout

Кажется, ты пишешь exp вместо expm. Сверь с примером.
Именно тут я и ошибался! Теперь все похоже верно работает.
Вот такое распределение случайных наклонов генерится (стандартное отклонение 0.3 рад, начальный вектор [0 0 1]):

И вот такая червеобразная случайная цепь (100 сегментов).

Так что вопрос закрыт. Всем большое спасибо!
Оставить комментарий
Имя или ник:
Комментарий: