关于matlab中矩阵与逆矩阵为何相乘不等于单位阵的问题

当我们用matlab计算矩阵和逆矩阵时,结果往往不等于单位阵

如下:

>> a=magic(4)

a =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> b=a*inv(a)
警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND =  4.625929e-18。 

b =

    1.5000         0    2.0000    0.5000
   -1.0000   -2.0000    3.0000    2.2500
   -0.5000   -4.0000    4.0000    0.5000
   -1.1250   -5.2500    5.3750    3.0313
 

 上边写到矩阵接近奇异值,我们计算下他的行列式


>> c=det(a)

c =

   5.1337e-13

很明显行列式趋近于0,而此时是没有逆矩阵的,因此计算会有很大误差

我们换个行列式:

>> D=round(rand(4,4)*100)

D =

    96    42    66    68
    49    92     4    76
    80    79    85    74
    14    96    93    39

>> det(D)

ans =

  -8.1802e+05

这样就可以计算了

>> D*inv(D)

ans =

    1.0000   -0.0000    0.0000   -0.0000
    0.0000    1.0000         0   -0.0000
         0         0    1.0000   -0.0000
   -0.0000   -0.0000    0.0000    1.0000
 

你可能感兴趣的:(关于matlab中矩阵与逆矩阵为何相乘不等于单位阵的问题)