当我们用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