擅长:python、mysql、java
<p>不,他们不使用相同的算法,因为他们做不同的事情。他们有点相关,但也有很大的不同。让我们从这样一个事实开始,您可以对<code>m x n</code>矩阵进行SVD,其中<code>m</code>和{<cd3>}不需要相同。在</p>
<p>取决于numpy的版本,你正在做。以下是lapack中双精度特征值例程:<br/>
<a href="http://www.netlib.org/lapack/explore-html/d9/d8e/group__double_g_eeigen.html" rel="nofollow noreferrer">http://www.netlib.org/lapack/explore-html/d9/d8e/group__double_g_eeigen.html</a><br/>
以及相应的SVD程序:<br/>
<a href="http://www.netlib.org/lapack/explore-html/d1/d7e/group__double_g_esing.html" rel="nofollow noreferrer">http://www.netlib.org/lapack/explore-html/d1/d7e/group__double_g_esing.html</a></p>
<p>套路有区别。差别很大。如果您关心细节,它们在fortran头文件中指定得非常好。在很多情况下,找出你面前的矩阵是什么样的是有意义的,这样才能做出正确的选择。矩阵是对称的还是厄米特的?是上对角线形式吗?它是半正定的吗。。。在</p>
<p>在运行时有雌雄同体的差异。但根据经验,EIG比SVD便宜。但这也取决于收敛速度,而收敛速度又很大程度上取决于矩阵的条件数,换句话说,矩阵有多不适定。。。在</p>
<p>奇异值分解通常是非常稳健和缓慢的算法,通常用于反演、通过截断进行速度优化、主成分分析,你所处理的矩阵只是一堆垃圾行;)</p>