線性代數預習筆記


矩陣的基本運算和消元

乘法

規定矩陣乘法 \(A\times B\) 必須滿足 \(A\) 的列數等於 \(B\) 的行數,此時:

\[C_{i,j}= \sum_k A_{i,k}\times B_{k,j} \]

直觀來看,即是左邊矩陣一行中的各個數,分別與右邊矩陣一列中的各個數相乘,然后相加作為新矩陣的一項:

\[\\ \begin{bmatrix} \color{coral}a_1 & \color{coral}a_2 & \color{coral}a_3 \\ b_1 & b_2 & b_3\\ \end{bmatrix} \times \begin{bmatrix} \color{coral}x_1 & y_1 \\ \color{coral}x_2 & y_2 \\ \color{coral}x_3 & y_3 \end{bmatrix} = \begin{bmatrix} \color{coral}a_1\times x_1+a_2\times x_2+a_3\times x_3 & \cdots \\ \cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots &\cdots \end{bmatrix} \]

這個簡單的運算有很多種理解及計算方法

  1. 行向量線性組合

    以左矩陣的一行乘右矩陣的各列:

    \[\\ \begin{bmatrix} \color{teal}a_1 & \color{teal}a_2 & \color{teal}a_3 \\ b_1 & b_2 & b_3\\ \end{bmatrix} \times \begin{bmatrix} \color{coral}x_1 & \color{coral}y_1 \\ \color{olive}x_2 & \color{olive}y_2 \\ \color{green}x_3 & \color{green}y_3 \end{bmatrix} = \begin{bmatrix} \color{teal}a_1\times \color{coral}x_1+\color{teal}a_2\times \color{olive}x_2+\color{teal}a_3\times \color{green}x_3 & \color{teal}a_1\times \color{coral}y_1+\color{teal}a_2\times \color{olive}y_2+\color{teal}a_3\times \color{green}y_3 \\ \cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots & \cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots \end{bmatrix} \]

    可以發現,所得矩陣 \(C\) 其實是 \(B\) 中行向量線性組合的結果。

  2. 列向量線性組合

    以右矩陣的一列乘左矩陣的各列:

    \[\begin{bmatrix} \color{coral}x_1 & \color{olive}x_2 & \color{green}x_3\\ \color{coral}y_1 & \color{olive}y_2 & \color{green}y_3 \end{bmatrix} \times \begin{bmatrix} \color{teal}a_1 & b_1\\ \color{teal}a_2 & b_2\\ \color{teal}a_3 & b_3 \end{bmatrix} = \begin{bmatrix} \color{teal}a_1\times \color{coral}x_1+\color{teal}a_2\times \color{olive}x_2+\color{teal}a_3\times \color{green}x_3 & \cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots \\ \color{teal}a_1\times \color{coral}y_1+\color{teal}a_2\times \color{olive}y_2+\color{teal}a_3\times \color{green}y_3 & \cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots \end{bmatrix} \]

    和上面類似, \(C\)\(A\) 中列向量的線性組合。

  3. 行乘列

    我們先舉一個簡單的例子:

    \[\begin{bmatrix} 1 \\ 4\\ 9 \end{bmatrix} \times \begin{bmatrix} 1 & 3 \end{bmatrix} = \begin{bmatrix} 1 & 3\\ 4 & 12\\ 9 & 27 \end{bmatrix} \]

    可以發現 \(C\) 矩陣中第一列是 \(A\) 的一倍,第二列是 \(A\) 的兩倍。

    而對於多行多列的矩陣:

    \[\begin{bmatrix} 1 & 2\\ 4 & 3\\ 9 & 4 \end{bmatrix} \times \begin{bmatrix} 1 & 3\\ 2 & 2 \end{bmatrix} = \begin{bmatrix} 1 \\ 4\\ 9 \end{bmatrix} \times \begin{bmatrix} 1 & 3 \end{bmatrix} + \begin{bmatrix} 2 \\ 3\\ 4 \end{bmatrix} \times \begin{bmatrix} 2 & 2 \end{bmatrix} \]

  4. 塊乘塊

    我們可以把矩陣分成小塊的矩陣相乘:

    \[\begin{bmatrix} A_1 & A_2\\ A_3 & A_4 \end{bmatrix} \times \begin{bmatrix} B_1 & B_2\\ B_3 & B_4 \end{bmatrix} = \begin{bmatrix} A_1\times B_1 +A_2\times B_3 & A_1\times B_2 +A_2\times B_4\\ A_3\times B_1 +A_4\times B_3 & A_3\times B_2 +A_4\times B_4 \end{bmatrix} \]

    原矩陣行列數要能相乘( \(j_A = i_B\) ),分成塊后行列上塊數也要能相乘( \(n_A=m_B\) ),自然分出的小塊矩陣能夠相乘( \(\frac{j_A}{n_A}=\frac{i_B}{m_B}\) )。


矩陣的逆如此定義:\(A\times A^{-1}=I\) ,其中 \(I\) 為單位矩陣,\(A^{-1}\) 表示矩陣 \(A\) 的逆。

矩陣是不一定有逆的(有逆的叫非奇異矩陣,無逆為奇異矩陣),從線性方程組來理解,我們知道矩陣代表的方程組若線性相關就無法消元成單位矩陣。

矩陣的逆滿足:

\[A\times B\times B^{-1}\times A^{-1}=I \implies (A\times B)^{-1}=B^{-1}\times A^{-1} \]

且方陣的逆(廣義上有非方陣的逆)滿足左逆等於右逆。


轉置

矩陣的轉置就像是把矩陣以主對角線為軸翻轉了一個平面:

