包含向量外积的方程

时间:2015-08-18 15:30:06

标签: python c++ numpy matrix linear-algebra

enter image description here

其中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元素符号。

2 个答案:

答案 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]