MATLAB计算INV错误(对于奇异矩阵)

时间:2010-07-09 07:12:10

标签: matlab

MATLAB有时计算INV错误:

参见此示例

[ 8617412867597445*2^(-25), 5859840749966268*2^(-28)]
[ 5859840749966268*2^(-28), 7969383419954132*2^(-32)]

如果你把它放在MATLAB中它没有逆,但在s计算器中它有一个。

发生了什么事?

2 个答案:

答案 0 :(得分:9)

请阅读What every scientist should know about floating point arithmetic

接下来,无论如何都不要计算逆。几乎不需要逆矩阵,除了在教科书中,它便于编写。遗憾的是,许多作者无论如何都不理解这一事实,因为他们从教科书中学到了其他人,他们也不理解逆矩阵一般都是坏事。

由于该矩阵在双精度算术中是数字奇异的,因此该矩阵的逆矩阵是没有意义的。

使用matlab反斜杠操作符通常会比反向操作更好更快。或者使用pinv,它会对问题更加健壮。

答案 1 :(得分:1)

您好我想对Woodchips的回答发表评论,但由于我是新用户,我似乎无法做到这一点,这是一篇非常有趣的文章,当我有时间时我必须更详细地阅读它。

关于矩阵求逆,您总是可以使用'cond'命令来计算矩阵的条件数,对于非奇异矩阵,该值应该接近于1。正如Woodchips建议的那样,如果你需要找到非方矩阵的伪逆,''pinv'会派上用场。