\[A= \begin{bmatrix} a & b\\ c & d\\ e & f \end{bmatrix} \implies A^T= \begin{bmatrix} a & c & e\\ b & d & f \end{bmatrix} \]

矩陣的轉置滿足:\((A\times B)^T=B^T\times A^T\) ,證明……真就是算一遍,就不贅述。

若一個矩陣的轉置等於本身,我們稱其為對稱矩陣。有一個快速獲得對稱矩陣的方法,因為

\((A\times A^T)^T=A\times A^T\) ,所以一個矩陣和其轉置相乘必為對稱矩陣。

最后還有一個性質:

\[\begin{align*} (A^T)^{-1}= (A\times A^{-1})^T\times (A^T)^{-1} \\ =(A^{-1})^T\times (A^T)^{-1}\times A^T \end{align*} \qquad即\quad (A^{-1})^T=(A^T)^{-1} \]


A 的 LU 分解

我們熟悉了矩陣的基本運算,現在來看看矩陣的消元。

我們從具體例子入手,對於一個 \(3\times 3\) 的非奇異的,不需要置換行即可消元的矩陣 \(A\)

\[A= \begin{bmatrix} 3 & 1 & 4\\ 6 & 3 & 2\\ 9 & 5 & 1 \end{bmatrix} \]

我們定義消元矩陣為 \(E_{ji}\) ,依次乘上消元矩陣得到上三角矩陣 \(U\)

\[E_{32}E_{31}E_{21}A=U \]

我們來看一下這幾個值:

\[E_{21}=\begin{bmatrix} 1 & 0 & 0\\ -2 & 1 & 0\\ 0 & 0 & 1 \end{bmatrix}\quad E_{31}=\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ -3 & 0 & 1 \end{bmatrix}\quad E_{32}=\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & -2 & 1 \end{bmatrix}\\ E_{32}E_{31}E_{21}=\begin{bmatrix} 1 & 0 & 0\\ -2 & 1 & 0\\ 1 & -2 & 1 \end{bmatrix} \]

我們再嘗試乘上逆把消元矩陣移到右側:

\[A=E_{21}^{-1}E_{31}^{-1}E_{32}^{-1}U \]

消元矩陣的逆非常好求,即是消元的反操作,把對角線以外的那個值取負即可,我們再看一下這幾個矩陣:

\[E_{21}^{-1}=\begin{bmatrix} 1 & 0 & 0\\ 2 & 1 & 0\\ 0 & 0 & 1 \end{bmatrix}\quad E_{31}^{-1}=\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 3 & 0 & 1 \end{bmatrix}\quad E_{32}^{-1}=\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 2 & 1 \end{bmatrix}\\ E_{21}^{-1}E_{31}^{-1}E_{32}^{-1}=\begin{bmatrix} 1 & 0 & 0\\ 2 & 1 & 0\\ 3 & 2 & 1 \end{bmatrix} \]

比上面的結果好看很多,直接就是消元矩陣的逆相加。動手試過便知,在第一種乘法中,顛倒了消元順序,結果中消元的系數相互干擾了,而第二種乘法則是剛好按照消元的順序,各個系數不會干擾。因為乘出的結果是個下三角矩陣,我們記作 \(L\)

上面結果是在 \(A\) 行分布很好,不需要置換行的情況下,而若需換行,我們就要再在 \(A\) 前乘上置換矩陣 \(P\)

我們思考一下一個 \(n\times n\) 的矩陣有多少個行置換矩陣:可以想見,每一個置換矩陣都對應一個置換后的狀態,而狀態數明顯是 \(n!\) ,故 \(n\times n\) 的矩陣有 \(n!\) 個行置換矩陣。同理,不管如何置換,終究還是在這些狀態中,所以置換矩陣的乘法是 封閉 的。

除此之外,置換矩陣還有如此性質:\(P^T=P^{-1}\) 。我們知道 \(P^{-1}\) 就是這個矩陣的逆操作,而 \(P_{ij}\) 若為 \(1\) 即表示把 \(j\) 行換到 \(i\) 行的位置,轉置后 \(P_{ji}\) 就為 \(1\) ,表示把 \(i\) 行換到 \(j\) 行的位置,剛好是逆操作 。

那么對於一個必須置換才能消元的矩陣,只需提前換好行即可,最終表示為:

\[PA=LU \]


Gauss-Jordan 消元法

我們之前了解了矩陣的逆,現在來了解一種求逆的方法。

給矩陣 \(A\) 加上一個增廣單位矩陣,我們對 \(A\) 的運算都同樣對這個增廣運算:

\[\left[ \begin{array}{cc|cc} 1 & 2 & 1 & 0\\ 3 & 4 & 0 & 1 \end{array} \right] \]

我們將 \(A\) 消元成單位矩陣:\(EA=I\) ,同時對增廣進行同樣操作:\(EI=E\) 。我們知道 \(E\) 就是矩陣 \(A\) 的逆,那么一套操作下來增廣就變成 \(A\) 的逆了。


向量空間與方程的解

向量空間與子空間

三維空間可以被三個正交的向量表示出來。我們可以用一些 \(n\) 維向量表示出來一個向量空間。比如說,\(n\)\(n\) 維向量在一定條件下就能表示出一個 \(n\) 維空間,我們可以記作 \(R^n\) 。舉幾個栗子:

\[\begin{bmatrix} 1 & 2 & 3\\ 2 & 3 & 4\\ 1 & 0 & 0 \end{bmatrix}\quad (a)\qquad \begin{bmatrix} 1 & 2 & 3\\ 2 & 3 & 4\\ 1 & 1 & 1 \end{bmatrix}\quad(b) \]

