其中x是列向量。 我们从A中的对角元素知道x条目的值。但它们的迹象仍然未知。例如:
import numpy as np
A = array([[ 1.562, -0.833, -0.833, -0.031, -0.031, 0.167],
[-0.833, 0.795, 0.167, -0.149, 0.167, -0.146],
[-0.833, 0.167, 0.795, 0.167, -0.149, -0.146],
[-0.031, -0.149, 0.167, 1.68 , -0.833, -0.833],
[-0.031, 0.167, -0.149, -0.833, 1.68 , -0.833],
[ 0.167, -0.146, -0.146, -0.833, -0.833, 1.792]])
np.sqrt(A.diagonal())
>>> array([ 1.24979998, 0.89162773, 0.89162773, 1.29614814, 1.29614814,
1.33865604])
但我们仍然不知道这些迹象。戴着面具,我们有产品标志:
A > 0
>>> array([[ True, False, False, False, False, True],
[False, True, True, False, True, False],
[False, True, True, True, False, False],
[False, False, True, True, False, False],
[False, True, False, False, True, False],
[ True, False, False, False, False, True]], dtype=bool)
如何找到x元素符号。
答案 0 :(得分:5)
注意(-x)( - x)^ T =(x)(x)^ T,因此无法区分x和-x。鉴于此,您可以确定符号模式(即,您可以确定两个元素是否具有相同或相反的符号)。实际上,由于A的每一行都是x的标量倍数,因此每一行都会给出符号模式(除非该行全为0,如果x的元素为0,则可以使用该行)。列也是如此。
请注意,您的示例A不能是格式(x)(x)^ T的乘积。它有完整的排名。 (x)(x)^ T的最大可能等级为1.
例如,
In [14]: x = np.array([1.0, -2.0, -3.0, 4.0])
In [15]: np.outer(x, x)
Out[15]:
array([[ 1., -2., -3., 4.],
[ -2., 4., 6., -8.],
[ -3., 6., 9., -12.],
[ 4., -8., -12., 16.]])
请注意产品中的符号图案。每行(和每列)是(+, - , - ,+)或( - ,+,+, - )。
答案 1 :(得分:0)
一般来说,你不能。
例如,想象一下矩阵A == [1]
。
如何知道x
是[1]
还是[-1]
?