正交化矩阵 numpy

Mil*_*ell 3 python numpy orthogonal

我试图正交化 a2d-numpy array并失败了。我使用了这种方法并将其转换为以下代码:

def sym(w):
    return w.dot((w.T.dot(w))**(-.5))
Run Code Online (Sandbox Code Playgroud)

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]])
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*son 6

的工作定义sym是:

from scipy.linalg import sqrtm, inv

def sym(w):
    return w.dot(inv(sqrtm(w.T.dot(w))))
Run Code Online (Sandbox Code Playgroud)

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