若以每行為一個向量,栗子 \((a)\) 很明顯是一個 \(R^3\) 的向量空間,而栗子 \((b)\) 明顯不足以稱作 \(R^3\) ,它只表示了三維空間中的一個平面,但也不能說是 \(R^2\) ,因為其有三個坐標參數。這個向量空間是三維空間中的一個二維平面,我們稱作是向量空間 \(R^3\) 的一個子空間,同樣 \(R^3\) 中也可以有表示一條線,一個點的子空間,但它們可並不是 \(R^1\)\(R^0\),它們是由三維向量組成的。

那么,任意一個三維空間中的平面都可以是 \(R^3\) 的子空間了嗎?顯然不是,這時我們就要回到向量空間的最本質要求上:向量空間對線性變換封閉 。線性變換,其實也就是兩個操作:\(v=\lambda w\)\(v+w=n\) ,即向量的數乘和相加。也就是說,在向量空間內,我們無論怎么進行數乘和相加,其結果仍在向量空間內。

很明顯,數乘可以乘 \(0\) ,所以向量空間至少得包含零向量(事實上,零向量是唯一一個點向量空間)。我們所謂的子空間,必定是過該空間原點的。 比如原點本身,三維空間中的過原點平面、直線,七維空間中的過原點五位元素……雖然我們想象不出來,但是我們仍能抽象計算它們。

那么問題來了,如果 \(R^n\) 中有兩個子空間 \(P\)\(L\) 。它們的並和交是不是子空間呢?先考慮並集,就拿三維空間中的兩個二維子空間舉例,兩條線中的向量相加,可能產生一個不屬於它們兩的向量,所以非特殊情況(其中一個子空間包含另一個),兩子空間的並不是子空間。

相反,兩子空間的交集必定是子空間:

\[設 v、w \in P\cap L \\ v+w\in P,v+w\in L,故v+w\in P\cap L \]

同理數乘也封閉。

向量空間的嚴格條件有 \(8\) 條,還有一些是運算規律,向量本身就滿足就不用了就不用管了。但是這寫嚴格條件可以讓我們把很多奇奇怪怪的運算抽象成向量空間。


基和維數

上文提到過我們可以用 \(n\)\(n\) 維向量在一定條件下表示一個空間。但是我們既沒有說是什么條件,也沒有說維數的定義。

實際上,這個條件是線性不相關( \(independence\) ) 。即這 \(n\) 個向量不能線性組合出零向量(系數全為零的組合除外)。如果有這么一些向量,它們線性不相關,且可以表示一個特定的向量空間,那么我們稱其為這個空間的基。

可以發現,一個特定的空間的基所包含的向量數量是固定的,這個固定的數量被稱作維數( \(dimension\) )。


方程的解

說了這么多,我們可以步入求解方程的步驟。

首先,我們要對一個矩陣進行簡化為簡化行階梯形式( \(reduced\;row\;echelon\;form\) ),例如:

\[rref\left(\begin{bmatrix} 1 & 2 & 2 & 2\\ 2 & 4 & 6 & 8\\ 3 & 6 & 8 & 10 \end{bmatrix}\right) = \begin{bmatrix} 1 & 2 & 0 & -2\\ 0 & 0 & 1 & 2\\ 0 & 0 & 0 & 0 \end{bmatrix} \]

我們一般選擇逐列消元,若是下一列此時全為 \(0\) ,則代表這一列是前面某些列的線性組合結果,所以解方程時此列的未知數取何值都沒有關系,稱為自由列( \(free\;variable\;column\) ),有時矩陣行數大於列數,導致有些變量隨意取值也有解,這些列也會稱作自由列。相對應,不能隨意取值的變量則為主元( \(pivot\) ),這些列為主列。

得到了簡化矩陣 \(R\) 后,我們調換一下變量位置使得主列在一起,自由列在一起:

\[\begin{bmatrix} 1 & 0 & 2 & -2\\ 0 & 1 & 0 & 2\\ 0 & 0 & 0 & 0 \end{bmatrix} \equiv \begin{bmatrix} I & F\\ O & O \end{bmatrix} \]

這里我們提一下前面忘記說的概念:列空間、行空間和零空間。列空間是指矩陣所有列向量所生成( \(span\) )的向量空間,也就是所有列向量的所有線性組合的集合。行空間同理,是所有行向量生成的空間。零空間是指滿足 \(Ax=0\) 的所有 \(x\) 構成的空間。可以發現,這些向量 \(x\)\(A\) 的行向量相乘都為 \(0\) ,即為,零空間和原矩陣的行空間相垂直。並且,我們剛才所作的除調換變量位置以外的所有操作都沒有影響行空間和零空間。

然后我們再回到簡化后的矩陣,其可以簡寫成如上圖形式,包含主元構成的單位陣,自由變量和 \(0\) 。我們很容易找出一組特解:

\[\begin{bmatrix} -F \\ I \end{bmatrix} = \begin{bmatrix} -2 & 2\\ 0 & -2\\ 1 & 0\\ 0 & 1 \end{bmatrix} \]

而我們知道零空間與原矩陣行空間垂直,那么零空間的維數就是列數減去秩:\(col-r\),剛好是自由變量的個數。這樣我們就獲得了零空間的一組基。

得到了 \(Ax=0\) 的解,我們再來思考一下 \(Ax=b\) 的解(如果有的話)。設我們已知特解 \(x_p\) ,則有 \(A(x-x_p)=0\) ,所以 \(x=x_p+x_n\) 。這樣我們再找出一組特解就可以得到方程的全部解。

特解當然很容易找,因為自由列可以取任意值,我們先將其設為特定值(一般是設為 \(0\) )就能解出一組特解。

然后將特解與零空間中的向量相加,就得到了解的形式:

