Что является необходимым условием для выравнивания двух векторов по ортогональной матрице? - PullRequest
0 голосов
/ 19 марта 2020

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

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

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

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

Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2020

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

A'*A = B'*B

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

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

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

Когда i = j, это означает, что | A [i] | = | B [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, et c)

Примечание

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
...