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

np.linalg.eigvalsh返回负特征值的问题排查与解决求助

协方差矩阵np.linalg.eigvalsh返回负特征值问题求助

我有一个7x7的协方差矩阵(以Numpy数组表示):

import numpy as np

t = np.array(
    [
        [1.4, 0.3, 0.4, 0.8, 0.4, 0.9, 0.3],
        [0.3, 1.3, 0.4, 2.3, 0.4, 2.4, 0.4],
        [0.4, 0.4, 1.3, 2.8, 0.4, 1.0, 0.3],
        [0.8, 2.3, 2.8, 9.5, 1.0, 7.0, 1.0],
        [0.4, 0.4, 0.4, 1.0, 1.1, 1.2, 0.3],
        [0.9, 2.4, 1.0, 7.0, 1.2, 7.7, 1.0],
        [0.3, 0.4, 0.3, 1.0, 0.3, 1.0, 0.5],
    ],
    dtype=np.float64,
)

我已验证该矩阵是对称矩阵:

np.allclose(t, t.T)
# 输出:True

通过np.linalg.svd能得到有效的非负奇异值,但np.linalg.eigvalsh却返回了负特征值:

min(np.linalg.eigvalsh(t))
# 输出:-0.06473876145336957

这让我困惑,因为我已经通过行最简形验证了矩阵的列是线性无关的:

import sympy
reduced_form, inds = sympy.Matrix(t).rref()

我查阅过类似问题的解决方案,但都没有效果,比如关于scipy.eigh返回负特征值、numpy.cov或eigvals结果异常的相关讨论。

请问有人遇到过np.linalg.eigvalsh的类似问题吗?能否提供解决建议?十分感谢。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:03:22