先看看以下两个矩阵的乘法:
a=(1000001001000001)b=(1111222233334444)ab=(1111333322224444)a=\begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ b=\begin{pmatrix} 1 & 1 & 1 & 1\\ 2 & 2 & 2 & 2\\ 3 & 3 & 3 & 3\\ 4 & 4 & 4 & 4 \end{pmatrix}\\ ab=\begin{pmatrix} 1 & 1 & 1 & 1\\ 3 & 3 & 3 & 3\\ 2 & 2 & 2 & 2\\ 4 & 4 & 4 & 4 \end{pmatrix}\\ a=⎝⎜⎜⎛1000001001000001⎠⎟⎟⎞b=⎝⎜⎜⎛1234123412341234⎠⎟⎟⎞ab=⎝⎜⎜⎛1324132413241324⎠⎟⎟⎞
可以看到,乘法的左右是将矩阵的两行进行了交换。将一个单位矩阵进行行交换之后,再放在左边乘以某个矩阵,会使得这个矩阵进行行交换。这种把单位阵进行行交换之后的矩阵叫做置换矩阵。
再看下一个例子:
a=(1234123412341234)b=(1000001001000001)ab=(1324132413241324)a=\begin{pmatrix} 1 & 2 & 3 & 4\\ 1 & 2 & 3 & 4\\ 1 & 2 & 3 & 4\\ 1 & 2 & 3 & 4 \end{pmatrix}\\ b=\begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ ab=\begin{pmatrix} 1 & 3 & 2 & 4\\ 1 & 3 & 2 & 4\\ 1 & 3 & 2 & 4\\ 1 & 3 & 2 & 4 \end{pmatrix}\\ a=⎝⎜⎜⎛1111222233334444⎠⎟⎟⎞b=⎝⎜⎜⎛1000001001000001⎠⎟⎟⎞ab=⎝⎜⎜⎛1111333322224444⎠⎟⎟⎞
把置换矩阵放在右边就是列交换了,上面的例子,第二列和第三列就完成了交换。
再看这个例子:
a=(1000030000100001)b=(1234−1−2−3−45678−5−6−7−8)ab=(1234−3−6−9−125678−5−6−7−8)a=\begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 3 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ b=\begin{pmatrix} 1 & 2 & 3 & 4\\ -1 & -2 & -3 & -4\\ 5 & 6 & 7 & 8\\ -5 & -6 & -7 & -8 \end{pmatrix}\\ ab=\begin{pmatrix} 1 & 2 & 3 & 4\\ -3 & -6 & -9 & -12\\ 5 & 6 & 7 & 8\\ -5 & -6 & -7 & -8 \end{pmatrix}\\ a=⎝⎜⎜⎛1000030000100001⎠⎟⎟⎞b=⎝⎜⎜⎛1−15−52−26−63−37−74−48−8⎠⎟⎟⎞ab=⎝⎜⎜⎛1−35−52−66−63−97−74−128−8⎠⎟⎟⎞
可以看到不过是把第二行放大了三倍。这种很简单,就不必说了。
再看看下一个例子:
a=(1234−1−2−3−45678−5−6−7−8)b=(1000020000100001)ab=(1434−1−4−3−451278−5−12−7−8)a= \begin{pmatrix} 1 & 2 & 3 & 4\\ -1 & -2 & -3 & -4\\ 5 & 6 & 7 & 8\\ -5 & -6 & -7 & -8 \end{pmatrix}\\ b= \begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 2 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ ab= \begin{pmatrix} 1 & 4 & 3 & 4\\ -1 & -4 & -3 & -4\\ 5 & 12 & 7 & 8\\ -5 & -12 & -7 & -8 \end{pmatrix}\\ a=⎝⎜⎜⎛1−15−52−26−63−37−74−48−8⎠⎟⎟⎞b=⎝⎜⎜⎛1000020000100001⎠⎟⎟⎞ab=⎝⎜⎜⎛1−15−54−412−123−37−74−48−8⎠⎟⎟⎞
我们可以找到规律了,放在右边做乘法是做列变换。这次是把第二列变成了两倍。
大胆猜测,把单位阵做行倍加,再左乘一个矩阵,是不是也就对这个矩阵实现了行倍加呢?答案是对的:
a=(1000310000100001)b=(98159273367251102)ab=(981536261018367251102)a= \begin{pmatrix} 1 & 0 & 0 & 0\\ 3 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ b= \begin{pmatrix} 9 & 8 & 1 & 5\\ 9 & 2 & 7 & 3\\ 3 & 6 & 7 & 2\\ 5 & 1 & 10 & 2 \end{pmatrix}\\ ab= \begin{pmatrix} 9 & 8 & 1 & 5\\ 36 & 26 & 10 & 18\\ 3 & 6 & 7 & 2\\ 5 & 1 & 10 & 2 \end{pmatrix}\\ a=⎝⎜⎜⎛1300010000100001⎠⎟⎟⎞b=⎝⎜⎜⎛99358261177105322⎠⎟⎟⎞ab=⎝⎜⎜⎛936358266111071051822⎠⎟⎟⎞
从例子可以看出确实是第一行乘以三倍加到了第二行了。
列倍加不过是左边换到右边而已,我是不厌其烦地举例子啊:
a=(975943161105431094)b=(1020010000100001)ab=(97239439611074310154)a= \begin{pmatrix} 9 & 7 & 5 & 9\\ 4 & 3 & 1 & 6\\ 1 & 10 & 5 & 4\\ 3 & 10 & 9 & 4 \end{pmatrix}\\ b= \begin{pmatrix} 1 & 0 & 2 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ ab= \begin{pmatrix} 9 & 7 & 23 & 9\\ 4 & 3 & 9 & 6\\ 1 & 10 & 7 & 4\\ 3 & 10 & 15 & 4 \end{pmatrix}\\ a=⎝⎜⎜⎛941373101051599644⎠⎟⎟⎞b=⎝⎜⎜⎛1000010020100001⎠⎟⎟⎞ab=⎝⎜⎜⎛94137310102397159644⎠⎟⎟⎞
实验了一下,我们的猜测是对的啊,就是把第一列乘以两倍加到了第三列上。
对于连续的行变换,我们可以做个实验,自己计算一下:
x1=(1000210000100001)x2=(1000010020100001)x1x2=(1000210020100001)a=(227279449103822310)x1x2a=(227211131881314171222310)x_1= \begin{pmatrix} 1 & 0 & 0 & 0\\ 2 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ x_2= \begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 2 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ x_1x_2=\begin{pmatrix} 1 & 0 & 0 & 0\\ 2 & 1 & 0 & 0\\ 2 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ a= \begin{pmatrix} 2 & 2 & 7 & 2\\ 7 & 9 & 4 & 4\\ 9 & 10 & 3 & 8\\ 2 & 2 & 3 & 10 \end{pmatrix}\\ x_1x_2a= \begin{pmatrix} 2 & 2 & 7 & 2\\ 11 & 13 & 18 & 8\\ 13 & 14 & 17 & 12\\ 2 & 2 & 3 & 10 \end{pmatrix}\\ x1=⎝⎜⎜⎛1200010000100001⎠⎟⎟⎞x2=⎝⎜⎜⎛1020010000100001⎠⎟⎟⎞x1x2=⎝⎜⎜⎛1220010000100001⎠⎟⎟⎞a=⎝⎜⎜⎛279229102743324810⎠⎟⎟⎞x1x2a=⎝⎜⎜⎛211132213142718173281210⎠⎟⎟⎞
对于两个行倍加的线性变换的乘法,我们把非对角线元素加起来就可以了,加起来以后还能保持各自行倍加的特点。这个特点对于将来要学习的LU分解特别特别重要!
连续列变换是同样的道理:
x1=(1100010000100001)x2=(1001010000100001)x1x2=(1101010000100001)a=(52543112108793322)ax1x2=(5759341510187193625)x_1= \begin{pmatrix} 1 & 1 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ x_2= \begin{pmatrix} 1 & 0 & 0 & 1\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ x_1x_2= \begin{pmatrix} 1 & 1 & 0 & 1\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}\\ a= \begin{pmatrix} 5 & 2 & 5 & 4\\ 3 & 1 & 1 & 2\\ 10 & 8 & 7 & 9\\ 3 & 3 & 2 & 2 \end{pmatrix}\\ ax_1x_2= \begin{pmatrix} 5 & 7 & 5 & 9\\ 3 & 4 & 1 & 5\\ 10 & 18 & 7 & 19\\ 3 & 6 & 2 & 5 \end{pmatrix}\\ x1=⎝⎜⎜⎛1000110000100001⎠⎟⎟⎞x2=⎝⎜⎜⎛1000010000101001⎠⎟⎟⎞x1x2=⎝⎜⎜⎛1000110000101001⎠⎟⎟⎞a=⎝⎜⎜⎛53103218351724292⎠⎟⎟⎞ax1x2=⎝⎜⎜⎛5310374186517295195⎠⎟⎟⎞
同样,多个列变换也是把非对角线元素相加就行了。
其实这些用线性变换的思想很容易理解。一个线性变换可以用矩阵表示,这个线性变换把一组自然基变成什么样子,就会把自然基下的矩阵变成什么样子。这么说起来,比较难理解,一组自然基,其实就是单位阵,也就是说一个矩阵是通过什么步骤从单位阵变过来的,它去乘别的矩阵,也会按照同样的步骤去变换别的矩阵,这就是线性变换。