矩阵乘法
前提
两个矩阵相乘AB=C,A的列数要等于B的行数,否则无法相乘。
行列相乘
首先是最直接的行列相乘:
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1m...aim...anm⎦⎥⎥⎥⎥⎤
⎣⎢⎢⎢⎢⎡b11...bi1...bm1...............b1j...bij...bmj...............b1h...bih...bmh⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡c11...ci1...cn1...............c1j...cij...cnj...............c1h...cih...cnh⎦⎥⎥⎥⎥⎤
生成的项中
cij=∑l=1mailblj
即左边的一行乘右边的一列生成矩阵的一个元素。
由此也可以直接的看出AB与BA是不同的。
在看看前后维度的变化:A是nm,B是mh,生成的C是n*h。
列相乘
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1m...aim...anm⎦⎥⎥⎥⎥⎤
⎣⎢⎢⎢⎢⎡b11...bi1...bm1...............b1j...bij...bmj...............b1h...bih...bmh⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡c11...ci1...cn1...............c1j...cij...cnj...............c1h...cih...cnh⎦⎥⎥⎥⎥⎤
还是原来的运算,但是我们使用列的线性组合来理解。
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1m...aim...anm⎦⎥⎥⎥⎥⎤
⎣⎢⎢⎢⎢⎡b11...bi1...bm1...............b1j...bij...bmj...............b1h...bih...bmh⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡c11...ci1...cn1...............c1j...cij...cnj...............c1h...cih...cnh⎦⎥⎥⎥⎥⎤
细分到每一列就是:
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1m...aim...anm⎦⎥⎥⎥⎥⎤
⎣⎢⎢⎢⎢⎡b1j...bij...bmj⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡c1j...cij...cnj⎦⎥⎥⎥⎥⎤
即列之间的线性组合:
⎣⎢⎢⎢⎢⎡a11...ai1...an1⎦⎥⎥⎥⎥⎤∗b1j+...+
⎣⎢⎢⎢⎢⎡a1j...aij...anj⎦⎥⎥⎥⎥⎤∗bij+...+
⎣⎢⎢⎢⎢⎡a11...ai1...an1⎦⎥⎥⎥⎥⎤∗bmj=
⎣⎢⎢⎢⎢⎡c1j...cij...cnj⎦⎥⎥⎥⎥⎤
行相乘
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1m...aim...anm⎦⎥⎥⎥⎥⎤
⎣⎢⎢⎢⎢⎡b11...bi1...bm1...............b1j...bij...bmj...............b1h...bih...bmh⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡c11...ci1...cn1...............c1j...cij...cnj...............c1h...cih...cnh⎦⎥⎥⎥⎥⎤
同样的方法处理:
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1m...aim...anm⎦⎥⎥⎥⎥⎤
⎣⎢⎢⎢⎢⎡b11...bi1...bm1...............b1j...bij...bmj...............b1h...bih...bmh⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡c11...ci1...cn1...............c1j...cij...cnj...............c1h...cih...cnh⎦⎥⎥⎥⎥⎤
细分到每一行就是B中行之间的线性组合:
[ai1...aij...aim]
⎣⎢⎢⎢⎢⎡b11...bi1...bm1...............b1j...bij...bmj...............b1h...bih...bmh⎦⎥⎥⎥⎥⎤=
[ci1...cij...cim]
展开后有:
ai1∗[b11...b1j...b1h]+...+
aij∗[bi1...bij...bih]+...+
aim∗[bm1...bmj...bmh]=
[ci1...cij...cim]
列行相乘
这种方式并不那么直观,但在之前的基础上应该可以很好理解:
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1m...aim...anm⎦⎥⎥⎥⎥⎤
⎣⎢⎢⎢⎢⎡b11...bi1...bm1...............b1j...bij...bmj...............b1h...bih...bmh⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡c11...ci1...cn1...............c1j...cij...cnj...............c1h...cih...cnh⎦⎥⎥⎥⎥⎤
将列与行单独的拆开后有:
⎣⎢⎢⎢⎢⎡a1j...aij...anj⎦⎥⎥⎥⎥⎤
[bi1...bij...bih]=
⎣⎢⎢⎢⎢⎡c^11...c^i1...c^n1...............c^1j...c^ij...c^nj...............c^1h...c^ih...c^nh⎦⎥⎥⎥⎥⎤
这里有一个性质是对于得到的矩阵
⎣⎢⎢⎢⎢⎡c^11...c^i1...c^n1...............c^1j...c^ij...c^nj...............c^1h...c^ih...c^nh⎦⎥⎥⎥⎥⎤其所有的行向量都相互平行,所有的列向量也都相互平行。
合并之后有:
∑l=1m
⎣⎢⎢⎢⎢⎡a1l...ail...anl⎦⎥⎥⎥⎥⎤
[bl1...blj...blh]=
⎣⎢⎢⎢⎢⎡c11...ci1...cn1...............c1j...cij...cnj...............c1h...cih...cnh⎦⎥⎥⎥⎥⎤
cij=∑l=1mail∗blj与行列相乘相符。
⎣⎢⎢⎢⎢⎡a11...ai1...an1...............a1j...aij...anj...............a1h...aih...anh⎦⎥⎥⎥⎥⎤+
⎣⎢⎢⎢⎢⎡b11...bi1...bn1...............b1j...bij...bnj...............b1h...bih...bnh⎦⎥⎥⎥⎥⎤=
⎣⎢⎢⎢⎢⎡a11+b11...ai1+bi1...an1+bn1...............a1j+b1j...aij+bij...anj+bnj...............a1h+b1h...aih+bih...ann+bnh⎦⎥⎥⎥⎥⎤(矩阵相加)
分块运算
对于一些大的矩阵也可以进行矩阵的划分,化成几块来进行运算,但是划分之后的矩阵块也要符合乘法运算的条件(即块状的矩阵左边的列数等于右边的行数)。
[A11A21A12A22][B11B21B12B22]=[A11B11+A12B21A21B11+A22B21A11B12+A12B22A21B12+A22B22]
逆
A−1A=E=AA−1
(首先是方阵)可逆矩阵(非奇异矩阵)的左逆等于右逆,乘积为单位矩阵
奇异矩阵
首先看一下这个例子
[1236]它是否含有逆矩阵?
我们把逆矩阵看作对原矩阵的线性组合处理,那么显然我们找不到一种矩阵变化来将
[1236]变为单位矩阵(两行之间平行,两列之间也平行,无法转化为E的形式),所以有存在任意两行或两列平行的矩阵为奇异矩阵。
或者我们可以换一种定义:如果一个方阵没有逆,我们可以通过寻找一个非零向量X使得
AX=0成立来描述。(线性相关性)比如上面的矩阵
[1236]对应的X是
[3−1]。
简单的证明一下:
假设
A存在逆矩阵,那么有
A−1AX=0,即
X=0,与题目所给的条件矛盾。
求解非奇异矩阵(Gauss-Jordan)
现在我们有
[1237]
[abcd]=
[1001]这个方程,我们的目的就是求出对应的a,b,c,d,由上面的乘法思想我们使用列向量来处理:
[1237]
[ab]=
[10]和
[1237]
[cd]=
[01]于是问题又变成了解方程组的形式了。(Gauss-Jordan)只不过是同时解多个方程组。
先看看这样的增广矩阵
[12371001]是一种
[AE]的形式,我们的目的是将其化成这样的
[EA−1]形式,而实际我们的变换的过程就相当于
[A−1]
[AE]
实际变化一下有:
[1−201]
[12371001]=
[10311−201]
[10−31]
[1−201]
[12371001]=
[10017−2−31]
即:
[7−2−31]
[12371001]=
[10017−2−31]
([A−1]
[AE]=[EA−1])