\[x=x_p + c_1\begin{bmatrix} -2\\ 0\\ 1\\ 0 \end{bmatrix} + c_2\begin{bmatrix} 2\\ -2\\ 0\\ 1 \end{bmatrix} \]


方程的可解性和滿秩

我們先舉一個栗子:

\[rref\left( \begin{bmatrix} 1 & 2 & 3 & 1\\ 1 & 1 & 2 & 1\\ 1 & 2 & 3 & 1 \end{bmatrix}\right) = \begin{bmatrix} 1 & 0 & 1 & 1\\ 0 & 1 & 1 & 0\\ 0 & 0 & 0 & 0 \end{bmatrix} \]

可以看到最后有 \(0\) 行,那么左側的 \(b\) 也要經過相同變化后在 \(0\) 行為 \(0\) 才能有解。

我們單獨討論下滿秩的情況,如果我們有一個 \(m\times n\) 的矩陣:

  1. \(r=n<m\)

    我們一般把 \(r=n\)\(r=m\) 稱為滿秩,而這種情況就是列滿秩。列滿秩說明所有未知數都是主元。此時矩陣的零空間只有零向量。而同時行不滿秩說明留有很多 \(0\) 行,可能會有沒有解的情況。

    所以這種情況下,方程的解有 \(0\)\(1\) 個。

  2. \(r=m<n\)

行滿秩說明沒有 \(0\) 行出現,這樣方程是必定有解的。

  1. \(r=m=n\)

    行列都滿秩的矩陣滿足上兩個情況的性質,必定有解且只有唯一解。

    值得一提的是,這樣的矩陣會是可逆矩陣,因為其既然有解且是方陣,那么就可以化為消元矩陣乘單位陣的形式,我們知道消元矩陣和單位陣都是可逆的,所以說這樣的矩陣也是可逆。

其實很符合我們先前的認識:\(n\) 個未知數需要有 \(n\) 個獨立的方程才能解。


四個基本子空間

我們仍用這個矩陣做栗子:

\[A=\begin{bmatrix} 1 & 2 & 3 & 1\\ 1 & 1 & 2 & 1\\ 1 & 2 & 3 & 1 \end{bmatrix} \]

我們前面其實已經提到過列空間,行空間,零空間。其中列空間,零空間分別表示為:\(C(A)\)\(N(A)\)。而行空間其實可以表示為:\(C(A^T)\) 。同樣,仿照零空間,我們也可以定義出一個行空間對應的零空間,其名字叫做 左零空間 ,記為 \(N(A^T)\)

首先解決這些空間的維數問題,對於一個給定的 \(m\times n\) 矩陣 \(A\) ,它們的維數和所屬向量空間如下表:

\[\begin{array}{c|c|c|c|c} & C(A) & N(A) & C(A^T) & N(A^T)\\ \hline 所屬空間 & R^m & R^n & R^n & R^m \\ \hline 維數 & r & n-r & r & m-r \end{array} \]

結果非常巧妙,一個矩陣的零空間和行空間剛好加起來為列數。這是因為行空間和列空間維數代表着主元個數,零空間代表着自由變量個數。

然后讓我們看看能否系統地求出這四個空間的基。

首先,在消元過程中,列空間會改變,行空間不會改變,消元到最后的主元所在的行向量其實就是行空間的基,而記錄下主列位置后原矩陣這些位置的列向量就是列空間的基。再根據 方程的解 這部分提到的解法,零空間的基可以用 \(rref(A)\) 快速得到。那么我們的問題就主要集中在左零空間。

我們再回顧一下零空間的定義,是滿足 \(Ax=0\) 的所有向量 \(x\) 組成的向量空間。我們可以理解為這些向量 \(x\) 與行向量相乘全為 \(0\) ,即與行空間垂直。也可以理解為 \(A\) 的各列向量按照 \(x\) 的各個系數線性組合得到 \(0\) 向量。推而廣之,左零空間中就是將這些定義中的行、列互換。

我們再回顧消元過程,若是我們記錄下消元矩陣 \(E\) 。就有:\(EA=R\) 。這個 \(E\) 是一個 \(m\times m\) 的矩陣。其與 \(A\) 相乘的意義可以理解為:將 \(A\) 的各行向量以 \(E\) 中的一行為系數進行線性組合生成新矩陣 \(R\) 的一行。我們知道,\(N(A^T)\) 的維數是 \(m-r\) ,是自由變量的數目。那么消元完的矩陣 \(R\) 最下面 \(m-r\) 列全為零向量。也就是說, \(E\) 的最下面 \(m-r\) 行表示的向量與 \(A\) 的列向量相乘全為 \(0\) ,或將 \(A\) 的各行向量以 \(E\) 中的最下面 \(m-r\) 行為系數進行線性組合生成零向量。所以說,消元矩陣的最下面 \(m-r\) 個行向量就是左零矩陣的基。左零矩陣的 “左” 也是出於消元矩陣是左乘原矩陣的。


秩 1 矩陣

我們來簡略的介紹一下一種很簡單的矩陣:秩 \(1\) 矩陣。如其名,就是秩為 \(1\) 的矩陣,比如:

\[\begin{bmatrix} 1 & 4 & 5 \\ 2 & 8 & 10 \\ \end{bmatrix} \]

這種矩陣的行和列其實都是一個向量的倍數,我們可以將其拆解得非常好看:

\[\begin{bmatrix} 1 & 4 & 5 \\ 2 & 8 & 10 \\ \end{bmatrix} = \begin{bmatrix} 1 \\ 2 \end{bmatrix} \times \begin{bmatrix} 1 & 4 & 5 \end{bmatrix} \]

