【问题标题】:avoid matrix inverse warning in matlab避免matlab中的矩阵逆警告
【发布时间】:2013-01-14 09:07:17
【问题描述】:

我正在使用具有不同数据精度的 6x6 矩阵。当我尝试在 MATLAB 中对该矩阵求逆时,我通常会得到 InfNaN 作为所有数据,并且 MATLAB 会引发警告:

矩阵对于工作精度来说是奇异的。

有没有办法避免它并获得正确的结果?

【问题讨论】:

  • 这个问题可能更适合math.stackexchange.com
  • hmm... 它的矩阵逆使用 matlab 和 im 使用 inv 函数。我不认为这是一个“纯粹的”数学问题
  • Matlab inv 没有魔法。它仅在线性代数允许/允许反转时才有效。您收到此错误是因为您尝试执行数学上未定义的操作。您应该向可以帮助您解决问题的数值分析人员寻求建议。
  • 奇异矩阵意味着其行列式为零。为了计算逆,行列式必须不为零。我的建议是在使用某些计算机应用程序之前阅读一些代数基础书籍。
  • 感谢您的“建议”并感谢您的回答。

标签: matlab matrix matrix-inverse


【解决方案1】:

您的矩阵似乎秩不足。只有满秩矩阵才能被稳健地反转。
您可以通过在原始单位矩阵中添加一个小的单位矩阵来规避您的问题。

 A = rand(6,5);
 A = A*A'; %' symmetric rank 5 matrix
 iA = inv(A); % results with NaNs and infs A is singular
 iAs = inv( A + eye(6)*1e-3 ); % add small (1e-3) elements to diagonal - this should help

【讨论】:

  • 有什么方法可以确定应该将哪个值添加到对角线元素?
  • @AbhishekThakur - 这正是 math.stackexchange.com 的问题
猜你喜欢
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多