4

我试图正交化 a2d-numpy array并失败了。我使用了这种方法并将其翻译成这段代码:

def sym(w):
    return w.dot((w.T.dot(w))**(-.5))

In [1]: a
Out[2]: 
array([[ 1.1,  0.1],
       [ 0.1,  1.1]])
In [3]: a = sym(a)

In [4]: a
Out[5]: 
array([[ 1.20909392,  2.43574363],
       [ 2.43574363,  1.20909392]])

In [6]: a.dot(a.T)
Out[7]: 
array([[ 7.39475513,  5.89008563],
       [ 5.89008563,  7.39475513]])

a.dot(a.T)应该输出身份。

4

1 回答 1

7

的工作定义sym是:

from scipy.linalg import sqrtm, inv

def sym(w):
    return w.dot(inv(sqrtm(w.T.dot(w))))

这是因为将 numpy 矩阵提高到 -.5 的幂并不等同于取矩阵平方根然后对其求逆,这是公式所要求的。

于 2012-12-18T20:00:03.820 回答