\(1\) 矩陣的行列式和特征值有非常好性質,這個我們之后再說。重要的是,任何秩 \(1\) 矩陣可以表示為 \(A=UV^T\) 的形式,而對於任意一個秩為 \(n\) 的矩陣,我們可以將其分解成 \(n\) 個秩 \(1\) 矩陣。秩 \(1\) 矩陣可以當成“積木”用。


更多向量空間

我們之前都是在討論以向量為元素的向量空間。現在來看看一些更抽象的向量空間。

我們先舉個仍在向量范圍內的栗子。我們把所有滿足:\(A=\begin{bmatrix}1 & 1& 1&1\end{bmatrix}\,,Av=0\) 的向量 \(v\) 看作一個向量空間 \(S\) 。很明顯,\(v\) 的四個坐標值之和為 \(0\) 。因為 \(S\) 其實就是 \(A\) 的零空間,我們很容易知道 \(S\) 的維數是 \(3\) 。為何一個有四個坐標的向量空間只有四維呢?是因為有坐標值之和為 \(0\) 的限制條件,有三個坐標確定后,最后一個坐標也隨之確定。這么看來,對於更抽象的向量空間,我們可以用自由度來判斷其維數。

然后,我們再看看第二個栗子

我們嘗試用所有的 \(3\times 3\) 矩陣生成一個向量空間 \(M\) 。既然是向量空間,我們首要關注其維數和基。

不難看出這個向量空間的維數是 \(9\) ,因為其有 \(9\) 個可以自由變換的標量,或者說有 \(9\) 個自由度。同樣,我們也可以列出一組基:

\[\begin{bmatrix} 1 & 0 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0 \end{bmatrix}\qquad\ \begin{bmatrix} 0 & 1 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0 \end{bmatrix} \dots\dots\quad \begin{bmatrix} 0 & 0 & 0\\ 0 & 0 & 0\\ 0 & 0 & 1 \end{bmatrix} \]

那么子空間呢?

\(3\times 3\) 的對稱( \(Symmetric\) )矩陣、對角( \(Diagonal\) )矩陣、上三角( \(Upper\;triangular\) )陣和下三角( \(Lower\;triangular\) )矩陣都是其子空間,也不難得出他們的維數分別是:\(dim(S)=6\)\(dim(D)=3\)\(dim(U)=6\)\(dim(L)=6\)

容易發現,其實 \(S\cap U=D\) 。但是 \(S\cup U\) 不是一個向量空間,我們可以定義一個向量空間的 \(+\) 運算,意為兩個向量空間的所有線性組合,這樣 \(S+U\) 就是一個向量空間了,而且剛好就是我們 \(3\times 3\) 矩陣空間 $ M $ 。

這時候我們就能發現,\(dim(S)+dim(U)=dim(D)+dim(M)\) 。我們不妨大膽猜測:

\[dim(S)+dim(U)=dim(S\cap U)+dim(S+U) \]

