【问题标题】:Matlab taking inverse of a Vandermonde matrixMatlab取Vandermonde矩阵的逆
【发布时间】:2016-10-14 10:31:06
【问题描述】:

我有一个矩阵 M,它有 576 行和 15 列。第一列全为 1。第二列从 1 开始,逐个增加到 576。第三列是第二列的平方。第四列是第二列的三次方。第五列是第二列的四次方。它是这样的。最后第十五列是第二列的十四次方。该操作是将矩阵 M 的转置与自身相乘,并对结果取逆。但是Matlab会发出这样的警告;警告:矩阵接近奇异或严重缩放。结果可能不准确。 RCOND = 1.889839e-79。这是一种取反的方法吗?我也试过这个操作符\,但同样的警告出现了。

【问题讨论】:

  • RCOND = 1.889839e-79?我从来没有见过这么低的数字......无论如何,这是因为行列式非常接近于零。看看pinvsvd
  • 关于“如何反转矩阵”的问题 -> A:你不会!你需要矩阵的逆矩阵做什么?通常你可以在不计算显式逆的情况下做到这一点
  • 虽然在 MATLAB 中对矩阵求逆的一般情况下重复是正确的,但在这种特定情况下,Gabe 的答案要好得多,因为它可以通过分析计算。请edit这个问题考虑到这是一个所谓的范德蒙德矩阵,之后重复将不再适用。
  • @Stewie pind 没有给出我预期的结果。

标签: matlab matrix matrix-inverse


【解决方案1】:

Vandermonde 矩阵在这里有一个解析逆形式:

https://proofwiki.org/wiki/Inverse_of_Vandermonde_Matrix

为了避免Matlab的反演,你可以手动使用这个反演,然后乘以它的转置,你会得到相同的表达式。

您还可以使用这种分析形式来更好地分析和理解为什么您的矩阵会出现病态(检查爆炸极点)。

【讨论】:

  • 我没有取 M 的倒数。我取的是 M 的转置乘法 M 的倒数。
  • 对,这就是为什么我告诉你“使用这个逆然后乘以它的转置”(基本矩阵属性)
  • 好吧,我试试。非常感谢!
猜你喜欢
  • 2016-06-05
  • 2013-02-28
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多