线性代数来源于线性方程组。 考虑线性方程组如下:
{2x−y=0−x+2y=3
\begin{cases} 2x-y=0\\ -x+2y=3 \end{cases}
写成矩阵形式为:
[2−1−12]∗[xy]=[03]
\begin{bmatrix}2 & -1 \\-1 & 2\end{bmatrix}* \begin{bmatrix}x\\y\end{bmatrix}= \begin{bmatrix}0 \\ 3\end{bmatrix}
矩阵的形式记做
AX=b
AX=b
对于该线性方程组或者对应的系数矩阵来说,有两种理解方式
所求的(x,y)(x,y),可以被视为每一行所构成的超平面的交点。
所求的(x,y)(x,y),可以被视为每一列的线性组合得到bb。
AX=b
AX=b 有两种计算bb的方法 1. A每一列的线性组合,参数是X的列向量 2. A的行与X的列的点积
Q: 对A来说什么样的线性组合可以得到bb -> 求解X的问题 是否针对任意bb,都可以找到AA的列向量的线性组合与其对应 ->解的存在问题 AA的列向量的线性组合所构成的向量空间是什么样的 -> 解的存在问题,如果包含了所有b的响亮空间,那么对任意b解肯定存在
A: 只要矩阵是非奇异,可逆的矩阵(non-singular,invertible),那么X肯定有解,也就是针对任意b都能找到对应A的线性组合的X,也就是A的线性组合构成了整个解空间。
什么情况下X无解,无解的情况其几何意义又是什么呢? 消元法(elimination)
之前讨论了线性代数的由来——线性方程组的求解问题。
线性代数矩阵形式的解有两种理解,一种是row picture,理解成不同超平面的交点;另一种是column picture,理解成矩阵列的线性组合。
那么,对于b,解是否存在呢。可以理解成矩阵A的列的线性组合是不是能够包含整个解空间。如果包含整个解空间,那么对于任意的b解肯定都是存在的。否则的话得看对应的b是不是在这个解空间中。
那么,解是否唯一呢。得看矩阵A的列的情况,如果矩阵A的列不存在线性组合的等式那么解存在等于解唯一,否则不唯一。
那么,具体的解是什么呢? 用什么方法求解呢?
Elimination–Sucess and Failure BackSubstitution Elimination Matrix Matrix Multiplication
elimination
是求解矩阵解的重要方法,matlab就是用这个的哦!
利用elimination
,既可以判断解是不是存在,还可以判断解唯不唯一。
⎡⎣⎢100010001⎤⎦⎥
\begin{bmatrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 1\end{bmatrix}
这种情况下,解肯定存在并且是唯一的。
消元成功,pivot
没有0的现象。
⎡⎣⎢100010000⎤⎦⎥
\begin{bmatrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 0\end{bmatrix}
这种情况下,解不一定存在,即使存在解也不唯一。
消元失败,pivot
出现0的现象。
⎡⎣⎢100010001000⎤⎦⎥
\begin{bmatrix}1 & 0 & 0 & 0\\0 & 1 & 0 & 0 \\0 & 0 & 1& 0\end{bmatrix}
这种情况下,解肯定存在但是不唯一。
消元成功,pivot
没有0的现象。
一般来说,我们喜欢好的矩阵,好的矩阵就是可以消元成功,主元都不是0的矩阵,这样的矩阵解肯定存在所以喜欢啊。
举个例子
AX=b
AX=b
A=⎡⎣⎢130284111⎤⎦⎥
A = \begin{bmatrix}1 & 2 & 1\\3 & 8 & 1\\0 & 4 & 1\end{bmatrix} 将A进行消元,首先r1不变,r2-3*r1,得到
A′=⎡⎣⎢1002241−21⎤⎦⎥
A' = \begin{bmatrix}1 & 2 & 1\\0 & 2 & -2\\0 & 4 & 1\end{bmatrix}
r1不变,r2不变,r3-2*r2得到
A′′=⎡⎣⎢1002201−25⎤⎦⎥
A'' = \begin{bmatrix}1 & 2 & 1\\0 & 2 & -2\\0 & 0 & 5\end{bmatrix}
这样以后,就得到了消元后的矩阵,因为主元都不是0,所以认为是好的矩阵,这个矩阵包含了所有三维空间,所以对于任意b解肯定都是存在的。
这个矩阵叫做上三角矩阵
,其行列式为主对角元的乘积。
Matlab解矩阵的时候,也是先不考虑b,直接先计算A的消元过程的。
同时,考虑一下,碰到主元为0怎么办,可以行交换,直到主元下面都为0时,这时候消元失败。
消元后得到了消元矩阵,考虑b如果一起消元的话,最后会得到
A′′=⎡⎣⎢1002201−25|||26−10⎤⎦⎥
A'' = \begin{bmatrix}1 & 2 & 1& | & 2\\0 & 2 & -2& | & 6\\0 & 0 & 5& | & -10\end{bmatrix}
这个包含b的矩阵叫做增广矩阵(augumented matrix
)。
根据这个增广矩阵,可以解出X。
上面的消元过程,采用的是每一行的加减乘除运算,那么,能不能采用矩阵变换的形式呢? 答案是可以的。
首先,回顾下矩阵的右乘,等于矩阵列的线性组合。
[acbd]∗[xy]=x∗[ac]+y∗[bd]
\begin{bmatrix}a & b \\c & d \end{bmatrix} *\begin{bmatrix}x \\y\end{bmatrix} = x*\begin{bmatrix}a \\c \end{bmatrix} + y*\begin{bmatrix} b \\d \end{bmatrix} 那么,消元的过程是矩阵行变换的过程,其等效于矩阵的左乘,等于矩阵行的线性组合
[xy]∗[acbd]=x∗[ab]+y∗[cd]
\begin{bmatrix}x & y\end{bmatrix} * \begin{bmatrix}a & b \\c & d \end{bmatrix} = x * \begin{bmatrix}a & b\end{bmatrix} + y * \begin{bmatrix}c & d\end{bmatrix}
总结起来,右乘一个列向量代表矩阵列的线性组合,左乘一个行向量代表矩阵行的线性组合。
那么,单位矩阵也就是不论左乘还是右乘都不会改变原来的矩阵,下面的两个矩阵分别可以以右乘还有左乘的观点来看。
[acbd]∗[1001]
\begin{bmatrix}a & b \\c & d \end{bmatrix} *\begin{bmatrix}1 & 0\\0 & 1\end{bmatrix}
[1001]∗[acbd]
\begin{bmatrix}1 & 0\\0 & 1\end{bmatrix} * \begin{bmatrix}a & b \\c & d \end{bmatrix}
同理,置换矩阵就是将对应的行交换,也是根据左乘表示行的线性组合的道理来看的。
消元的过程,也可以表示成原来的矩阵A,不断左乘矩阵,进行行变换的结果。
左乘的矩阵叫做初等矩阵,elementary matrix
。
因此,消元的过程可以表示为:
E32E31E21A=U
E_{32}E_{31}E_{21}A=U
上面的讨论,看到通过对矩阵A,不断进行左乘的初等行变换,能够得到上三角矩阵,完成消元过程。 那么,思考这个步骤可不可以一步到位,直接得到
E=E32E31E21
E = E_{32}E_{31}E_{21}
使得
EA=U
EA=U
矩阵乘法满足结合律associative low
,不满足交换律commutative low
。
上面,讨论了如何通过A得到U,那么反过来如何通过U得到A呢。
考虑初等变换E21E_{21},
⎡⎣⎢130010001⎤⎦⎥∗⎡⎣⎢1−30010001⎤⎦⎥=⎡⎣⎢100010001⎤⎦⎥
\begin{bmatrix}1 & 0 & 0 \\ 3 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} * \begin{bmatrix}1 & 0 & 0 \\ -3 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix}1 & 0 & 0 \\ 0 &1 & 0 \\ 0 & 0 & 1 \end{bmatrix}
E−1E=I
E^{-1} E = I
上面,首先介绍了消元。通过消元,我们可以知道对应的解是否存在,如果存在对应的解是多少。 同时,矩阵乘法的思考方式,可以从右乘列的线性组合以及左乘行的线性组合两个角度去考虑问题。
矩阵乘法,4种思考方式 矩阵的逆,是否存在,如果判断思考逆矩阵的存在性 Gauss-Jordan法,通过增广矩阵,计算逆矩阵
对于矩阵
AB=C
AB=C 其中,A∈Rmn,B∈Rnp,C∈RmpA \in \mathbb{R}^{mn},B \in \mathbb{R}^{np},C \in \mathbb{R}^{mp}
C中的每一个元素都等于A中对应的行乘以B中对应的列。 这是最普通的一种方法。
C的第i列可以看做A中不同列的线性组合(所以C的行数肯定得和A的行数相等啊),线性组合的参数是B的第i列。
C的第i行可以看做是B的所有行的线性组合,线性组合的参数是A的第i行(所以C的列数肯定得和B相等啊)。
A的向量列乘以B的向量行,可以直接得到完整的C形状。
比如A,B都是维度为2的square matrix。 那么,只需要计算两次列乘以行,然后相加就可以啦。
可以block,然后不同的block按照矩阵乘法的规则进行计算。
矩阵逆的物理意义就是,通过行变换(或者列变换)得到了一个东西,然后在通过行变换变回去。 如果可以变回去,那么矩阵的逆就是存在的啊。
矩阵逆的性质:
non-singular, invertible
的矩阵的逆为什么不存在,不存在究竟意味着什么?
[1236]∗[acbd]=[1001]
\begin{bmatrix}1 & 3\\2 & 6\end{bmatrix} * \begin{bmatrix}a & b \\c & d \end{bmatrix} = \begin{bmatrix}1 & 0\\0 & 1\end{bmatrix}
矩阵逆什么时候存在,存在意味着什么?
对于矩阵
[1237]
\begin{bmatrix}1 & 3\\2 & 7\end{bmatrix} 7意味着上帝7天创造了世界,7天创造了亚当,用亚当的第7根肋骨创造了夏娃。
可逆意味着 1. 行列式不等于0 2. 矩阵的列可以线性组合得到完整的n维空间
矩阵的逆很重要,其解释参考上文。 下面讨论逆的计算。
[1237]∗[acbd]=I
\begin{bmatrix}1 & 3\\2 & 7\end{bmatrix} * \begin{bmatrix}a & b\\c & d\end{bmatrix} = I
还是按照A的列的组合的方式,拆开成两个方程组,每个方程组包含两个未知数。
Gasuu-Jodan的方法,是将这两个方程组同时解。 其理念,可以概述为
[A|I]=[I|A−1]
[A | I] = [I | A^{-1}] 其中,A变换到U主要是Gauss的贡献,U变换成I主要是Jordan的贡献。
这么做的根据市,行变换相当于不断左乘初等矩阵。
E∗[A|I]=[I|A−1]
E*[A | I] = [I | A^{-1}] 这样,用Gauss-Jordan解出了逆。
上篇主要讲解了逆矩阵,逆矩阵的物理意义就是原来的矩阵还可以变换回去。如果AX=0AX=0,那么逆矩阵不存在,因为原有矩阵A存在线性相关的列,也就是有一部分列被浪费了,无法构成完整的空间。 同时,还讲解了逆的求解。逆的求解,采用Gauss-Jordan法,通过不断地行变换求出来。
E∗[A|I]=[I|A−1]
E*[A | I] = [I | A^{-1}]
首先,回顾了矩阵逆的一些性质 然后讲了EA=UEA=U,但是因为另外一种形式的更好性质,既可以根据变换,不用计算直接得到E−1E^{-1} 有A=LUA=LU,并对初等变换的的复杂度进行了分析。 最后,考虑了在初等变换出现行交换的情况,具体探讨了置换矩阵的特点与性质。
ABAB的逆矩阵是B−1A−1B^{-1}A^{-1} ABAB的转置是BTATB^TA^T ATA^T的逆矩阵是(A−1)−T{(A^{-1}})^{-T}
首先,回顾下初等变换EA=UEA=U,AA通过行变换变成了上三角矩阵UU。
[1−401]∗[2817]=[2013]
\begin{bmatrix}1 & 0\\-4 & 1\end{bmatrix} * \begin{bmatrix}2 & 1\\8 & 7\end{bmatrix} = \begin{bmatrix}2 & 1\\0 & 3\end{bmatrix} 但是通常,写作A=LUA=LU或者进一步写成A=LDUA=LDU,L=E−1L=E^{-1},也就是
[2817]=[1401]∗[2013]=[1401]∗[2003]∗[11/203]
\begin{bmatrix}2 & 1\\8 & 7\end{bmatrix} = \begin{bmatrix}1 & 0\\4 & 1\end{bmatrix} * \begin{bmatrix}2 & 1\\0 & 3\end{bmatrix} = \begin{bmatrix}1 & 0\\4 & 1\end{bmatrix} * \begin{bmatrix}2 & 0\\0 & 3\end{bmatrix} * \begin{bmatrix}1 & 0\\1/2 & 3\end{bmatrix}
下面考虑三维的情况,A经过初等行变换变成U(no row exchange)
E32E31E21A=U
E_{32}E_{31}E_{21}A = U 也就是
EA=U
EA=U 进行A的LU分解,也就是
A=E−1U=LU
A = E^{-1}U=LU 用LU分解的好处主要是变换不会产生冲突,L不需要计算(E需要计算每个小E的乘积),直接带入系数就可以了。
比如先来看E32E21=EE_{32}E_{21}=E
⎡⎣⎢10001−5001⎤⎦⎥∗⎡⎣⎢1−20010001⎤⎦⎥=⎡⎣⎢1−21001−5001⎤⎦⎥
\begin{bmatrix}1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -5 & 1 \end{bmatrix} * \begin{bmatrix}1 & 0 & 0 \\ -2 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix}1 & 0 & 0 \\ -2 &1 & 0 \\ 10 & -5 & 1 \end{bmatrix} 再来看E−121E−132=LE_{21}^{-1}E_{32}^{-1}=L
⎡⎣⎢120010001⎤⎦⎥∗⎡⎣⎢100015001⎤⎦⎥=⎡⎣⎢120015001⎤⎦⎥
\begin{bmatrix}1 & 0 & 0 \\ 2 &1 & 0 \\ 0 & 0 & 1 \end{bmatrix}* \begin{bmatrix}1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 5 & 1 \end{bmatrix} = \begin{bmatrix}1 & 0 & 0 \\ 2 &1 & 0 \\ 0& 5 & 1 \end{bmatrix} 也就是说,使用L而不使用E,可以避免冲突产生10,另外2和5的系数都是进行变换的时候本行系数的倒数,也比较好记忆。 此外,通过L,可以把每一步的所有初等变换,也就是所有的EE都能够看到。比如上面例子中的是先−2∗r2−r1-2*r2-r1,再−5∗r3+r2-5*r3+r2。 L,代表了所有的变换过程,A代表变换前的原始过程,U代表变换后的上三角矩阵。
考虑整个的A=LU的分解过程,其实质也就是矩阵A消元的过程,下面仅计算A得到U的过程,也就是消元过程的复杂度,得到了消元过程L也自动求出来啦。(不考虑行交换的过程)
对于n∗nn*n的矩阵,每加乘一次算一次运算,比如2*3+5就算一次运算。
那么,大约需要∑nk=1k2\sum_{k=1}^n k^2运算,也就是13n3\frac{1}{3} n^3(考虑微积分是连续情况下的求和,线代是离散情况下的) 如果再考虑bb,进行增广矩阵的消元,那么需要13n3+12n2\frac{1}{3} n^3+ \frac{1}{2}n^2次运算 所以说,计算的复杂度上,A的复杂度高于b的复杂度。
上面讨论的都是row不可以交换的情况,如果可以交换,那么交换的矩阵就叫做置换矩阵,permutation matrix
。
对于3*3的矩阵,置换矩阵一共有1+3+2=6个。 置换矩阵有一些性质,在这个置换矩阵群里面(3*3的群大小是6),两两相乘还是在这里面,并且每个矩阵的逆也在这里面。 并且,对于置换矩阵,有PT=P−1P^T=P^{-1}
对于4*4的置换矩阵,一共有24个。
前面,主要讲了求解线性方程组的矩阵形式,可以转化成求X矩阵向量的问题,解决的方法是消元法,不考虑行交换的话,是EA=UEA=U,整体的复杂度是O(n3)O(n^3),因为理解的便宜性,选择A的LU分解, 也就是A=LU=LDUA=LU=LDU。 此外,简单介绍了置换矩阵,置换矩阵的特点是自己组成了一个群,相乘取逆取转置都在这个群里面,并且PT=P−1P^T = P^{-1}
这里,继续介绍了转置矩阵,还有置换矩阵的一些特点。
接下来,引入了线性代数的核心——Vector Space
,介绍了线性空间的含义,子空间以及列空间。
前面讨论的A的LU分解,没有考虑行交换的情况,如果考虑行交换的话,可以写作下面的,P代表了行交换的步骤(P1*P2还在P的群里面),L代表了行的线性组合,系数可以直接得到,U代表消元后的上三角矩阵。
PA=LUPA=LU
对于n行的矩阵,置换矩阵一共有n!n!个。
置换矩阵还有些性质:
对称矩阵,也是种特殊的矩阵,有如下性质
同时,还可以通过矩阵的转置得到对称矩阵,这个在工程中应用很多的。
(RTR)T(R^TR)^T = RTRR^TR (RRT)T(RR^T)^T = RRTRR^T
定义:由一组向量的线性组合所构成的空间,在空间内部对于向量加法和数乘封闭,零向量肯定在任何向量子空间里。
比如R2\mathbb{R^2},R3\mathbb{R^3},Rn\mathbb{R^n}等。
举个例子R2\mathbb{R^2}的所有向量子空间
同理,R3\mathbb{R^3}的向量子空间包括本身,过原点的平面,过原点的直线,零点。
下面,考虑向量空间的矩阵表示形式,可以表示为矩阵的列向量的线性组合,叫做列空间。
比如
A=⎡⎣⎢12423−5⎤⎦⎥
A = \begin{bmatrix}1 & 2\\ 2 & 3 \\4 & -5 \end{bmatrix}
这个构成的列空间C(A)C(A)表示三维空间中两个列向量的线性组合,表示的是经过原点的一个平面。 但是,如果这两个列向量是成比例的,也可能表示的是三维空间中的一个直线。
下面,将阐述如何用向量空间的思想去思考AX=bAX=b。