Каково необходимое условие для того, чтобы два набора векторов были выровнены ортогональной матрицей?

Предположим, что есть два набора векторов $A$ и $B \in \mathbb{R}^{f \times 3}$

Если есть ортогональная матрица $R \in \mathbb{R}^{3 \times 3}$, можно идеально выровнять два набора векторов, например. $РА = В$

Каково необходимое условие для того, чтобы A и B удовлетворяли этому?

Я знаю, что ортогональную матрицу можно решить с помощью алгоритма ортогонального прокруста, но это дает только решение. Я хочу знать условие для A и B, чтобы они были идеально выровнены по $R$.

Спасибо.


person user4864665    schedule 19.03.2020    source источник
comment
Интересный вопрос, но не по теме SO и вместо этого подходит для math.stackexchange.com.   -  person Robert Dodier    schedule 19.03.2020


Ответы (1)


Необходимое и достаточное условие состоит в том, что

A'*A = B'*B

К сожалению, я не смог найти ссылку на это. Вот, однако, набросок доказательства. Работаем по индукции над количеством строк.

Если это 1, то каждый из A и B является вектор-столбцом, и условие читается

A[i]*A[j] = B[i]*B[j] for all i,j

Когда i=j, это означает, что |A[i]| = |В[я]| и поэтому есть s[i] (каждое +-1) с

B[i] = s[i]*A[i]

Если и A[i], и A[j] отличны от нуля (тогда и B[i] и B[j] тоже), мы видим

s[i]*s[j] = 1, so s[i] = s[j]

Поскольку мы можем выбрать s[i] произвольно, когда A[i] (следовательно, B[i]) равно нулю, отсюда следует, что мы можем выбрать все s[i] одинаковыми, чтобы B = s*A, как и требовалось.

Если количество строк больше 1, напишите

A = (a A1) 
B = (b B1) 

(где a - первый столбец A и т. д.)

Примечание

A'*A = ( a'*a   a'*A1)
       ( A1'*a  A1'*A1)

и аналогично для B. Если a равно нулю, то же самое равно и b, и

U*a = U*b for any U.

Таким образом, мы можем предположить, что a != 0 (и, следовательно, b != 0). если l - длина a (и b), мы можем найти ортогональные U и V так, чтобы

U*a = l*e1
V*b = l*e1

(где e1 равно (1,0,..0)') Пусть

U*A = (l*e1 A2)
V*B = (l*e1 B2)

С точки зрения них мы имеем

A'*A = (U*A)'*(U*A) = (l*l      l*e1'*A2)
                      (l*A2'*e1 A2'*A2  )

и аналогично для B. Обратите внимание, что e1'*A2 — это первая строка A2, поэтому наше условие подразумевает, что первые строки A2 и B2 совпадают. Если мы напишем

A2 = ( x )
     ( A3)

(и аналогично для B2), то

A2'*A2 = x'*x + A3'*A3 = x'*x + B3'*B3 

Итак, по индукции существует ортогональное Q с

B3 = Q*A3

Но это подразумевает

B2 = (1 0 ) * A2
     (0 Q )

и, распутывая определения, что существует ортогональный W с

B = W*A
person dmuir    schedule 26.04.2020