這個式子似乎叫向量空間的維數定理(:

證明其實很容易意會,我們知道一個向量空間的維數就是其基向量的個數。而 \(dim(S)+dim(U)\)\(dim(S+U)\) 有區別就是因為前者將 \(U、S\) 中重復的基向量算了兩遍,我們只需要在等式右側再加上這部分( \(dim(S\cap U)\) )即可。


其他美味的栗子

學習了這么多理論內容,讓我們通過實際應用再來體會下線代的美妙(

第一個栗子是關於解偏微分方程。

比如有個二階偏微分方程:\(af''(x)+bf'(x)+cf(x)=0\) 。其實就等價於求:

\[Ax = \begin{bmatrix} a & b & c \\ \end{bmatrix} \times \begin{bmatrix} \varphi''(x) \\ \varphi'(x) \\ \varphi(x) \end{bmatrix} =0 \]

具體解的過程就不贅述。但是我們知道矩陣 \(A\) 是秩 \(1\) 矩陣,它的零空間是二維的。所以我們應該有兩組線性不相關的 \(x\) ,也就是有兩個線性不相關的函數 \(\varphi\) 。因此,當我們解出重根時才要再設個 \(\frac{y}{e^{\lambda x}}=u(x)\) 來獲得一個線性不相關的解;以及在解出共軛復根時,才能通過兩個解的線性變換把復數部分消去。

另一個栗子是關於圖。

我們用列代表每個點,行代表一條邊,將上面的圖表示如下,這里的正負指的是邊上值的正方向,不是指有向邊:

\[\begin{bmatrix} -1 & 1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ 1 & 0 & -1 & 0 \\ 1 & 0 & 0 & -1 \\ 0 & 0 & -1 & 1 \\ \end{bmatrix} \]

這種矩陣當然很浪費空間,被稱作稀疏( \(sparse\) )矩陣。通過觀察,我們可以發現 \(row_1+ row_2+row_3=0\) ,而確實在圖中這三條邊形成了一個回路,由此可想,對這個矩陣的消元實際就是在求這個圖的生成樹(個人感覺好像把邊按邊權排個序再消元就是最小生成樹了)。我們發現回路數就等於自由變量的個數,即 \(num(loop)=m-r\) ,而 \(m\) 是邊的個數, \(r\) 是生成樹的邊數,就是點數減一。於是我們得到:\(num(loop)=num(edge)-num(node)+1\) ,也就是傳說中的歐拉定理。

我們再把這個圖具體化一下,假設這是個電路圖。我們來看看 \(Ax=b\) 的含義:

\[Ax= \begin{bmatrix} -1 & 1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ 1 & 0 & -1 & 0 \\ 1 & 0 & 0 & -1 \\ 0 & 0 & -1 & 1 \\ \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{bmatrix} = \begin{bmatrix} x_2-x_1\\ x_3-x_2 \\ x_1-x_3 \\ x_1-x_4 \\ x_4-x_3 \end{bmatrix} =V \]

很明顯就是每一條邊的電壓值,而 \(Ax=0\) 其實就在表示基爾霍夫定律。而另一條基爾霍夫定律也可以被表示出來:

\[A^Ti= \begin{bmatrix} -1 & 0 & 1 & 1 & 0\\ 1 & -1 & 0 & 0 & 0\\ 0 & 1 & -1 & 0 & -1\\ 0 & 0 & 0 & -1 & 1\\ \end{bmatrix} \begin{bmatrix} i_1 \\ i_2 \\ i_3 \\ i_4 \\ i_5 \end{bmatrix} = \pmb{0} \]

將這兩個式子用電導 \(C\) 關聯起來就是:\(Ax=V,\;A^Ti=0,\;i=CV\implies A^TCAx=0\)

這是個很妙的式子,其中的 \(A^TCA\) 的形式很有妙用,與其相關的最小二乘法我們將在下一部分介紹。


正交和最小二乘法

正交

我們對向量的正交( \(orthogonal\) )非常熟悉,即兩個向量的點積為\(0\),現在我們要把正交的概念擴展到空間。何為兩個空間的正交?我們這樣定義:

\[\forall a\in A,\;\forall b\in B \quad a^T\cdot b=0\iff {A\,\scr與\,\it B\,\scr正交} \]

可以很明顯地看出空間正交和垂直( \(perpendicular\) )的不同,我們要求兩個空間的所有向量互相垂直,這說明兩個相交(不為零向量)的空間是絕對不正交的。

回想我們之前提到的零空間的定義: \(Ax=0\) ,其實就表明了 \(A\) 的零空間中的所有向量和 \(A\) 的行空間垂直,那么我們就可以說這兩個空間是正交的。並且這還是一個特別的正交,零空間和行空間的維數加起來剛好是 \(n\) ,相當於這兩個正交子空間把一個 \(R^n\) 的空間剛好分割成了兩部分,這種正交稱為正交補( \(orthogonal\;complement\) )。同理,一個矩陣的左零空間和列空間也是正交的。

可以發現,一個子空間占據了一個空間的一部分基向量(如果是一組互相垂直的基),那么這個子空間的正交空間就只能在其他基向量的方向發展了,所以兩個正交空間的維數加起來最大就是這兩個子空間所屬空間的維數。


如何解一個無解的方程

第一眼看上去是個非常荒謬的問題,其實不然。

我們在實際問題測算中,經常要多次測量,列出多個方程,這些方程中還難免有一些誤差和錯誤。所以我們處理方程 \(Ax=b\) 時,經常會有 \(A\) 的行數遠遠大於列數的情況,而且大概率是無解的。我們當然不能說處理的問題無解了,我們要找到一個盡量符合方程的解,讓結果盡量擬合實際數據。

對於 \(Ax= b\) 無解的情況,我們知道是因為 \(A\) 消元消出了零行,或者說\(A\)是不可逆的。

在之前,我們提到過一個神奇的式子: \(A^TA\) 。我們這里先貼一個結論:

\[N(A^TA)=N(A) \implies rank(A^TA)=rank(A) \]

根據這個結論,我們知道當 \(A\) 的列向量全部線性不相關時, \(A^TA\) (是個 \(n\times n\) 的方陣)可逆。而根據我們剛才的討論,方程 \(Ax=b\) 無解是因為方程間的沖突,也就是行向量線性相關,列向量的線性相關對方程的有解性是沒有影響的,如果有列向量相關,將它們對應的未知數並入主元中即可。這樣一來,我們能保證矩陣 \(A\) 列滿秩 。也就能保證 \(A^TA\) 是可逆的。

接下來我們來討論如何利用 \(A^TA\) 是可逆的求出一組解,如何求出最能擬合的解。


投影

我們知道方程 \(Ax= b\) 無解的一個解釋是 \(b\) 不在 \(A\) 矩陣的列空間里。而我們要找到近似解,就要找到 \(A\) 列空間里與 \(b\) 最接近的一個向量 \(p\) 。對於一個在 \(A\) 列空間里的 \(p =A\hat{x}\) (理解為 \(p\)\(A\) 各列的線性組合) 都有一個誤差向量 \(e=b-p\),要使誤差最小,當然是讓 \(p\) 為向量 \(b\)\(A\) 列空間上的投影( \(project\) ),這樣 \(e\) 就與 \(A\) 的列空間正交。

我們默認 \(A\) 滿秩,那么其每一列都是列空間的一個基向量。於是有:

\[\begin{align*} A^Te=0\iff A^T(b-A\hat{x})=0 \\\implies A^TA\hat{x}=A^Tb\\ \implies\hat{x}=(A^TA)^{-1}A^Tb\\ \end{align*} \]

\[\because p=A\hat{x}\quad \therefore p=A(A^TA)^{-1}A^Tb\\ {\scr設\,\it P\,\scr為投影矩陣}\\ p=Pb \]

乍一看這個投影矩陣好像可以化簡: \(P=A(A^TA)^{-1}A^T=AA^{-1}(A^T)^{-1}A^T=I\) ,但是結果明顯不合理。這是因為 \(A\) 一般不是可逆矩陣,甚至不是方陣,不能套用這個計算規則。而當\(A\)可逆時,相當於是滿秩矩陣,列空間就是整個空間,這時\(b\)在列空間中的投影就是它本身,符合上面的 \(P=I\)

我們不妨再嘗試幾個情況,當\(b\)\(A\)的列空間內時, \(b=Ax'\)\(Pb=A(A^TA)^{-1}A^TAx'=Ax'=b\) ;當 \(b\)\(A\) 的列空間正交時, \(A^Tb=0\) ,顯然有 \(Pb=A(A^TA)^{-1}A^Tb=0\) 。都符合我們的幾何認知。

除此之外,我們還能發現 \(P^T=P\)\(P^n=P\) 。第一個不難證明,此處不贅述。第二個可以先證明 \(P^2=P\) ,只需將式子列出: \(P^2=A(A^TA)^{-1}A^TA(A^TA)^{-1}A^T=A(A^TA)^{-1}A^T\) 。第二個性質也有很好的幾何解釋:任何向量只要投影一次就在目標空間上了,再投影也不會有變化。

上面的推導過程可以總結成三個重要的式子:

\[\begin{align} p=A\hat{x} \\ A^TA\hat{x}=A^Tb \\ P=A(A^TA)^{-1}A^T \end{align} \]

我們照着下面這個 形象 的圖來再理解下這幾個式子。

當我們拿到無解的方程 \(Ax=b\) 時,我們要將 \(b\) 投影到 \(A\) 的列空間得出一組最佳擬合解 \(\hat{x}\) ,於是將問題轉化成了 \(A\hat{x}=p\) 。通過正交性質我們得到了方程 \(A^TA\hat{x}=A^Tb\) ,並回代 \(\hat{x}\) 得到了投影矩陣 \(P\)

由於 \(e\)\(A\) 的列空間正交,所以 \(e\) 在矩陣 \(A\) 的左零空間中,左零空間和列空間互為正交補,投影過程就像是將 \(b\) 正交分解了 。根據 \(e+p=b\)\((I-P)\) 就是將 \(b\) 投影到 \(N(A^T)\) 上的投影矩陣,也滿足上述的投影矩陣的性質。

雖然從實際意義上我們應該解 \(A\hat{x}=p\) 來得到近似解,但是翻譯正交關系得到的方程下 \(A^TA\hat{x}=A^Tb\) 就已經提供了 \(\hat{x}\) ,再去解出投影矩陣回代就繞了遠路,再根據前面提到的 \(A^TA\) 必定有逆,我們直接解這個式子就能得到答案。


最小二乘法

我們回到最小二乘的概念上來,最小二乘是要保證擬合值和實際值相差的平方和最小,即 \(Min\sum{(\hat{y_i}-y_i)^2}\) ,用線性代數的語言其實就是求 \(Min\,|A\hat{x}-b|^2\) ,也就是求 \(Min\,|e|^2\) ,而垂直的向量當然是最短的。這就是線性代數表示的最小二乘。

我們不妨舉個栗子來具體體會下:試求 \((1,1)\)\((2,2)\)\((3,2)\) 的最佳擬合直線。

我們先將這個問題轉化成矩陣表示的形式:

\[{\scr設擬合直線為:\it y=\hat{k}x+\hat{m}}\\ \begin{array}{ccc} A & x\quad =& b \\ \begin{bmatrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{bmatrix} \times & \begin{bmatrix} m \\ k \end{bmatrix} =& \begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix} \end{array}\\{\scr當然是無解的,我們按照上述過程進行操作} \\ \begin{array}{ccccc} A^T & A & \hat{x}\quad =& A^T & b \\ \begin{bmatrix} 1 & 1 & 1 \\ 1 & 2 & 3 \end{bmatrix}\times & \begin{bmatrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{bmatrix} \times & \begin{bmatrix} \hat{m} \\ \hat{k} \end{bmatrix} =& \begin{bmatrix} 1 & 1 & 1 \\ 1 & 2 & 3 \end{bmatrix}\times & \begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix} \end{array} \\ \begin{array}{ccc} A^TA & \hat{x}\quad =& A^Tb \\ \begin{bmatrix} 3 & 6 \\ 6 & 14 \end{bmatrix} \times & \begin{bmatrix} \hat{m} \\ \hat{k} \end{bmatrix} =& \begin{bmatrix} 5 \\ 11 \end{bmatrix} \end{array}\\ {\scr消元解得:}\\ \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \times \begin{bmatrix} \hat{m} \\ \hat{k} \end{bmatrix} = \begin{bmatrix} 2\over3 \\ 1\over2 \end{bmatrix} \]

計算時利用 \(A^TA\) 的對稱性質可以減少計算量。同理可以由此簡化投影矩陣 \(P\) 的計算。

用線性代數方法算完后,我們再嘗試下用微積分方法計算下上面的栗子:

\[{\scr設擬合直線為:\it y=kx+m,\scr即要求\it\sum{(kx_i+m-y_i)^2}\scr最小 }\\ \begin{align*} \sum{(kx_i+m-y_i)^2}=\sum{k^2x_i^2+m^2+y_i^2-2kx_iy_i+2kx_im-2my_i} \\ =14k^2+(12m-22)k+3m^2-10m+9\\ =3m^2+(12k-10)m+14k^2-22k+9 \end{align*}\\ {\scr分別對\it\, k,m\,\scr求偏導為0}\\ \begin{cases} 3m+6k=5 & \text{(1)}\\ 6m+14k=11 & \text{(2)} \end{cases} \]

結果當然是一樣的(

最后我們以最開始的結論的證明作結: \(N(A^TA)=N(A)\)

\[A^TA\hat{x}=0,\quad Ax=0 \\ {\scr只需證明\it\,\hat{x}=x,\,\scr易證}\,x\subset \hat{x}\\ A^TA\hat{x}=0\implies \hat{x}^TA^TA\hat{x}=0\implies (A\hat{x})^TA\hat{x}=0\\ {\scr 即\it\,A\hat{x}=0,\scr故\it \hat{x}\subset x }\qquad\therefore \hat{x}=x \]

最小二乘雖然是一種非常重要的擬合方法,但是明顯其受誤差較大的數據影響較大。實際情況一般要加上一些優化。


正交基和 Gram-Schmidt 正交化

在之前的消元中,我們直接將線性不相關的 \(A\) 的各列作為列空間的基,這雖然已經很方便了,但我們能找到更好的基。就像我們偏好在一個正交的坐標系中處理問題,我們期望找到一組正交的單位向量作為列空間的基。

我們稱這樣一組基為標准正交( \(orthonormal\) )基 \(Q\) ,表示為:

\[\forall\,q_i,\,q_j\in Q\quad q_i^Tq_j=\begin{cases} 0 & if\;i\neq j \\ 1 & if\; i=j \end{cases} \]

因為,每一個向量都相互正交,以這些向量為列向量的\(Q\)將有非常好的性質: \(Q^TQ=I\) ,尤其對於 \(Q\) 是方陣的情況, \(Q^T=Q^{-1}\) 。 由於 \(A\)\(Q\) 的列空間是完全一樣的,我們的投影矩陣就可以簡化成 \(P=QQ^T\)

那么為了求得這個正交基 \(Q\) ,我們仍要利用投影的方法。之前我們是利用 \(P\) 將一個向量投影到另一個空間上,同時我們也提到了使用 \(I-P\) 可以將一個向量在這個平面的投影減掉,產生一個垂直於當前空間的向量。那么對於基向量 \(a_1,a_2\) ,我們可以以 \(a_1\) 作基准( \(a_1'=a_1\) ),將 \(a_2\) 減去其在 \(a_1\) 上的投影: \(a_2'=a_2-\frac{a_1'a_1'^T}{a_1'^Ta_1'}a_2\) ,可以發現 \(a_1'^Ta_1'\)\(a_1'^Ta_2\) 都是常數,於是我們可以改寫為: \(a_2'=a_2-\frac{a_1'^Ta_2}{a_1'^Ta_1'}a_1'\) 。以此類推,新的正交基為:

\[a_i'=a_i-\sum_{j=1}^{i-1}{\frac{a_j'^Ta_i}{a_j'^Ta_j'}a_j'} \]

然后我們再將每一個向量除以自身的模化成單位向量即可 : \(q_i= \frac{a_i'}{|a_i'|}\)

根據這個原理, Gram 和 Schmidt 給出了一種公式化的求正交向量的方法。和高斯消元時極為相似,我們也將矩陣 \(A\) 進行分解,分解成 \(A=QR\) 。因為 \(A\)\(Q\) 列空間相同,右乘一個矩陣將列向量線性組合就能得到對方。和 \(LU\) 分解不同的是, \(q_i\) 的產生需要 \(q_{j}\;(j<i)\) 的參與,這樣按處理步驟來乘 \(R\) 會造成很多必須要手算的項。若是乘個逆將 \(R\) 移到右側,反着操作順序乘, \(R\) 的每一項就有直觀的含義了(請參考 \(A=LU\) 中為何將消元矩陣移到右側理解)。

除此之外,由正交性質可知, \(R\) 還是個上三角矩陣(且可逆):

\[R= \begin{bmatrix} q_1^Ta_1 & q_1^Ta_2 & \cdots & q_1^Ta_n \\ q_2^Ta_1 & q_2^Ta_2 & \cdots & q_2^Ta_n \\ \vdots & \vdots & \ddots & \vdots \\ q_n^Ta_1 & q_n^Ta_2 & \cdots & q_n^Ta_n \end{bmatrix}= \begin{bmatrix} q_1^Ta_1 & q_1^Ta_2 & \cdots & q_1^Ta_n \\ 0 & q_2^Ta_2 & \cdots & q_2^Ta_n \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & q_n^Ta_n \end{bmatrix} \]

接下來將詳細介紹如何得到 \(R\)\(Q\)

我們將從\(1\)\(n\)對每一個\(k\)進行如下操作:

\[r_{kk}=\sqrt{\sum_{i=1}^{m}{a_{ik}^2}}=|a_k| \]

\[{\scr對於 \it\, i=1,2\cdots m} \quad q_{ik}=\frac{a_{ik}}{r_{kk}}\implies q_k=\frac{a_k}{|a_k|} \]

\[{\scr對於\,\it j=1,2\cdots n}\quad r_{kj}=\sum_{i=1}^{m}{q_{ik}a_{ij}}\implies r_{kj}=\frac{a_k^Ta_j}{|a_k|} \]

\[{\scr對於 \it\,j=k+1,k+2\cdots n\;,\;i=1,2\cdots m}\quad \\ a_{ij}=a_{ij}-r_{kj}q_{ik}\implies a_j=a_j-\frac{a_k^Ta_j}{a_k^Ta_k}a_k \]

對於一個 \(k\) ,我們通過前兩步得到 \(q_k\) ,並從后面所有的 \(a_{i}\;(i>k)\) 中減去 \(\frac{a_k^Ta_i}{a_k^Ta_k}a_k\) ,也就是說,我們在操作到 \(k\) 時,所有的 \(a_i\;(i\leq k)\) 已經變成 \(a_i'\) 了,而 \(r_{kj}\) 自然變成了 \(q_k^Ta_j\) 。於是我們最終就能得到 \(A'\)\(Q\)\(R\) ,且計算次數的數量級只有 \(n^2m\)

之后,我們將 \(A\) 分解,將 \(A^TA\hat{x}=A^Tb\) 化為 \(R^TQ^TQR\hat{x}= R^TQ^Tb\) ,由於 \(Q^TQ= I\) 以及 \(R^T\) 是可逆的,最終簡化成了 \(R\hat{x}=Q^Tb\) 。我們求出的 \(R\) 又是個上三角矩陣,甚至連消元都不用就能解出 \(\hat{x}\)


TO BE CONTINUED


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM