矩陣乘法
前提
兩個矩陣相乘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])