我正在使用numpy.svd来计算条件较差矩阵的奇异值分解。对于一些特殊情况,SVD无法收敛,并引发Linalg.Error。我进行了一些研究,发现numpy使用来自LAPACK的DGESDD例程。标准实现有一个硬编码的迭代限制,约为35次迭代或其他某些次数。如果我尝试在Matlab中分解相同的矩阵,一切都很顺利,我认为这有两个原因:
1. Matlab使用DGESVD而不是DGESDD,它通常似乎更加稳健。
2. Matlab在该例程中使用了75次的迭代限制。(他们在源代码中做了修改并重新编译了它。)
现在问题是:是否有一种简单的方法可以将numpy使用的后端从DGESDD更改为DGESVD,而无需修改numpy源代码?
提前感谢 Mischa
现在问题是:是否有一种简单的方法可以将numpy使用的后端从DGESDD更改为DGESVD,而无需修改numpy源代码?
提前感谢 Mischa