1. 程式人生 > 其它 >對於線性代數的形象化理解(2)

對於線性代數的形象化理解(2)

視訊地址:
線性代數的本質 - 系列合集


矩陣乘法與線性變換複合(視訊p5)

一個矩陣乘以一個向量,得到的結果在幾何上可以將其視為,對這個向量的基向量進行線性變換了之後,這個向量在原座標系中的位置。

那麼它左乘一個矩陣,就是一次對空間的一種特定的變換,得到的結果是與原向量維數相同的一個向量,那麼如果在一次變換過後,再做一次變換呢?

比如,先旋轉,再剪下,兩次變換最終的結果,其實可以視為另外的一個線性變換,被稱為前面兩個獨立變換的“複合變換”。

數學上,將上述的過程可以寫成這樣的矩陣與向量相乘的式子:

\[\underbrace{\left[\begin{array}{cc} 1 & 1 \\ 0 & 1 \end{array}\right]}_{\begin{array}{l} \text { Shear } \\ \text { 剪下矩陣 } \end{array}} \underbrace{\left[\begin{array}{cc} 0 & -1 \\ 1 & 0 \end{array}\right]}_{\begin{array}{c} \text { Rotation } \\ \text { 旋轉矩陣 } \end{array}}=\underbrace{\left[\begin{array}{cc} 1 & -1 \\ 1 & 0 \end{array}\right]}_{\begin{array}{c} \text { Composition } \\ \text { 複合矩陣 } \end{array}} \]

上面這個式子,描述的是對於向量(x,y)所在的空間,先做了一次旋轉的變換,然後再做了一次剪下的變換。

無論最終結果如何,這兩次變換的效果合起來,都是會等於右邊這個複合矩陣的變換效果的。

看到這裡,是不是有點知道我要說什麼了?如果沒有一點呼之欲出的感覺,那就再讀一遍上面加粗這句話。

沒錯,兩個矩陣相乘(剪下矩陣 × 旋轉矩陣),在幾何空間上的理解,就是兩次變換的疊加。(多個矩陣相乘同理)

並且,你多次變換,也就是一個向量多次乘以一個矩陣咯,每一次其實都是矩陣乘向量,矩陣乘向量是一定要矩陣在左邊的,所以對於一個向量被多個矩陣連乘的式子,應該從右往左看。

接下來從幾何意義來講一下兩個矩陣相乘時的運算,

\[\underbrace{\left[\begin{array}{cc} 0 & 2 \\ 1 & 0 \end{array}\right]}_{\begin{array}{l} \text { M2 } \end{array}} \underbrace{\left[\begin{array}{cc} 1 & -2 \\ 1 & 0 \end{array}\right]}_{\begin{array}{c} \text { M1 } \end{array}}=\underbrace{\left[\begin{array}{cc} ? & ? \\ ? & ? \end{array}\right]}_{\begin{array}{c} \text { 複合矩陣 } \end{array}} \]

M2 × M1,本質上就是先對原始空間進行M1矩陣所表示的變換,然後再對變換完的空間進行矩陣M2所表示的變換。然後從前面我們也看到了,M1矩陣是如何表示一個變換的呢?本質上的兩列,就分別代表了變換後的二維空間上的兩個基向量。

所以經過M1的變換之後,基向量 \(\vec{i}\) 其實就是\(\left[\begin{array}{l} 1 \\ 1 \end{array}\right]\),而基向量 \(\vec{j}\) 就變成了 \(\left[\begin{array}{l} -2 \\ 0 \end{array}\right]\)​​​​​ ,那基向量也是向量啊,對於經歷過M1變換過後的空間再做M2的變換(這個是本質),數學式子上看,就是拿M2這個矩陣去分別乘以M1變換過後的空間中的基向量,

\[\left[\begin{array}{ll} 0 & 2 \\ 1 & 0 \end{array}\right]\left[\begin{array}{l} 1 \\ 1 \end{array}\right]=1\left[\begin{array}{l} 0 \\ 1 \end{array}\right]+1\left[\begin{array}{l} 2 \\ 0 \end{array}\right]=\left[\begin{array}{l} 2 \\ 1 \end{array}\right] \\ \left[\begin{array}{ll} 0 & 2 \\ 1 & 0 \end{array}\right]\left[\begin{array}{c} -2 \\ 0 \end{array}\right]=-2\left[\begin{array}{l} 0 \\ 1 \end{array}\right]+0\left[\begin{array}{l} 2 \\ 0 \end{array}\right]=\left[\begin{array}{c} 0 \\ -2 \end{array}\right] \]

然後分別得到的兩個新的基向量 \(\left[\begin{array}{l} 2 \\ 1 \end{array}\right]\)

​​ 和 \(\left[\begin{array}{l} 0 \\ -2 \end{array}\right]\)​,就組成了這個複合矩陣 \(\left[\begin{array}{l} 2 & 0\\ 1 & -2 \end{array}\right]\)​。(因為複合矩陣表示的變換效果就是M1變換之後再M2變換,矩陣中的兩列就是變換過後的兩個基向量)

問題:矩陣相乘滿足交換律嗎?

用幾何變換的角度來看,AB ≠ BA,詳見動畫演示 https://www.bilibili.com/video/BV1ms41167u9

問題:矩陣相乘滿足結合律嗎?如 (AB)C = A(BC) ?

因為是從右往左讀,所以左邊的式子是對原空間先做了一個C的變換,然後做了一個等效於A×B的合變換(本質上等效於A×B的合變換,就是先做B變換,再做A變換),而右邊的式子是做了一個等效於B×C的合變換,然後再做A變換,所以等式左右兩邊都是先做了C變換,然後做B變換,最後做A變換。

所以滿足結合律。


行列式(視訊p7)

這裡以二維空間舉例(也就是平面空間)

給出一個矩陣,如 \(\left[\begin{array}{l} 3 & 0\\ 0 & 2 \end{array}\right]\)​​​​ ,它表示的是將基向量所在的空間做一個變換,原來的兩個基向量 \(\vec{i}:\left[\begin{array}{l} 0 \\ 1 \end{array}\right]\)​​​​​ 和 \(\vec{j}:\left[\begin{array}{l} 1 \\ 0 \end{array}\right]\)​​​ 經過此次變換之後就變

成了 \(\vec{i}:\left[\begin{array}{l} 3 \\ 0 \end{array}\right]\)​​​ 和​ \(\vec{j}:\left[\begin{array}{l} 0 \\ 2 \end{array}\right]\)​​​​ ,​這個時候呢我們可以看到,原來的基向量i和j,圍成的矩形的面積為1,而變換過後\(\vec{i}\)\(\vec{j}\)​​​ 圍成的矩形的面積,我們說這個線性變換讓它的面積比原來擴大了 3×2=6倍。

只要知道原來的基向量圍成的矩形的面積和變換後的基向量圍成的矩形的面積,我們就可以知道變換前後,空間中任意一塊區域的面積變化的比例。

我們就可以在幾何意義上這樣去解釋行列式:線性變換對空間中的面積產生改變的比例,就是行列式的值。

如果某一個矩陣的行列式為0,表示經過該變換之後,原來平面中的所有的面積都被壓成了一條線,甚至一個點(因為沒有面積了嘛)

那麼,看一個矩陣的行列式是否為0,也就是說明它代表的變換是否將空間壓縮到了更小的維度上。

另外,如果某個矩陣的行列式為負數, 相當於變換過後,空間的方向翻轉了,(如果是二維,可以想象成一張紙翻了個面兒)
至於三階行列式的計算公式為什麼是下圖這樣,視訊作者沒有展開。

\[\operatorname{det}\left(\left[\begin{array}{lll} a & b & c \\ d & e & f \\ g & h & i \end{array}\right]\right) =a \operatorname{det}\left(\left[\begin{array}{ll} e & f \\ h & i \end{array}\right]\right) -b \operatorname{det}\left(\left[\begin{array}{ll} d & f \\ g & i \end{array}\right]\right) +c \operatorname{det}\left(\left[\begin{array}{ll} d & e \\ g & h \end{array}\right]\right) \]

逆矩陣(視訊p8)

\(A\vec{x}=\vec{v}\)​​ 表示的就是矩陣A乘以x向量之後得到的是向量v,也就是說,當所在的空間經過線性變換之後,向量x變成了向量v,現在我們知道了向量v,也知道了變換方式A,剩下的未知量x也就可以求解了。(或者說我們要找到一個向量x,使得它在經過變換A之後變成的向量與v重合)

假設有一個方程組如下所示,它的解依賴於矩陣A所代表的變換是將空間擠壓到一個低維空間,還是保持像粗還是空間一樣的二維空間。

上面講到,如果擠壓到了一個低維空間,代表det(A)=0 ,反之則是det(A)≠ 0.

如果它沒有被擠壓到一個低維空間,則我們可以想象,\(\vec{x}\) 經過A這個變換之後變成了 \(\vec{v}\) ,則將 \(\vec{v}\)​ 做一個A矩陣的逆變換,就可可以將\(\vec{v}\) 變回原來的 \(\vec{x}\)​​ 了。假設,A是將原來的平面座標系順時針旋轉90°,那麼那麼A的反向變換就是將原來的平面座標系逆時針旋轉90°,我們將其稱為A的逆,既然它是一個變換,那也可以寫成矩陣的形式,稱為矩陣 \(A\) 的逆矩陣,即 \(A^{-1}\)​ .

上面加粗的這句話,用數學公式寫出來,就是 \(A^{-1} A \overrightarrow{\mathrm{x}}=A^{-1} \overrightarrow{\mathbf{v}}\)​​​​​ ,一個變換和它的逆變換疊加,就相當於啥都沒做,即一個矩陣乘逆矩陣,結果為單位矩陣。

為什麼是單位矩陣呢?矩陣乘積的結果的每一列就表示的是經過變換之後的基向量,那麼啥都沒做,就是相當於平面上的(1,0)、(0,1)這兩個基向量,或者三維的(1,0,0)(0,1,0)和(0,0,1)三個向量,更高維以此類推……

寫出來就是 \(\left[\begin{array}{l} 1 & 0\\ 0 & 1 \end{array}\right]\)\(\left[\begin{array}{l} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\\end{array}\right]\)​ ,可不就是我們的單位矩陣嘛?​​​​

當det(A)為零的時候,那對於A這個變換,可就沒有一個逆變換了,因為你沒法將一條被壓的線恢復成一個平面,因為變回去的這個變換就是一個函式,線上的一個向量的輸入需要產生多個的輸出,這是不符合函式的定義的。擴充套件到三維上也是如此將一個被壓所致的平面空間恢復到一個三維空間是做不到的。