C# 在数值库上求解奇异值分解(计算)时有哪些限制?

C# 在数值库上求解奇异值分解(计算)时有哪些限制?,c#,math,linear-algebra,C#,Math,Linear Algebra,我正在使用Math.NET的奇异分解对一些数据库进行PCA分析。根据列和行的数量,该算法保持不稳定运行(因此我假设它不会收敛) 我认为Math.NET对SVD的实现是基于LAPACK的 所以我想知道这个算法或者我的数据集的特征是否有任何限制,可能导致这种情况 注:数据在每个属性之间似乎没有太多的协方差。对于大多数(如果不是全部)计算奇异值分解的算法,无法保证算法会终止,尽管很少会终止。好的实现,比如LAPACK,将在一定次数的迭代后停止并返回错误 在你的例子中,矩阵的大小大约为100(我假设当你

我正在使用Math.NET的奇异分解对一些数据库进行PCA分析。根据列和行的数量,该算法保持不稳定运行(因此我假设它不会收敛)

我认为Math.NET对SVD的实现是基于LAPACK的

所以我想知道这个算法或者我的数据集的特征是否有任何限制,可能导致这种情况

注:数据在每个属性之间似乎没有太多的协方差。

对于大多数(如果不是全部)计算奇异值分解的算法,无法保证算法会终止,尽管很少会终止。好的实现,比如LAPACK,将在一定次数的迭代后停止并返回错误


在你的例子中,矩阵的大小大约为100(我假设当你说大于大约70时,你的意思不是太多),计算SVD最多需要几秒钟。如果需要更长的时间,您的矩阵可能是库使用的算法不收敛的极少数情况之一。我想说的是,您更可能发现了一个bug,在这种情况下,您可能应该联系库的维护人员。

数据集有多大?矩阵的大小是多少?比大约大。70列和70行我没有收敛。