Необходимым и достаточным условием является то, что
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