You need to enable JavaScript to run this app. 为什么np.linalg.eig求解拉普拉斯矩阵得不到正确的特征值和特征向量?
优惠活动
大模型
产品
解决方案
定价
更多

为什么np.linalg.eig求解拉普拉斯矩阵得不到正确的特征值和特征向量?

问题原因说明

你观测到的结果完全符合数值线性代数库的设计逻辑,没有错误,核心原因如下:

  • 特征向量的行列对应关系误解
    numpy、scipy的所有特征值求解函数的返回格式均为(特征值数组w, 特征向量矩阵v),其中**v[:, i](第i列)才是对应特征值w[i]的特征向量**,而非v[i, :](第i行)。以np.linalg.eigh的输出为例,它针对对称矩阵会默认返回升序排列的特征值,第一个特征值9.996582244115599e-17就是数值精度下的0,对应的第一列特征向量为[-0.57735027, -5.77350269e-01, -0.57735027],和理论结果完全匹配。
  • 特征向量默认L2归一化
    特征向量的定义为满足L·v = λ·v的非零向量,任意非零常数乘以v都是同一特征值的合法特征向量。数值库默认会将返回的特征向量缩放到L2范数为1,3维全1向量的模长为√3 ≈1.732,单位化后每个元素就是1/√3 ≈0.57735,和你看到的输出完全一致。你可以将该特征向量乘以±√3,就能得到理论上的全1向量。
  • 特征值排序规则差异
    只有针对实对称矩阵优化的eigh函数会默认按升序返回特征值,通用的eig函数不会保证特征值的排列顺序,需要你自行对特征值排序后再匹配对应的特征向量。你观测到的1e-16量级的特征值就是浮点计算舍入误差下的0,可以直接视为理论上的0特征值。

内容的提问来源于stack exchange,提问作者黄晨晰

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 03:39:03