Python 奇异二次型方程的CVXPY平方根

Python 奇异二次型方程的CVXPY平方根,python,square-root,cvxpy,Python,Square Root,Cvxpy,我需要对奇异半正定矩阵C的sqrt(x^tcx)建模。这里,建议使用范数(Q*x),其中Q是从C的Cholesky分解得到的 但是,np./scipy.linalg.cholskey不适用于奇异矩阵 PS,使用SVD或特征值分解对我的应用来说太慢了 PS2,这篇文章没有帮助,因为它没有提供解决方案。此外,问题中的矩阵似乎具有负特征值(而不是奇异值) 我用ldl分解法找到了一个解决方案 L,d,_ = scipy.linalg.ldl(C) d = np.diag(d).copy

我需要对奇异半正定矩阵C的sqrt(x^tcx)建模。这里,建议使用范数(Q*x),其中Q是从C的Cholesky分解得到的

但是,np./scipy.linalg.cholskey不适用于奇异矩阵

PS,使用SVD或特征值分解对我的应用来说太慢了


PS2,这篇文章没有帮助,因为它没有提供解决方案。此外,问题中的矩阵似乎具有负特征值(而不是奇异值)

我用ldl分解法找到了一个解决方案

    L,d,_ = scipy.linalg.ldl(C)
    d = np.diag(d).copy()
    inds = d >= d.max()*1e-8

    d = d[inds]
    d = np.sqrt(d)
    d.shape = (-1,1)
    Q = d * L.T[inds]


    loss = cp.norm(cp.matmul(Q, x))

ldl分解需要scipy>=1.1

这篇文章的可能重复并不意味着解决方案。为了澄清,
C
表示协方差矩阵?没错。单数的。