You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Python中半正定矩阵Cholesky分解的内置实现函数

半正定矩阵的Cholesky分解(Python实现)

NumPy和SciPy的原生cholesky函数只支持正定矩阵,处理半正定矩阵时会因奇异矩阵报错。以下是几种可行的解决思路:

  • 矩阵平方根替代方案:scipy.linalg.sqrtm可直接计算半正定矩阵的平方根,结果L满足L @ L.T = A,效果等价于半正定矩阵的Cholesky分解。示例:

    import numpy as np
    from scipy.linalg import sqrtm
    
    # 构造半正定矩阵
    semi_pos_def = np.array([[2, 1], [1, 1]])
    L = sqrtm(semi_pos_def)
    # 验证分解正确性
    print(np.allclose(L @ L.T, semi_pos_def))
    
  • 扰动近似分解:若允许微小误差,给半正定矩阵添加极小的对角扰动项,将其转为正定矩阵后使用标准Cholesky分解。示例:

    import numpy as np
    
    semi_pos_def = np.array([[2, 1], [1, 1]])
    n = semi_pos_def.shape[0]
    # 添加微小正则化项
    regularized = semi_pos_def + 1e-9 * np.eye(n)
    L = np.linalg.cholesky(regularized)
    print(np.allclose(L @ L.T, semi_pos_def, atol=1e-8))
    
  • 注意事项:严格的Cholesky分解仅适用于正定矩阵,半正定矩阵可能不存在唯一的下三角分解。上述方案中,矩阵平方根是理论上更严谨的半正定矩阵分解方式,而扰动法是工程上常用的近似手段。

内容的提问来源于stack exchange,提问作者Ohad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:06:01