栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

scipy.linalg.eig返回协方差矩阵的复特征值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

scipy.linalg.eig返回协方差矩阵的复特征值?

您提出了两个问题:

  1. 返回的特征值
    scipy.linalg.eig
    不是实数。
  2. 一些特征值是负的。

这两个问题都是由截断和舍入错误引入的错误的结果,而在使用浮点算术的迭代算法中总是会发生这种错误。请注意,Matlab结果也产生了负的特征值。

现在,对于问题的一个更有趣的方面:​​为什么Matlab的结果是真实的,而SciPy的结果却包含一些复杂的成分?

Matlab

eig
检测输入矩阵是实对称的还是Hermitian的,并在输入时使用Cholesky因式分解。请参阅文档中对自
chol
变量的描述。这不是在SciPy中自动完成的。
eig

如果要使用利用实数对称或Hermitian矩阵结构的算法,请使用

scipy.linalg.eigh
。对于问题中的示例:

>>> eigh(C, eigvals_only=True)array([ -3.73825923e-17,  -1.60154836e-17,   8.11704449e-19,         3.65055777e-17,   7.90175615e-01])

如果四舍五入到与Matlab打印的精度相同的位数,则此结果与Matlab的结果相同。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441220.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号