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

为何scipy.linalg.svd的左矩阵U与scipy.linalg.eig的特征向量不同?

为什么对称正定矩阵SVD得到的U矩阵与特征向量符号相反?

这是完全正常的现象,核心原因在于特征向量的符号不唯一性:

  • 根据特征向量的定义,若$\mathbf{v}$是矩阵$A$对应特征值$\lambda$的特征向量,那么任意非零标量$k$乘以$\mathbf{v}$(即$k\mathbf{v}$)也同样是$A$对应$\lambda$的特征向量。当$k=-1$时,特征向量的所有元素符号取反,这完全符合特征向量的数学定义,两者都是有效的特征向量。

对于对称正定矩阵,SVD分解得到的$U$矩阵确实由特征向量构成,但SVD与特征值分解的数值实现算法不同:

  • scipy.linalg.svd()和scipy.linalg.eig()在计算过程中,内部的迭代策略、归一化方式可能存在差异,导致最终输出的特征向量选择了相反的符号方向,但这并不影响它们的正确性。

结合你的代码示例验证:

import scipy
import numpy as np
mat = np.array([[3,2],[2,3]])
U, S, Vh = scipy.linalg.svd(mat)
eigenvalues, eigenvectors = scipy.linalg.eig(mat)

# 验证U的第一列是特征向量
print(mat @ U[:,0])
print(eigenvalues[0] * U[:,0])
# 输出均为 [-3.53553391 -3.53553391],符合特征方程

# 验证eigenvectors的第一列是特征向量
print(mat @ eigenvectors[:,0])
print(eigenvalues[0] * eigenvectors[:,0])
# 输出均为 [3.53553391 3.53553391],同样符合特征方程

可见两者只是符号相反,都满足特征向量的核心要求:矩阵与向量的乘积等于特征值与向量的乘积。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:49:59