MATLAB有时计算INV错误:
参见此示例
[ 8617412867597445*2^(-25), 5859840749966268*2^(-28)]
[ 5859840749966268*2^(-28), 7969383419954132*2^(-32)]
如果你把它放在MATLAB中它没有逆,但在s计算器中它有一个。
发生了什么事?
答案 0 :(得分:9)
请阅读What every scientist should know about floating point arithmetic
接下来,无论如何都不要计算逆。几乎不需要逆矩阵,除了在教科书中,它便于编写。遗憾的是,许多作者无论如何都不理解这一事实,因为他们从教科书中学到了其他人,他们也不理解逆矩阵一般都是坏事。
由于该矩阵在双精度算术中是数字奇异的,因此该矩阵的逆矩阵是没有意义的。
使用matlab反斜杠操作符通常会比反向操作更好更快。或者使用pinv,它会对问题更加健壮。
答案 1 :(得分:1)
您好我想对Woodchips的回答发表评论,但由于我是新用户,我似乎无法做到这一点,这是一篇非常有趣的文章,当我有时间时我必须更详细地阅读它。
关于矩阵求逆,您总是可以使用'cond'命令来计算矩阵的条件数,对于非奇异矩阵,该值应该接近于1。正如Woodchips建议的那样,如果你需要找到非方矩阵的伪逆,''pinv'会派上用场。