为了账号安全,请及时绑定邮箱和手机立即绑定

CVXPY 奇异二次方的平方根

CVXPY 奇异二次方的平方根

沧海一幻觉 2021-08-17 16:53:11
我需要为奇异的半正定矩阵 C 建模 sqrt(x^TC x)。在这里,建议使用 norm(Q*x),其中 Q 是从 C 的 Cholesky 分解中获得的。但是, np./scipy.linalg.cholskey 不适用于奇异矩阵。PS,使用 SVD 或特征值分解对我的应用程序来说太慢了。PS2,这篇文章Numpy Cholesky 分解 LinAlgError没有帮助,因为它没有提供解决方案。此外,问题中的矩阵似乎具有负特征值(而不是奇异值)。
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

我找到了使用 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。


查看完整回答
反对 回复 2021-08-17
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信