最近编写matlab 程序老是被 \  /  搞混淆。
运算符                                             名称                说明
/(向右倒称为右除)                    右除                AB=C    A=C/B
\(向左倒称为左除)                    左除                AB=C    B=A\C
B\A 就是对应线性方程B*X=A 的解。

\   左除

/   右除

1.  A\B=inv(A)*B (A左除B=A的逆乘以B)

>> 3\5

ans =

    1.6667

3的逆=三分之一,再乘以5.

2. A/B=A*(inv(B))   (A右除B等于A乘以B的逆)

>> 3/5

ans =

    0.6000

在传统的matlab 算法中 右除是先计算矩阵的逆再相乘(matlab 6以前),而左除则不需要计算逆矩阵直接进行相除。通常右除要快 一点,但左 除可避免被矩阵的奇异性带来的麻烦。
比如下面的例子:
>> G

G =

     1     2

>> P

P =

1	1

>> Y=G*P

Y =

     3

>> G\Y %左除,结果不是P,但也满足方程。所以 G\Y 结果不一。

ans =

         0
1.5000
>> G*M

ans =

2	%结果也为3

%%%%%%%%%%%%%%%%%%%%%%%%matlab 6.0 以后右除也可以了,不在先inv(P)。
>> Y/P

ans =

     3     0

>> E=Y/P

E =

     3     0

>> E*P

ans =

     3

>> P

P =

     1
     1

但如果inv(p) 就会出现
??? Error using ==> inv
Matrix must be square.

在看矩阵可逆情况:
>> A

A =

     1     2
     2     1

>> B

B =

     1     2
     2     3

>> C=A*B

C =

     5     8
     4     7

>> C/B    %%%= A

ans =

     1     2
     2     1
>> A\C    %%%=B

ans =

     1     2
     2     3

>> C*inv(B)  %%  C/B=C*(inv(B))   (C右除B等于C乘以B的逆)

ans =

     1     2
     2     1

>> inv(A)*C  %%验证了A\C=inv(A)*C (A左除C=A的逆乘以C)

ans =

    1.0000    2.0000
2.0000    3.0000

总结:
        为了方便记忆对哪个矩阵进行逆运算,规律如下:
        在可逆形式下转换成逆矩阵,右除对右边矩阵逆,左除对左边矩阵逆。
        1.     C/B=C*(inv(B))  (C右除B等于C乘以B的逆)
        2.     A\C=inv(A)*C (A左除C=A的逆乘以C)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