Matlab左除和右除

    xiaoxiao2021-03-25  161

    转自:http://blog.csdn.net/clam_clam/article/details/7184991

    最近编写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以前),而左除则不需要计算逆矩阵直接进行相除。通常右除要快 一点,但左 除可避免被矩阵的奇异性带来的麻烦。 比如下面的例子: [plain]  view plain  copy >> 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.   在看矩阵可逆情况: [plain]  view plain  copy >> 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)
    转载请注明原文地址: https://ju.6miu.com/read-2516.html

    最新回复(0)