为什么在MatLab中使用(^-1)矩阵连续求逆会出现问题?而使用inv函数计算的话,就没问题。

咨询大家一个问题:为什么在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值