前言
某次模擬賽被矩陣虐哭,補一波線代
這篇博客偏入門,概念較多,算法相關較少
大力膜拜\(3B1B\)的線性代數的本質系列
(參考資料來源,或者干脆叫觀影總結吧……)
完全就是觀影總結\(qwq\)
記號:不作特殊說明,本文中的大寫字母均表示某個矩陣,小寫字母均表示某個向量
順便一提,如果對標題分布有點混亂,那么建議看一眼博客右側的分級目錄
向量
向量的定義
高考課本講的向量大概是:具有長度和方向的箭頭
\(OI\)中向量大部分情況下是:一個\(n*1\)的矩陣,或者說具有實際含義的一列數字 \(\begin{bmatrix}1\\1\\4\\5\\1\\4\end{bmatrix}\)
然而實際上只要滿足兩個事物相加或相乘有意義就可以稱之為向量,后面再詳細介紹這里
但是這提示了我們:向量相加和相乘在線性代數中起着極為重要的作用
為了更適合入門,我們下面的講解都會優先考慮幾何意義和二維平面
在二維坐標系中,我們定義向量為從原點出發有長度和方向的箭頭,雖然理論上向量只由長度和方向決定,與起點無關,但在線代中向量通常以原點為起點
例如:
這里有一個我們通常意義上的向量
那么這個箭頭和我們的另一種形式:一列數字有什么關聯呢?
我們發現一個向量坐標由一對數字構成,這對數字指引你如何從原點(它的起點)出發,到達它的尖端
如上圖中,我們可以通過尖端\(B\)的坐標\((3,2)\)了解到,我們可以先由原點向\(x\)軸正方向走\(3\)個單位長度,再向\(y\)軸走\(2\)個單位長度得到
如果我們規定原點是一切向量的起點,那么只要一對數字就可以唯一確定一個二維向量
上圖中的箭頭可以表示為\(\begin{bmatrix}3\\2\end{bmatrix}\) 為了與坐標區分,我們采用豎寫加方括號
我們應該可以腦補出三維的場景,這里我就不畫圖了我實在畫不出來了
向量加法
如圖地我們由兩個向量\(u\)和\(v\)
對於求出\(w=u+v\)的結果,只需要將\(v\)的起點移動到\(u\)的尖端,然后由\(u\)的起點指向\(v\)的尖端
這是線性代數中為數不多的允許向量的起點離開原點的情況
為什么這樣定義向量加法?
因為我們可以將一個向量看作一段運動,可以發現在上圖中,我們先按照\(u\)向量所描述的方式運動,再按照\(v\)向量所描述的方式運動,最后與直接按照\(w\)向量所描述的方式運動是等價的
它也剛好對應了向量所代表的數值上的加法運算:
\(\begin{bmatrix}3\\1\end{bmatrix}+\begin{bmatrix}2\\-2\end{bmatrix}=\begin{bmatrix}3+2\\1-2\end{bmatrix}=\begin{bmatrix}5\\-1\end{bmatrix}\)
向量數乘
對於一個向量
我們將它乘以一個標量\(2\)得到:
效果就是將長度伸長為原來的兩倍
如果我們將它乘以\(\frac{1}{2}\)呢?
效果就是先反向,然后長度縮小為原來的\(\frac{1}{2}\)
實際上自始自終,標量在線性代數中的主要作用就是縮放向量
從數字角度看,每個向量數乘即將每一個分量乘以這個數字
\(2*\begin{bmatrix}4\\2\end{bmatrix}=\begin{bmatrix}2*4\\2*2\end{bmatrix}=\begin{bmatrix}8\\4\end{bmatrix}\)
線性組合
線性組合:
兩個向量通過改變數乘的標量而產生新的向量
我們可以從另外一個角度去理解一個向量的坐標:對於一個向量的放縮
對於向量\(v\)來說,我們可以看作是由\(i\)伸長為原來的\(3\)倍,\(j\)反向伸長為原來的\(2\)倍再相加得到的
此時向量\(v\)的橫縱坐標作為一個標量對兩個向量進行放縮,放縮后的向量通過加和得到了向量\(v\)
其中\(i\)和\(j\)被稱為坐標系的基,或者基向量,它表示它是某個的向量坐標放縮並加和的對象
則二維空間中所有的向量都是由兩個基向量線性組合得到的
張成的空間
兩個向量線性組合得到的所有向量的集合稱為張成的空間
我們發現,所有的向量都可以由基向量組合表示,也就是說如果我們選取了不同的基向量那么將會產生不同的坐標系
比如我們選取了下面的兩個向量作為基向量
那么我們仍然可以通過基向量的線性組合產生二維空間中所有的向量,雖然對於同一組向量來說它們的坐標表示也許不太相同
那么我們稱這組新的基向量\(u,v\)張成的空間為二維平面
我們考慮一種特殊情況
兩個向量只能組合出與當前向量共線的全部向量,我們稱\(i,j\)張成的空間為一條直線
對於這種特殊情況,我們概括為:某一個向量的增加對於張成的空間沒有添加新的維度,那么我們稱這組向量是線性相關的
或者說其中一個向量是由其他向量線性組合得到的,則這組向量線性相關
對應地,如果我們每個向量都對張成的空間增加了新的維度,那么我們稱這組向量線性無關
還有更特殊的情況,比如兩個向量都是原點,那么張成的空間就是一個點
基
然而注意到在特殊情況中我並沒有稱兩個向量為基向量,因為基向量有嚴格的定義:
向量空間中的一組基是張成該空間的一個線性無關向量集
線性變換
線性變換定義
變換其實和函數的定義類似,不過變換是輸入一個向量,再輸出一個向量
對於一個空間的變換其實由很多,比如拉伸,扭曲,旋轉等等,但是我們考慮的只有線性變換
那么什么才是線性的變換呢?
1.直線在變換后仍然是直線
2.原點保持固定
我相信你們能夠腦補出什么是線性變換,什么不是線性變換,因為這個東西我並沒有找到合適的畫圖工具展現出來……
但是對於一個經典的例子我由必要手繪一下
對於這樣一個變換,它並不是線性的,因為某些我們沒有展示在圖中的線發生了扭曲
可以自行腦補一下原圖中\(F-N-R\)這條直線變換之后的形狀(草老子畫不出來啊)
我們其實可以認為,一個變換如果保持網格線之間平行並且等距,那么這個變換是線性變換
那么我們如何通過數值去描繪一個線性變換?
考慮到基向量的特殊性,我們只需要描述線性變換之后基向量在原空間中的坐標,就可以表示出這個變換的效果
同時線性變換有重要的推論:對於一個向量\(v\),它在變換前和變換后都是基向量的特定的線性組合得到的
即 我們設\(d^{'}\)是向量\(d\)經過某個線性變換的向量,那么如果
\(v=x*i+y*j\)
則
\(v^{'}=x*i^{'}+y*j^{'}\)
其中\(x,y\)是標量
舉個例子,一個向量\((2,4)\),如果經過了某個線性變換,基向量由\((1,0)\)和\((0,1)\)變為了\((2,1)\)和\((1,2)\)
那么這個向量在變換后的坐標應該為\(2*(2,1)+4*(1,2)=(8,10)\)
線性變換與矩陣
由上面可以得出,對於任意一個線性變換,只要記錄了變換之后的基向量,和原向量,就可以得到變換之后的新向量
如果我們的基向量變為了\((2,1)和(1,2)\),那么對於任意向量\(\begin{bmatrix}x\\y\end{bmatrix}\),我們可以通過
\(\begin{bmatrix}x\\y\end{bmatrix}^{'}=x*\begin{bmatrix}2\\1\end{bmatrix}+y*\begin{bmatrix}1\\2\end{bmatrix}\)得到變換后的向量
我們通常把基向量\((a,c),(b,d)\)封裝為一個\(2*2\)的矩陣,將變換過程稱為矩陣乘法
\(\begin{bmatrix}a\ b\\c\ d\end{bmatrix}\ \begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}x\\y\end{bmatrix}^{'}\)
在這里一個\(2*2\)的矩陣即表示一個線性變換,其中每一列是變換后的一個基向量
我們仔細分解一下矩陣乘法的過程
\(\begin{bmatrix}a\ b\\c\ d\end{bmatrix}\ \begin{bmatrix}x\\y\end{bmatrix}=x*\begin{bmatrix}a\\c\end{bmatrix}+y*\begin{bmatrix}b\\d\end{bmatrix}= \begin{bmatrix}x*a+y*b\\x*c+y*d\end{bmatrix}\)
現在也許能更清楚地理解為什么矩陣乘法要這樣定義了
試着用矩陣描述一些變換:
把空間逆時針旋轉\(90^{。}\)
意味着:\(\begin{bmatrix}\ 0\ -1\\1\ 0\end{bmatrix}\)(這東西怎么這么丑啊\(qwq\))
有一個特殊的概念:如果我們矩陣中的幾個向量是線性相關的,會導致你遭受降維打擊變換之后空間維度降低
線性變換復合與矩陣乘法
有時候我們需要連續描述兩個或多個線性變換,但是我們仍然可以追蹤基向量的變化來實現對變換的描述
不過我們可能需要借助一些工具來描述,比如矩陣
假設我們要對一個空間進行兩次變換:先旋轉再剪切
我們先將空間逆時針旋轉\(90^{。}\)得到
\(\begin{bmatrix}\ 0\ -1\\1\ 0\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}\)
再剪切(想要知道為什么這個矩陣叫做剪切可以自己模擬一下把基向量變成矩陣的兩列)
\(\begin{bmatrix}1\ 1\\0\ 1\end{bmatrix}\bigg(\begin{bmatrix}\ 0\ -1\\1\ 0\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}\bigg)\)
那么它將等價於
\(\bigg(\begin{bmatrix}1\ 1\\0\ 1\end{bmatrix}\begin{bmatrix}\ 0\ -1\\1\ 0\end{bmatrix}\bigg)\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}\ 1\ -1\\1\ 0\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}\)
我們稱左邊的矩陣為等價矩陣
考慮在幾何中我們兩個變化的描述應該為,基向量先變為了\((0,1),(-1,0)\),又在新的空間中變為了\((1,0),(1,1)\),那么以左邊兩個矩陣的乘法作為兩個變換連續的效果是很合理的(矩陣中描述變換從右向左描述)
如何計算兩個矩陣相乘?
還記得我們矩陣的含義嗎,每一列代表了一個向量
也就是說對於
\(\begin{bmatrix}e\ f\\g\ h\end{bmatrix}\begin{bmatrix}a\ b\\c\ d\end{bmatrix}\),我們可以看作右邊的矩陣的每一列代表的向量做左邊的變換
\(\begin{bmatrix}e\ f\\g\ h\end{bmatrix}\begin{bmatrix}a\ b\\c\ d\end{bmatrix}= \begin{bmatrix}e\ f\\g\ h\end{bmatrix}\begin{bmatrix}a\\c\end{bmatrix}+\begin{bmatrix}e\ f\\g\ h\end{bmatrix}\begin{bmatrix}b\\d\end{bmatrix} =\begin{bmatrix}ae+bg\ af+bh\\ce+dg\ cf+dh\end{bmatrix}\)
中間應該還有一步向量乘變換,懶得展開了
當然我們應該可以通過這個過程發現矩陣乘法並不滿足交換律
但是它為什么滿足結合律呢?
考慮矩陣變換是從右向左描述的,所以……矩陣乘法中加不加括號在幾何意義上根本沒有任何變化
高維的情況應該可以自己推出來,但是實在是難以表述&作出圖,所以就不在這里寫了
行列式
在線性變換中,也許我們會想要知道一個問題:在經過了某個線性變換之后,原空間受到了多少拉伸或者擠壓?
或者轉化成一個在二維平面中等價的問題:一個給定區域的面積大小的變化
行列式定義
一個線性變換對“體積”所造成的影響。
當然由於是在二維平面中的線性變換,所以我們在研究這個問題的時候可以只研究一個特殊部分:兩個基向量圍成的四邊形的面積的變化比例
比如說:一個\(2*2\)矩陣的行列式為\(3\),那么說明\(i,j\)兩個基向量四邊形的面積變為原來的三倍
特殊地:有些矩陣的行列式為\(0\),例如:\(det\bigg(\begin{bmatrix}1\ 3\\0\ 0\end{bmatrix}\bigg)=0\)
這表示在經過這個線性變換之后空間將降維
另外還有\(det\bigg(\begin{bmatrix}0\ 1\\1\ 0\end{bmatrix}\bigg)=-1\)
雖然在經過\(\begin{bmatrix}0\ 1\\1\ 0\end{bmatrix}\)這個變換之后\(i,j\)兩個基向量之間的四邊形面積仍然是\(1\),但是我們會發現,\(i\)向量變到了\(j\)向量的左邊,兩個向量的相對位置交換了,空間的定向發生了改變,所以得到的行列式值為負
類比可以推出:在三維空間中,一個線性無關方程組的行列式的值代表的是三個向量確定的平行六面體的體積
如果在三維情況下行列式的值為負呢?
這里有一個用來描述三維空間空間定向的方法,叫做 “右手定則”
在一個三維空間中,我們假設基向量為\(i,j,k\),分別對應\(x,y,z\)軸
一般情況下,我們右手食指指向\(i\),中指指向\(j\),大拇指指向\(k\)
如果在某個線性變換之后,你做到這一步需要變成左手,那么說明這個三維空間的定向發生了改變,此時行列式的值應該為負
對於行列式的計算我打算單獨拿出來講,因為本篇文章偏入門,這里只介紹行列式的定義和概念
不過由於后面的需要,我需要指出對於\(2*2\)的矩陣\(\begin{bmatrix}a\ b\\c\ d\end{bmatrix}\),它的行列式為\(ad-bc\)
如果你真的理解了行列式的具體含義,你應該可以很輕易的理解下面這個等式
設\(M_i\)為某個線性變換矩陣
線性方程組
在某些情況下,方程組會具有一個非常特殊的形式:
在每個方程中,未知量只具有常系數,未知量之間只進行加和操作
整理這種方程組通常是將所有未知量放在側坐,將相同的未知量放在同一列對齊(有可能需要補\(0\)完成這一步),其他常量放在等式右側
我們稱這種方程組為線性方程組
其實我們會發現這種方程組對應着一個矩陣的形式
\(\begin{bmatrix}2\ 5\ 3\\4\ 0\ 8\\1\ 3\ 0\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}-3\\0\\2\end{bmatrix}\)
我們稱左側的系數矩陣為\(A\),包含未知量的矩陣為\(x\),右側的結果矩陣為\(v\)
則可以簡寫為\(Ax=v\),結合前面的知識,我們已經可以發現這其實是一個線性變換了
那么這個求解線性方程組就具備了它的幾何意義:對於一個線性變換后空間中的向量,找到在原空間的對應向量
那么對於這個問題我們需要稍微分類討論一下了,因為我們面臨兩種情況:\(det(A)=0\)和\(det(A)\ne 0\)
先來考慮似乎較為簡單的\(det(A)\ne 0\)
那么說明原空間經過\(A\)之后並沒有降低維度,原空間中應該只有一個向量與\(v\)對應(這個不用解釋吧應該?)
但是我們只有變換之后的向量,如果要追尋原本的向量,我們應該將\(v\)做一個\(A\)的逆變換,記作\(A^{-1}\)
所謂逆的含義應該在學乘法逆元的時候都有所了解了,大概可以總結為\(A^{-1}*A=E\),其中\(E\)為恆等變換
對於\(n\)維空間,\(E\)是一個對角全部為\(1\),其它區域全部為\(0\)的\(n*n\)的矩陣
所以可以推出:
但是特殊的\(det(A)=0\)怎么辦?
經過\(A\)之后,空間會直接降維,此時\(A\)是不存在逆矩陣的,因為沒有一種變換能使空間維度提升
但是解仍然可能存在,如果你的\(v\)恰好處於降完維之后的空間之中
至於解是什么,就不打算在本篇說明了(霧)
秩
經過線性變換之后空間的維度,我們稱為秩
比如一個平面,我們將他旋轉,那么旋轉之后它的秩為\(2\)
但是如果經歷了一個\(\begin{bmatrix}1\ 3\\0\ 0\end{bmatrix}\),它的秩為\(1\)
可以發現對於每一個降智降秩的變換,矩陣的行列式值都為\(0\)
列空間
對於一個線性變換\(A\)來說,所有可能的向量\(Av\)的集合,我們稱為\(A\)的列空間
當然這個名字的來源很好理解……因為向量\(Av\)的集合其實就是構成矩陣的每一列的向量的所有線性組合成的向量
所謂列空間,其實就是列向量張成的空間,所以秩更准確的定義應該是列空間的維數
當秩達到最大時,與矩陣的列數相等,稱之為滿秩
零空間
值得注意:\(0\)向量必定在列空間中,因為線性變換必須保持原點不動
但是\(0\)向量並不一定只是原點,舉個例子,在某個二維變換\(A\)中,若\(det(A)=0\),那么某條直線上的所有向量將會全部壓縮到原點
在某個線性變換\(A\)中,所有變換后落在原點的向量的集合,稱為零空間(或者核)
所以對於\(Ax=v\)中,如果\(v\)是零向量,那么所有\(x\)的解將是整個零空間
非方陣
目前為止,我們討論的變換方陣都是\(n*n\)的方陣,那么對於非方陣我們應該怎樣理解?
例如一個\(3*2\)的矩陣\(\begin{bmatrix}1\ 3\\4\ 1\\2\ 3\end{bmatrix}\)
它說明我們在二維空間中的兩個基向量\(i,j\)在經過某個線性變換之后對應到了某個三維空間中的二維平面
注意它對應到的是某個三維空間中的二維平面,而不是某個三維空間,沒有一種變換能讓空間升維
或者令一種\(1*2\)的矩陣\(\begin{bmatrix}1\ 2\end{bmatrix}\)
意味着某個二維空間經過線性變換之后降低到了一維,但是它仍然有兩個基向量
這對點積有着重要的意義
點積
點積定義
我們來回憶一下高中數學中的點積:
代數意義:對於兩個行數相同的矩陣\(\begin{bmatrix}a\\b\\c\end{bmatrix}·\begin{bmatrix}e\\f\\g\end{bmatrix}=ae+bf+cg\),當然不一定是三維的
幾何意義:\(u·v\)應該是\(v\)在\(u\)上的投影的長度乘以\(u\)的模長
即\(u·v\)=(\(v\)的投影長度)*(\(u\)的模長)
如果\(v\)的投影方向與\(u\)相反那么點積的值應該為負
現在你有沒有一個問題:這兩種解釋有什么關系??????
對偶性
根據線性變換的規定,如果我們有一個高維對一維的線性變換,那么對於原空間中等距分布在一條直線上的一些點,應用完線性變換之后在數軸上仍然等距
然而對於高維對一維的線性變換,我們所有的基向量都會落在一個數軸上,也就是說會產生一個\(1*n\)的變換矩陣,例如\(\begin{bmatrix}2\ 1\end{bmatrix}\)
考慮它對原空間某個向量\(\begin{bmatrix}x\\y\end{bmatrix}\)的影響\(2*x+1*y\)
等價於矩陣乘法中\(\begin{bmatrix}2\ 1\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}\)
然而我們發現這個過程貌似和點積是運算非常相似!
這個\(1*n\)的矩陣不就是一個躺倒的向量嗎?
但是線性代數中顯然沒有躺倒或者直立這種操作……但是這恰好說明一個高維對一維的線性變換和一個高維向量之間存在在某種對應關系
以二維來舉例子
我們在二維空間中放置一條數軸,其基向量為\(u\)
考慮某一種線性變換:對於任意向量\(v\),求出這條向量在數軸上的投影
那么我們在描述變換的時候應該考慮的就是,變換后\(i,j\)的位置
這里有就非常有趣的東西了!
我們作\(k\)是角\(GCD\)的角平分線,會發現\(GC=HC\),即\(i\)向數軸的投影就是\(u\)向\(x\)軸的投影,而\(u\)向\(x\)軸的投影就是\(u\)的橫坐標!
同理\(j\)向數軸的投影就是\(u\)的縱坐標
所以這個線性變換完全可以表示為\(\begin{bmatrix}u_x\ u_y\end{bmatrix}\)
而對於一個數軸非基向量\(u\),我們可以看作基向量的線性變換再乘以\(u\)的模長
這就是為什么對於一個\(v\)在\(u\)上的投影的長度乘以\(u\)的模長這樣的操作,我們用矩陣來描述就是
\(\begin{bmatrix}u_x\ u_y\end{bmatrix}\begin{bmatrix}v_x\\v_y\end{bmatrix}\)
而它恰恰與\(\begin{bmatrix}u_x\\u_y\end{bmatrix}\begin{bmatrix}v_x\\v_y\end{bmatrix}\)在數值上是一致的!
神奇的對偶性
叉積
叉積定義
兩個向量的叉積,即兩個向量圍成的平行四邊形的面積(雖然兩個向量是兩條線段,但是你們都懂我意思對吧~)
對於\(v×u\),如果\(v\)在\(u\)右側,那么結果為正,否則結果為負
所以說順序對叉積的結果是有影響的
\(v×u=-u×v\)
也許你會發現這和行列式有一點相似?這是行列式計算的是基向量圍成的面積
那么我會告訴你,\(v×u=det\bigg(\begin{bmatrix}v_x\ u_x\\v_y\ u_y\end{bmatrix}\bigg)\)
但是嚴格地說它並不是叉積……
叉積嚴格的定義是由兩個三維向量生成一個新的三維向量
其長度為面積的值,方向垂直於兩個向量所在的平面
不過是向哪邊垂直呢?我們需要右手定則
右手食指指向\(v\),中指指向\(u\),大拇指就是叉積的方向
我們是怎么求一個叉積的?
一般計算的時候也許會有個老師告訴你:
計算兩個向量\(\begin{bmatrix}v_1\\v_2\\v_3\end{bmatrix}×\begin{bmatrix}u_1\\u_2\\u_3\end{bmatrix}= det\bigg(\begin{bmatrix}i\ v_1\ u_1\\j\ v_2\ u_2\\k\ v_3\ u_3\end{bmatrix}\bigg)\)
(可能在某些書中或者博客中矩陣是橫過來的,不過結果是一樣的)
右邊矩陣的第一列居然是一組基向量?
如果你頭鐵繼續往下算,會得到\(i(v_2u_3-v_3u_2)+j(v_1u_3-v_3u_1)+k(v_1u_2-v_2u_1)\)
雖然你不知道為什么向量能夠放到矩陣中去算行列式,也不知道為什么這樣算出來的結果是叉積,但是也許你有很多種方法驗證發現得到的結果的確是\(v\)和\(u\)的叉積
我們需要一個解釋
對偶性
這里我們需要用到對偶性
回憶一下對偶性:
任何一個高維空間向一維空間的線性變換,都能在高維空間中找到一個向量唯一對應,使得某個向量應用這個線性變換等價於於這個高維向量做點積
數值上說是因為這個任何一個向量與這個線性變換做矩陣乘法和對應的高維向量做矩陣乘法結果都是一樣的
考慮一下如果我沒有告訴你什么是真正的叉積,並且你預先也沒有了解,然后在看完二維空間中叉積的計算之后,會怎樣考慮三維空間的叉積?
那么大概率會認為是三個向量的行列式
然而事實上叉積是接收兩個向量並輸出一個向量
那么我們假設有一個函數\(f\bigg(\begin{bmatrix}x\\y\\z\end{bmatrix}\bigg)=det\bigg(\begin{bmatrix}x\ v_1\ u_1\\y\ v_2\ u_2\\z\ v_3\ u_3\end{bmatrix}\bigg)\)
這個函數是線性的(線性定義:\(f(a+b)=f(a)+f(b),f(ka)=kf(a)\)其中\(k\)是標量)
這說明它對應着一個三維對一維的線性變換
那么\(f\)函數其實可以寫成
\(\begin{bmatrix}p_1\ p_2\ p_3\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=det\bigg(\begin{bmatrix}x\ v_1\ u_1\\y\ v_2\ u_2\\z\ v_3\ u_3\end{bmatrix}\bigg)\)
根據對偶性,它等價於
\(\begin{bmatrix}p_1\\p_2\\p_3\end{bmatrix}·\begin{bmatrix}x\\y\\z\end{bmatrix}=det\bigg(\begin{bmatrix}x\ v_1\ u_1\\y\ v_2\ u_2\\z\ v_3\ u_3\end{bmatrix}\bigg)\)
考慮這個式子的意義:一個向量\(p\)與一個未知向量\(x\)的點積等於\(x,v\)和\(u\)的行列式
我們已經知道在三維空間中,三個線性無關向量的行列式是一個平行六面形,那我們考慮點積的幾何含義:\(p\)在\(x\)上的投影乘以\(x\)的模長(交換\(x,p\)沒有關系)
平行六面體的體積求法應該是底面積乘以第三個向量在垂直於底面上的投影
那么如果我們把\(p\)看作第三個向量,那么\(x\)就應該滿足:長度等於平行六面體的底面積,且垂直於底面
在上面的等式中底面的邊是\(v,u\),這個\(x\)完美符合\(v,u\)叉積的定義!
所以說\(v×u=det\bigg(\begin{bmatrix}i\ v_1\ u_1\\j\ v_2\ u_2\\k\ v_3\ u_3\end{bmatrix}\bigg)\)
解出以后的\(i(v_2u_3-v_3u_2)+j(v_1u_3-v_3u_1)+k(v_1u_2-v_2u_1)\)作為一個向量,就是\(\begin{bmatrix}x\\y\\z\end{bmatrix}\)
\(upd:\)叉積似乎還有更高維的定義,不太了解
基變換
不同基向量變換
在前面我們提到過,對於一個向量的坐標,我們可以解讀為對於基向量的放縮
例如某個向量坐標為\((3,2)\),我們可以理解為將\(i\)伸長\(3\)倍,再將\(j\)伸長\(2\)倍,然后通過相加得到向量\(\begin{bmatrix}3\\2\end{bmatrix}\)
通常意義上我們的\(i,j\)分別選取\((1,0),(0,1)\)
但是如果選取不同的基向量呢?
比如有一個帥比叫動動,它選取了\((2,1),(-1,1)\)兩個向量作為基向量,稱之為\(t1,t2\)
那么他對於\(\begin{bmatrix}3\\2\end{bmatrix}\)應該是\(\begin{bmatrix}\frac{5}{3}\\\frac{1}{3}\end{bmatrix}\)
因為在他看來,這個向量是由\(\frac{5}{3}t1+\frac{1}{3}t2\)得到的
但是這個有一個奇特的地方
在動動的視角中,他認為的基向量是\((1,0),(0,1)\),所謂的\((2,1),(-1,1)\)只是以我們的視角來命名的
所以實際上我們的語言是不同的,對於同一向量,我們叫它\(\begin{bmatrix}3\\2\end{bmatrix}\),而動動叫它\(\begin{bmatrix}\frac{5}{3}\\\frac{1}{3}\end{bmatrix}\)
問題就來了
由於動動是帥比,你非常想和他做朋友,但是你們說着不同的語言,所以我們要學會不同語言之間的轉化(不同坐標系之間的轉化)
具體地說,對於動動說出的一個向量\(\begin{bmatrix}-1\\2\end{bmatrix}\),在我們的語言中它應該如何表示?
在我們的語言中,\(t1=\begin{bmatrix}2\\1\end{bmatrix},t2=\begin{bmatrix}-1\\1\end{bmatrix}\),所以向量\(v=-1\begin{bmatrix}2\\1\end{bmatrix}+2\begin{bmatrix}-1\\1\end{bmatrix} =\begin{bmatrix}-4\\1\end{bmatrix}\)
所以我們所說的\(\begin{bmatrix}-4\\1\end{bmatrix}\)就是動動所說的\(\begin{bmatrix}-1\\2\end{bmatrix}\)
結合這個形式,很容易發現這其實是一個線性變換的過程
當然,這只是我們讀懂了動動的語言,但是如果要做♂朋♂友,那么顯然動動也要讀懂我們的語言
例如我們所說的\(\begin{bmatrix}3\\2\end{bmatrix}\),動動如何知道在它的語言中是\(\begin{bmatrix}\frac{5}{3}\\\frac{1}{3}\end{bmatrix}\)表示
觀察剛才我們理解動動語言的過程,實際上動動理解我們的語言應該是一個逆過程
在剛剛的線性變換中,我們把我們的坐標系變為了動動的坐標系,應用了變換矩陣\(\begin{bmatrix}2\ -1\\1\ 1\end{bmatrix}\)
那么讓動動的坐標系變為我們的坐標系,應該應用這個矩陣的逆矩陣\(\begin{bmatrix}2\ -1\\1\ 1\end{bmatrix}^{-1}\)
它代表我們所描述的變換逆向進行
可以算出\(\begin{bmatrix}2\ -1\\1\ 1\end{bmatrix}^{-1}=\begin{bmatrix}\frac{1}{3}\ \frac{1}{3}\\\frac{-1}{3}\ \frac{2}{3}\end{bmatrix}\)
動動想要知道我們說的坐標在它的語言中如何表示,應該\(\begin{bmatrix}\frac{1}{3}\ \frac{1}{3}\\\frac{-1}{3}\ \frac{2}{3}\end{bmatrix}\begin{bmatrix}3\\2\end{bmatrix} =\begin{bmatrix}\frac{5}{3}\\\frac{1}{3}\end{bmatrix}\)
其實如果換一個角度:動動是正確的坐標系,我們才是變換過的坐標系,那么這個過程很好理解
不同基線性變換
但是實際上動動和我們之間的語言差異並不只在某一向量上
比如我們描述某一線性變換:逆時針旋轉\(90^{。}\),我們用\(\begin{bmatrix}0\ 1\\-1\ 0\end{bmatrix}\)
但是\(\begin{bmatrix}0\\1\end{bmatrix}\)和\(\begin{bmatrix}-1\\0\end{bmatrix}\)是我們語言中變換后的基向量,並不是動動的
如果我們想對動動表達逆時針旋轉\(90^{。}\),我們該怎么辦?
我們可以先把動動的基向量轉化為我們的語言,然后應用線性變換再轉化回去!
比如我們想知道動動語言中的某個向量\(v\)旋轉后在動動語言中如何描述
設\(A\)為基變換矩陣,\(M\)為旋轉矩陣,則整個過程可以表示為 \(A^{-1}MAv\),注意矩陣從右向左變換
其中\(A^{-1}MA\)就是旋轉在動動語言中的矩陣形式
特征向量與特征值
特征向量與特征值定義
考慮某個線性變換\(\begin{bmatrix}3\ 0\\1\ 2\end{bmatrix}\)
在這個線性變換下,大部分向量會離開它張成的空間
但是有些向量很特殊,它會留在原本張成的空間中
這個線性變換對它來說只不過是拉伸或者壓縮,作用同一個標量
如\(\begin{bmatrix}1\\-1\end{bmatrix}\),在經過\(\begin{bmatrix}3\ 0\\1\ 2\end{bmatrix}\)只是伸長為\(2\)倍
同時說明對於原來\(\begin{bmatrix}1\\-1\end{bmatrix}\)張成空間內的任意向量,都只是伸長為\(2\)倍
對於這類變換之后沒有離開張成空間的向量,我們稱為變換的特征向量,每一個特征向量都有一個所屬的值,稱為特征值,即衡量壓縮或拉伸比例的值
你們肯定能猜到特征值可以為負或者為零
那么它有什么作用呢?
事實上以前我們研究線性變換過於依賴坐標軸,但是線性變換本身應該和坐標軸是無關的,通過特征向量和特征值也許可以更深刻的理解線性變換
特征值的計算思想
對於一個線性變化\(A\),設\(v\)是它的某個特征向量,其特征值為\(λ\)
那么\(Av=λv\)
但是我們根本解不了這么個東西……因為等式左邊是一個矩陣乘法而右邊是向量數乘
所以我們應該將\(λ\)替換為某個矩陣,其效果為將任意向量乘以\(λ\)
由於矩陣的每一列代表了變換后的基向量,所以我們只要讓主對角線全部為\(λ\),其它地方全部為\(0\)
通常也寫作\(λE\),其中\(E\)為恆等變換
我們變形一下式子得到\((A-λE)v=0\)
如果\(v\)本身是零向量那么這個式子恆成立,但是我們一般不需要解出一個零向量作為特征向量
根據前面的知識,我們知道一個非零向量經過一個線性變換變換為了一個零向量,那么這個線性變換一定降維,或者說行列式的值為\(0\)
即\(det(A-λE)=0\)
但是有些線性變換其實並不存在特征向量,比如旋轉
在這種線性變換中,我們會解出一個虛數作為它的特征值
特征值優化矩陣乘法
考慮一個特殊情況:所有的基向量都是特征向量:
那么我們可以發現,這個線性變換對應的矩陣是一個對角矩陣,即只有主對角線上有值,其它地方都是\(0\)
它有什么良好的性質呢?
性質就是對於一個對角矩陣,在自乘的時候復雜度為\(O(n)\)而非\(n^3\)
這對我們有一個啟發:如果某個線性變換,它的特征向量很多,多到能夠與維數同樣多
那么我們可以變換坐標系,使這些特征向量作為我們的基向量,然后進行快速的矩陣乘法,再將坐標系變換會原本的狀態
我們就可以\(O(n^3+nlogk)\)實現矩陣快速冪
抽象向量空間
回到原本的問題:向量是什么?
回顧行列式和特征向量的定義:
一個代表某個線性變換對空間的壓縮或拉伸程度
一個代表某個線性變換中沒有離開張成空間的向量
好像和一個箭頭或者一列數字都沒有直接的聯系
為了解釋向量到底是什么,我們引入一個看似與向量毫無關聯的東西:函數
假設我們現在有了函數\(f(x)\)和\(g(x)\),考慮它們的性質
我們可以把兩個函數相加,得到新函數\((f+g)(x)=f(x)+g(x)\),和向量加法非常類似
那么對於函數與實數相乘,得到新函數\((λf)(x)=λf(x)\),也有着和向量數乘極為類似的解釋
其實我們對向量能夠進行的操作只有相加和數乘,那么同樣具備這些操作的函數理論上來說就可以直接套用所有向量相關的推論
在這里我們要重新描述一下線性的嚴格定義
可加性:\(f(x+y)=f(x)+f(y)\)
成比例\(f(λx)=λf(x)\)
如果一個變換在應用之后仍然對於原\(x,y\)滿足這些性質,那么稱這個變換是線性變換
根據這個定義我們可以發現一個也許並沒有聽說過的定理:求導是線性運算
為了類比求導與線性變換之間的關系,我們嘗試用矩陣描述求導
假設我們有一個多維空間,其空間組成為:全體多項式
首先我們要賦予空間坐標的含義,即選取基向量,或者說基函數
很自然我們應該選取\(x\)的不用次冪作為基函數,因為多項式次數可以任意高,所以我們的基函數幾何應該是無窮大的
對於某個多項式:\(2x^2+3x+1\),我們可以表示為\(\begin{bmatrix}1\\3\\2\\0\\\vdots\end{bmatrix}\)
在這個向量之中,求導可以用一個無限階的矩陣來描述
\(\frac{d}{dx}=\begin{bmatrix}0\ 1\ 0\ 0\ \cdots\\0\ 0\ 2\ 0\ \cdots\\0\ 0\ 0\ 3\ \cdots\\\vdots\ \vdots\ \vdots\ \ddots\\\end{bmatrix}\)
然后我們對某一個多項式求導\(\frac{d}{dx}(5x^2+4x+5)=3x^2+10x+4\),用矩陣描述為
\(\begin{bmatrix}0\ 1\ 0\ 0\ \cdots\\0\ 0\ 2\ 0\ \cdots\\0\ 0\ 0\ 3\ \cdots\\\vdots\ \vdots\ \vdots\ \ddots\\\end{bmatrix}\begin{bmatrix}5\\4\\5\\\vdots\end{bmatrix} =\begin{bmatrix}4\\10\\3\\\vdots\end{bmatrix}\)
對求導矩陣的構造,只要將基函數每一項進行求導,然后按列排布
為什么我們要類比求導和矩陣的關系?
為了說明:只要我們處理的對象的集合滿足相加和數乘原則,都可以稱之為向量,對應的,向量的所有推論在這些對象中都適用
我們可以大概概括為:向量是滿足了相加和數乘原則的事物的集合
結尾
終於肝完了線代入門
由於技術原因本文難以加入大量形象的圖片,還有不了解的可以觀看原視頻
再次大力膜拜\(3B1B\)