我注意到如果A是NxN矩阵并且它具有逆矩阵.但是inv()和pinv()函数输出是不同的. - 我的环境是Win7x64 SP1,Matlab R2012a,Cygwin Octave 3.6.4,FreeMat 4.2
看看Octave的例子:
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
Run Code Online (Sandbox Code Playgroud)
ans通过上面运行在Matlab同一命令的结果.inv(A)*A或A*inv(A),结果是Octave和Matlab中的身份3x3矩阵.A*pinv(A)和pinv(A)*A在Matlab和FreeMat身份3x3矩阵.A*pinv(A)是Octave中的身份3x3矩阵.pinv(A)*A是不是在倍频身份3x3矩阵.我不知道原因 inv(A) != pinv(A),我已经考虑了矩阵中元素的细节.这似乎是导致这个问题的浮动精度问题.
点点后10位数可能不同,如下所示:
6.65858991579923298331777914427220821380615200000000inv(A)(1,1)反对的元素
6.65858991579923209513935944414697587490081800000000 元素 pinv(A)(1,1)
precision matlab floating-accuracy matrix-inverse numerical-analysis