zoukankan      html  css  js  c++  java
  • 线性代数03.矩阵的乘法和逆

    本篇为MIT公开课——线性代数 笔记。

    矩阵乘法的运算规则

    1.行乘列

    乘法一般性法则:行乘列得到一个数

    假设有两个矩阵 (A、B) ,并且我们让 (A*B=C), 可以求得矩阵 (C)(i)(j) 列元素:

    [C_{ ext{ij}}=( ext{row$\_$i} ext{at} A) ( ext{column$\_$j} ext{at} B) ]

    即矩阵 (A)(i) 行点乘以矩阵 (B) 中的 (j) 列,就是矩阵 (C)(i)(j) 列的元素。

    注意是 “行*列”。

    例如

    [A=left( egin{array}{cccc} square & square & square & square \ square & square & square & square \ a_{31} & a_{32} & a_{33} & cdots \ square & square & square & square \ square & square & square & square \ end{array} ight) ]

    [B=left( egin{array}{ccccc} square & square & square & b_{14} & square \ square & square & square & b_{24} & square \ square & square & square & b_{34} & square \ square & square & square & cdots & square \ end{array} ight) ]

    则 矩阵 (C) 中 第3行4列元素为:

    [egin{align} C_{34}&=a_{31} b_{14}+a_{32} b_{24}+a_{33} b_{34}+cdots ext{}+a_{3 n} b_{ ext{n4}}\&=sum _{k=1}^n a_{3 k} b_{ ext{k4}} end{align} ]

    前提条件是矩阵 (A) 的总列数 必须和矩阵 (B) 中的总行数相等。

    假设矩阵 (A)(m*n) 矩阵,矩阵 (B)(n*p) 矩阵, 那么 矩阵 (C=A*B), 矩阵 (C)(m*p) 矩阵。

    其实很好理解,原来 矩阵(A) 的一行与矩阵 (B) 的一列的点乘,可以得到矩阵(C) 中的一个元素,那么 (m) 行乘以 (p) 列就可以得到 (m*p) 个元素,所以矩阵 (C)(m*p) 矩阵。

    2.矩阵列的线性组合

    举例:

    [left( egin{array}{ccc} square & square & cdots \ square & square & cdots \ cdots & cdots & cdots \ end{array} ight) left( egin{array}{ccc} square & square & cdots \ square & square & cdots \ cdots & cdots & cdots \ end{array} ight)=left( egin{array}{ccc} square & square & cdots \ square & square & cdots \ cdots & cdots & cdots \ end{array} ight) ]

    [A*B=C ]

    矩阵 (A) 的所有列乘以 (B) 的列1得到矩阵 (C) 的列1,矩阵 (A) 乘以 (B) 的列2得到矩阵 (C) 的列2....

    将矩阵乘法考虑为矩阵乘以向量,矩阵 (B) 可以看成 p 个单独的列向量,只是这里排在一起。用矩阵 (A) 乘以每个列向量,相应得到 矩阵 (C) 的各列。

    矩阵 (C) 中的各列,是矩阵 (A) 中各列的线性组合,矩阵 (B) 表示是怎么样的线性组合。

    3.矩阵行的线性组合

    [left( egin{array}{ccc} square & square & cdots \ square & square & cdots \ cdots & cdots & cdots \ end{array} ight) left( egin{array}{ccc} square & square & cdots \ square & square & cdots \ cdots & cdots & cdots \ end{array} ight)=left( egin{array}{ccc} square & square & cdots \ square & square & cdots \ cdots & cdots & cdots \ end{array} ight) ]

    [A*B=C ]

    同样的例子,我们从矩阵行的角度看,可以看成矩阵 (A) 的每一行乘以矩阵 (B) 所有行,可以得到相应矩阵(C) 的每一行。

    比如矩阵 (A) 的第一行乘以矩阵(B) 的所有行,可以得到矩阵 C的第一行。

    矩阵 (C) 中的各行,是矩阵 (B) 中各行的线性组合,矩阵 (A) 表示是怎么样的线性组合。

    4.列乘行

    如果用矩阵 (A) 一列乘以矩阵 (B) 的一行,将得到一个完整的矩阵。

    例如:矩阵 (A)(m*1) ,矩阵(B)(1*p)

    [left( egin{array}{c} 2 \ 3 \ 4 \ end{array} ight) left( egin{array}{cc} 1 & 6 \ end{array} ight)=left( egin{array}{cc} 2 & 12 \ 3 & 18 \ 4 & 24 \ end{array} ight) ]

    延申

    [left( egin{array}{cc} 2 & 7 \ 3 & 8 \ 4 & 9 \ end{array} ight) left( egin{array}{cc} 1 & 6 \ 0 & 0 \ end{array} ight)=left( egin{array}{c} 2 \ 3 \ 4 \ end{array} ight)left( egin{array}{cc} 1 & 6 \ end{array} ight) +left( egin{array}{c} 7 \ 8 \ 9 \ end{array} ight)left( egin{array}{cc} 0 & 0 \ end{array} ight) ]

    列一乘以行一,列二乘以行二,然后相加。

    5.分块乘法

    我们还可以将矩阵切割成块,对块进行乘法。

    例如:我们将方阵 (A) 切割成4份,方阵 (B) 切割成 4份。

    [left( egin{array}{cc} A_1 & A_2 \ A_3 & A_4 \ end{array} ight).left( egin{array}{cc} B_1 & B_2 \ B_3 & B_4 \ end{array} ight)=left( egin{array}{cc} A_1 B_1+A_2 B_3 & cdots \ cdots & cdots \ end{array} ight) ]

    逆矩阵

    矩阵的逆,不一定存在。

    假设矩阵 (A) 可逆,那么存在一个逆矩阵,我们记为 (A^{-1}),使得

    [A^{-1}*A=I ]

    (I) 是单位矩阵。

    注意这里只是左乘,如果 (A) 是方阵,就存在左乘等于右乘,即

    [A^{-1}*A=A*A^{-1}=I ]

    但如果是非方阵,左乘就不等于右乘。

    逆不存在的情况

    举例:

    [left( egin{array}{cc} 1 & 3 \ 2 & 6 \ end{array} ight) ]

    理由阐述可以从以下不同角度:

    1)这个矩阵由于列向量在同一条直线上,所以他们的线性组合被限定在这条直线上,不存在某个逆矩阵,使得他们相乘后结果为单位矩阵。

    2)从行列式角度,取行列式结果为0(后面学)

    3)假设存在某个非零矩阵 (X) ,使得

    [A*X=0 ]

    那么 (A) 就没有逆矩阵。

    这个例子中,我们就可以找到一个 (X) ,如

    [left( egin{array}{cc} 1 & 3 \ 2 & 6 \ end{array} ight) left( egin{array}{c} 3 \ -1 \ end{array} ight)=left( egin{array}{c} 0 \ 0 \ end{array} ight) ]

    我们可以用反证法证明:假设 (A) 存在逆矩阵,那么存在

    [A^{-1}*A=I ]

    [A^{-1}*A*X=0 ]

    [X=0 ]

    很明显,和前面 (X) 是非0矩阵矛盾。

    结论:不可逆矩阵的列能通过线性组合得到0.

    回归逆存在情况

    再假设一个可逆矩阵 (A),使得

    [left( egin{array}{cc} 1 & 3 \ 2 & 7 \ end{array} ight) left( egin{array}{cc} a & c \ b & d \ end{array} ight)=left( egin{array}{cc} 1 & 0 \ 0 & 1 \ end{array} ight) ]

    看成列的线性组合,就是求解两个线性方程组,

    求解我们可以用“高斯-若尔当”,它能同时处理两个方程组

    [left( egin{array}{cc} 1 & 3 \ 2 & 7 \ end{array} ight) left( egin{array}{c} a \ b \ end{array} ight)=left( egin{array}{c} 1 \ 0 \ end{array} ight)\ left( egin{array}{cc} 1 & 3 \ 2 & 7 \ end{array} ight) left( egin{array}{c} c \ d \ end{array} ight)=left( egin{array}{c} 0 \ 1 \ end{array} ight) ]

    利用“高斯-若尔当”思想一起计算,同时考虑系数矩阵和两个右侧向量,写出增广矩阵,然后对其消元

    [left( egin{array}{cccc} 1 & 3 & 1 & 0 \ 2 & 7 & 0 & 1 \ end{array} ight) ightarrow left( egin{array}{cccc} 1 & 3 & 1 & 0 \ 0 & 1 & -2 & 1 \ end{array} ight) ightarrow left( egin{array}{cccc} 1 & 0 & 7 & -3 \ 0 & 1 & -2 & 1 \ end{array} ight) ]

    第二步就是我们前面学过的高斯消元,即“向下消元”

    而第三步是若尔当消元,即“向上消元”,主元是第二行第二个元素“1”.

    这里我们就求出我们要的 (A) 的逆矩阵为:

    [left( egin{array}{cc} 7 & -3 \ -2 & 1 \ end{array} ight) ]

    因为:

    [E*left[ egin{array}{cc} A & I \ end{array} ight]=[I quad E]=left[Iquad A^{-1} ight] ]

    (E) 表示我们引入的总的消元矩阵,最左边就表示对增广矩阵消元,因为(E*A=I) ,所以(E) 就是(A) 的逆矩阵。

    以上就是求逆的方法和过程。

  • 相关阅读:
    AngularJs 键盘事件和鼠标事件
    Linux的net.ipv4.tcp_timestamps参数
    实战:tcp链接rst场景tcpdump分析
    C++ map使用总结
    C++ 11常见功能介绍:auto,decltype,nullptr,for,lambda
    BLOCK层基本概念:bio,request,request_queue
    C: 字符数组中的空去掉
    代码静态分析工具-splint的学习与使用[转]
    代码分析工具splint安装介绍
    gcc/g++ 如何支持c11/c++11标准编译
  • 原文地址:https://www.cnblogs.com/ckk-blog/p/13443534.html
Copyright © 2011-2022 走看看