咨询大家一个问题:为什么在MatLab中使用(^-1)矩阵连续求逆会出现问题?而使用inv函数计算的话,就没问题。
首先输入一个矩阵:
a=[1 2; 3 4]
这里显示没问题。
a =
1 2
3 4
进行第一次 ^-1 计算,结果也没问题:
a^-1
ans =
-2.0000 1.0000
1.5000 -0.5000
再次进行连续的 ^-1 计算,结果也没问题:
a-1-1
ans =
1.0000 2.0000
3.0000 4.0000
从第三次开始,连续使用 ^-1 计算的话,结果就出问题了,回不到逆矩阵了(按理说应该能够回到逆矩阵上):
a-1-1^-1
ans =
1.0000 2.0000
3.0000 4.0000
a-1-1-1-1
ans =
1.0000 2.0000
3.0000 4.0000
不过,如果使用 () 的方式进行标定的话,计算也没问题。这样的话,是否说明 Matlab 中对于 ^-1 的符号判断和计算次序与我们平时的理解不一样呢?
——————————
为了便于大家测试,我把上面的过程贴在这里了:
a=[1 2; 3 4]
a^-1
a-1-1
a-1-1^-1
a-1-1-1-1
————————
以下是带有括号()的方式,反复求逆矩阵是没问题的:
a=[1 2; 3 4]
(a)^-1
((a)-1)-1
(((a)-1)-1)^-1
(((a-1)-1)-1)-1
a=[1 2; 3 4]
a =
1 2
3 4
(a)^-1
ans =
-2.0000 1.0000
1.5000 -0.5000
((a)-1)-1
ans =
1.0000 2.0000
3.0000 4.0000
(((a)-1)-1)^-1
ans =
-2.0000 1.0000
1.5000 -0.5000
(((a-1)-1)-1)-1
ans =
1 2
3 4
——————————
以下显示:使用 inv() 函数连续求逆没问题:
a=[1 2; 3 4]
a =
1 2
3 4
inv(a)
ans =
-2.0000 1.0000
1.5000 -0.5000
inv(inv(a))
ans =
1.0000 2.0000
3.0000 4.0000
inv(inv(inv(a)))
ans =
-2.0000 1.0000
1.5000 -0.5000
inv(inv(inv(inv(a))))
ans =
1 2
3 4
——————————
CZ @ 2020.05.03 11:07:39