2010-07-09 158 views
-1

MATLAB计算INV错误有时:MATLAB计算INV错误(奇异矩阵)

见这个例子

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

如果你把这个在MATLAB它没有逆但在计算器不但具有一。

这是怎么回事?

+7

MATLAB告诉你矩阵对于工作精度是单数的。无论如何,你为什么需要反向? MATLAB的反斜杠运算符更有用。 – Edric 2010-07-09 10:30:04

回答

9

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

下,不反正计算倒数。一个逆矩阵几乎是不必要的,除了在书写方便的教科书中。可悲的是,许多作者无论如何都不理解这个事实,因为他们从其他人的教科书中学到了东西,他们也没有意识到逆矩阵一般是不好的。

由于该矩阵是在双精度算术数值奇异,该矩阵的逆是无意义的。

使用MATLAB中的反斜杠运营商将普遍比将逆更好更快发展。或者使用pinv,这会对问题更加强大。

1

您好我想对木片的回答发表评论,但因为我是一个新用户,我似乎无法做到这一点,这是一个非常有趣的文章,我必须详细阅读它,当我有时间。 ..

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

+1

你说cond对于一个非奇异的矩阵将是一个接近统一的东西。这种说法可能会让一些人感到困惑,因为它只是一个罕见的矩阵,它的条件编号接近于1.问题是当条件编号比1大几个数量级时。你是正确的,cond是诊断问题的非常有用的工具。 – 2012-07-31 01:59:03