Я подозреваю, что этот вопрос лучше подходит для математического сайта, чем для программирования.
Короче говоря, ответ: не совсем. a и -a дают один и тот же внешний продукт.
Это степень неоднозначности, я думаю.
if B = a*a' then
B[i,i] = a[i]*a[i] so if also
B = b*b' then
b[i] = +-a[i]
Если хотя бы два из a отличны от нуля, скажем a [ i] и a [j], мы не можем выбирать разные знаки, потому что у нас должно быть
a[i]*a[j] = B[i,j] = b[i]*b[j]
Если только один a [i] не равен нулю, тогда есть только один знак для выбора.