首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Matlab和Octave中inv()和pinv()的输出不相等?

为什么在Matlab和Octave中inv()和pinv()的输出不相等?
EN

Stack Overflow用户
提问于 2013-10-17 09:41:56
回答 3查看 21.2K关注 0票数 15

我注意到,如果A是NxN矩阵,它有逆矩阵。但是inv()和pinv()函数的输出是不同的。-我的环境是Win7x64 SP1,Matlab R2012a,Cygwin Octave 3.6.4,FreeMat 4.2

看看Octave的例子:

代码语言:javascript
复制
A = rand(3,3)
A =
0.185987   0.192125   0.046346
0.140710   0.351007   0.236889
0.155899   0.107302   0.300623

pinv(A) == inv(A)
ans =
0 0 0
0 0 0
0 0 0
  • 在Matlab中运行相同的命令,结果都是相同的ans

  • 并计算了inv(A)*AA*inv(A),得到了八度和Matlab的恒等式3x3矩阵。
  • A*pinv(A)pinv(A)*A的结果是Matlab和FreeMat中的恒等式3x3矩阵。
  • A*pinv(A)的结果是八阶的恒等式3x3矩阵。
  • pinv(A)*A的结果不是八阶的3x3矩阵。

我不知道为什么inv(A) != pinv(A),我已经考虑了矩阵中元素的细节。造成这一问题的原因似乎是浮动精度问题。

点后的10+数字可能与以下所示不同:

  • 6.65858991579923298331777914427220821380615200000000元素在inv(A)(1,1)中的
  • 6.65858991579923209513935944414697587490081800000000元素在pinv(A)(1,1)中的应用
EN

回答 3

Stack Overflow用户

发布于 2013-10-17 10:34:04

在我看来,你似乎回答了你自己的问题。其原因是浮点算法。inv()pinv()的算法并不完全相同,因为pinv()必须能够处理非平方矩阵。因此,答案不会完全相同。

如果您查看pinv(A)*A的值,您会发现它非常接近恒等矩阵。

我得到:

代码语言:javascript
复制
ans =

   1.0000e+00   6.1062e-16  -3.0809e-15
  -5.8877e-15   1.0000e+00   6.3942e-15
   2.4425e-15  -3.0184e-16   1.0000e+00

而不是将矩阵与==进行比较,而是使用< tolerance_limit

代码语言:javascript
复制
c = A*pinv(A);
d = pinv(A)*A;

(c-d) < 1e-10

Sidenote:

x = A^-1*b不应该被解决-- x = inv(A)*b;,而是x = A \ b; --参见the link Shai posted的解释。

票数 9
EN

Stack Overflow用户

发布于 2013-10-17 10:06:39

浮点算法具有一定的精度,不能依赖于相等。为了避免这样的错误,您可以尝试使用matlab的符号工具箱。

非常简单的八度代码行来演示这些问题:

代码语言:javascript
复制
>>> (1/48)*48==(1/49)*49
ans = 0
>>> (1/48)*48-(1/49)*49
ans =  1.1102e-16
>>>
票数 2
EN

Stack Overflow用户

发布于 2021-11-03 15:46:51

利用A=[1,1,0;1,0,1;2,1,1]算法计算了pinv(A) (2级)的伪逆矩阵.A*pinv(A)给出了一个非恒等矩阵,即A*pinv(A)=[0.667, -0.333, 0.333; -0.333, 0.667,0.333; 0.333, 0.333, 0.667].我认为对于奇异矩阵,最好是用svd()手工计算伪逆矩阵.

下面是一些更新:A*pinv(A)本身可能不同于恒等矩阵,因为它是非满秩的。它可能不依赖于pinv(A)的Matlab算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19423198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档