【问题标题】:Matlab eigs fail with large matrixMatlab eigs因大矩阵而失败
【发布时间】:2013-03-26 03:32:27
【问题描述】:

在 matlab 中,我使用函数“eigs()”来获取大矩阵 (5000x5000) 的一些(大约 10 个)最小特征向量。像这样:

[V,UU] = eigs(A, 10,'sm');

经过一番尝试,我发现矩阵'eigs()'能够处理的最大尺寸在1300到1500之间。

对于更大的矩阵,它会弹出错误消息,例如'(A-sigma*I)is single。偏移是一个特征值。或有关命令行窗口中的“APPAPK”(使用“sr”时)的内容。

我从谷歌得到了一些关于这些错误的信息,但它们是关于一些我不太明白的内部代码或定理(听起来像一个)。

那么,我想知道 eigs 是否有任何技巧可以使其适用于大型矩阵?

感谢您的时间和帮助。

【问题讨论】:

  • 你的矩阵稀疏吗?
  • 您可以尝试添加一个大小相同的单位矩阵,例如: A = A + k*eye(size(A,1));这里k是一个小于1的实验系数
  • faith_k,你的方法对我有用。但是你能解释一下为什么在原始矩阵中添加一个非常小的数字可以解决问题吗?顺便说一句,请将您的答案放在一个线程中,以便我可以选择您的答案并完成我的问题。
  • @fatih_k 你能把它作为答案发布,这样问题就不会保持开放了吗?

标签: matlab sparse-matrix


【解决方案1】:

您可以尝试添加一个大小相同的单位矩阵,例如: A = A + k*eye(size(A,1));这里k是一个小于1的实验系数。这样做可以保证矩阵A是非奇异的

【讨论】:

    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多