1. 程式人生 > 其它 >03-矩陣與線性變換

03-矩陣與線性變換

很遺憾,Matrix(矩陣)是什麼是說不清的。你必須得自己親眼看看。

​ —墨菲斯

線性變換

  • “變換” 本質上是 “函式” 的一種花哨的說法,它接收輸入內容,並輸出對應結果。特別地,線上性代數的情況下,我們考慮的是接收一個向量並且輸出一個向量的變換

  • 既然 “變換” 和 “函式“ 意義相同,為什麼還要使用前者而不是後者?因為使用“變換”是在暗示以特定方式來視覺化這一輸入-輸出關係

  • 一種理解 “向量的函式” 的方法是使用運動。如果一個變換接收一個向量並輸出一個向量,我們想象這個輸入向量移動到輸出向量的位置

  • 接下來,要理解整個變換,我們可以想象每一個輸入向量都移動到對應輸出向量的位置

![img](file:///home/kslas/%E5%9B%BE%E7%89%87/03/2.gif?lastModify=1639476246)

  • 因為將向量看作箭頭時,同時考慮所有二維向量會變得非常擁擠,所以將每一個向量看作它的終點,而不是一個箭頭。用這種方法考慮所有輸入向量都移動到對應輸出向量的位置時,我們只用看空間中的所有點移動到其他點的位置

![img](file:///home/kslas/%E5%9B%BE%E7%89%87/03/3.gif?lastModify=1639474932)

  • 二維空間變換這種情況下,為了更好地體會整個空間形狀上的改變,可以對無限網路上的所有點同時做變換;也可以在背景中保留原始網格的副本,以便追蹤終點與起點的相對關係

![img](file:///home/kslas/%E5%9B%BE%E7%89%87/03/4.gif?lastModify=1639475163)

  • 任意一個對空間的變換可以非常複雜,但幸運的是,線性代數限制在一種特殊型別的變換上,這種變換更容易理解,稱為“線性變換”

  • 直觀地說,如果一個變換具有以下兩條性質,我們就稱它是線性的

    • 一是直線在變換後仍然保持為直線,不能有所彎曲

    • 二是原點必須保持固定

  • 總的來說,應該把線性變換看作是 “保持網格線平行且等距分佈” 的變換

矩陣

  • 如何用數值描述線性變換?應該給計算機什麼樣的計算公式,使得你給它一個向量的座標,它能給你變換後向量的座標呢?
  • 實際結果是,只需要記錄兩個基向量i帽和j帽變換後的位置,其他向量都會隨之而動

![img](file:///home/kslas/%E5%9B%BE%E7%89%87/03/5.gif?lastModify=1639477689)

  • 例如,考慮座標為(-1,2)的向量v,這個向量就是-1與i帽之積和2與j帽之積的和

![img](file:///home/kslas/%E5%9B%BE%E7%89%87/03/6.gif?lastModify=1639479343)

  • 網格線保持平行且等距分佈的性質有一個重要的推論:變換後的向量v的位置,是-1與變換後的i帽之積,加上2與變換後的j帽之積。換句話說,如果向量v是i帽和j帽的一個特定線性組合,那麼變換後的向量v也是變換後i帽和j帽的同樣的線性組合。這意味著,可以只根據變換後的i帽和j帽,就推斷出變換後的v。這也是在背景中保留原始網格的副本的原因

  • 對於現在所示的變換,我們可以看出i帽落在座標(1,-2)上,j帽落在x軸上,座標為(3,0),也就是說,-1乘以i帽加上2乘以j帽所代表的向量,會落在-1乘以向量(1,-2)加上2乘以向量(3,0)的位置上,簡單運算之後,就能推斷出向量v一定落在向量(5,2)上

  • 一般情況下,一個向量的座標是(x,y),變換後的這個向量就是x乘以變換後的i帽(1,-2),加上y乘以變換後的j帽(3,0),簡單運算之後你就可以知道它落在座標(1x + 3y,-2x + 0y)上。運用這個公式,我給你任意一個向量,你都能告訴我它在變換後的位置

  • 只要記錄了變換後的i帽和j帽,我們就可以推斷出任意向量在變換之後的位置,完全不必觀察變換本身是什麼樣

  • 以上內容是在說,一個二維線性變換僅由四個數字完全確定,變換後i帽的兩個座標與變換後j帽的兩個座標。通常我們將這些座標包裝在一個2 x 2的格子中,稱它為2 x 2矩陣。你可以把它的理解為兩個特殊的向量,即變換後的i帽和j帽
  • 如果你有一個描述線性變換的2 x 2矩陣,以及一個給定向量,你想了解線性變換對這個向量的作用,你只需要取出向量的座標,將它們分別與矩陣的特定列相乘,然後將結果相加即可,這與 “縮放基向量再相加” 的思想一致
  • 更一般的情況下,我們來看看矩陣是$$
    \left[
    \begin{matrix}
    a & b \
    c & d
    \end{matrix}
    \right] \tag{3}
    $$時會發生什麼。記住,矩陣在這裡只是一個記號,它含有描述一個線性變換的資訊,把第一列(a,c)看作是變換後的第一個基向量,把第二列(b,d)看作是變換後的第二個基向量,我們讓這個變換作用於向量(x,y),結果是什麼?那就應該是x乘以(a,c)加上y乘以(b,d),合併之後,得到向量(ax + by,cx + dy),你甚至可以把它定義為矩陣向量乘法,這裡矩陣放在向量左邊,類似一個函式
  • 但是我們完全可以把矩陣的列看作變換後的基向量,把矩陣向量乘法看作它們的線性組合

拾遺

  • 接下來我們練習用矩陣描述一些線性變換,比如說,我們將整個空間逆時針旋轉90度,那麼i帽落在座標(1,0)上,j帽落在座標(-1,0),那麼這個矩陣的列就分別是(0,1)和(-1,0),如果想算出任意向量在逆時針旋轉90度後的位置,你只需要把它與矩陣相乘即可

  • 這裡還有一個有趣的變換,它有個特殊的名稱叫“剪下”,在這個變換裡,i帽保持不變,所以矩陣第一列為(1,0),但是j帽移動到了座標(1,1),所以矩陣第二列為(1,1),為了計算給出定向量在剪下變換後的位置,只需要將矩陣與這個向量相乘即可

  • 反過來看看問題,從一個矩陣出發,比如說一個以(1,2)和(3,1)為列的矩陣,如何推測出它代表的線性變換是什麼樣的?這裡給出一種方法:首先將i帽子移動到(1,2),然後將j帽移動到(3,1),空間其他剩餘部分隨二者一起移動,以保持網格線平行且等距分佈

  • 如果變換後的i帽和變換後的j帽是線性相關的,意味著其中一個向量是另一個的倍數,那麼這個線性變換將整個二維空間擠壓到它們所在一條直線上,也就是這兩個線性相關向量所張成的一維空間

總結

  • 線性變換是操縱空間的一種手段,它保持網格線平行且等距分佈,並且保持原點不動
  • 這種變換隻需要幾個數字就能描述清楚,這些數字就是變換後基向量的座標
  • 以這些座標為列所構成的矩陣為我們提供了一種描述線性變換的語言,而矩陣向量乘法就是計算線性變換作用於給定向量的一種途徑
  • 這裡重要的一點是,每當你看到一個矩陣時,你都可以把它解讀為對空間的一種特定變換