線性代數/矩陣的幾何意義

2022-01-22 ELab團隊
大廠技術  堅持周更  精選好文前言
為啥講數學?無意間發現了一個寶藏up主3Blue1Brown[1]在看視頻的時候,偶然發現一個集合:線性代數的本質。突然想起上學的時候矩陣論(線性代數)老師總說矩陣很優美,但我又一直沒get到,所以好奇想看一看。但是有沒有啥用呢?在評論裡看到矩陣是圖形學的基礎,於是搜了下,發現它比我想的有用多了!只要涉及到圖形學,矩陣都是繞不開的,比如webgl等等;但是和我們前端的大部分日常工作關係不大,講了大家會有興趣嗎?純講理論能講的明白不?於是我突然想到transform裡用到了矩陣,是一個合適的實踐例子至此,我發現矩陣既有意思,又有意義,又可以有實踐例子(transform),於是有了這篇文章。文中會涉及到一些最基本的矩陣運算,所以需要學過線性代數/矩陣論。只要學過就行,忘記了沒關係,提示一下稍微有點印象就行!講什麼?幾乎所有的學科(理工科)都要學線性代數,比如計算機科學、物理學、電子工程學、機械工程學、統計學等等。我們學習了如何計算矩陣:數乘、叉乘、特徵值等,但是也只限於計算,大家會不會有以下幾個疑問:我們學的很多課程,大家可能都有這個疑惑,甚至至今也不清楚。對於線性代數,今天分享的目的就是希望能回答這些問題。線性代數,我們只學了它的計算,但其實更重要的是它的幾何含義。計算只是解決問題的工具,而明白其幾何含義幫助我們知道解決什麼問題要用什麼工具,以及如何解讀最終結果的含義好了廢話這麼多,主要是想激發大家的興趣,希望大家不要因為滿篇的公式而覺得枯燥,內容其實不複雜也很有意思。當然這建立在我能傳達出我想講的東西,我儘量做到。一部分:內容來自於寶藏up主的線性代數合集[2],主要是講一些基本矩陣運算的幾何含義,我按我的理解分享下,更多精彩推薦大家去看原視頻。二部分:通過transform的矩陣,來消化所講的內容。矩陣基本運算如果直接告訴大家矩陣是如何表示幾何意義的,其實這樣大部分人也能記住且很好的應用,但是還是希望大家能真正地理解原因,所以先講一些基礎。向量及基本運算矩陣的基礎是向量,我們先來看看向量。向量在不同學科眼裡是不同的東西,甚至於它可以是任何東西,只要保證其相加數乘有意義即可。為什麼只需要相加和數乘,一會下面會說明:只需要這2種運算,就可以到達空間內的任何一點。

一個向量可以表示為

相加

將向量看成一個運動,從原點出發,向

數乘

通過這2個基,再利用數乘線性組合,整個二維平面盡在掌握。那我們改變基坐標,是不是每一對基坐標都可以掌握整個平面呢?不是。當2個基向量正好共線時,它們的線性組合永遠都只能是一條線;而當2個向量都為零向量時,它們的線性組合永遠只能待在原點。換成術語,我們將所有可以表示為給基向量線性組合的向量的集合稱為給定向量所張成的空間,從剛剛的描述可知,對於大部分二維向量,它們張成的空間是整個二維平面,小部分情況下也可能是一條直線或者一個點。如果一個向量不會對張成的空間做出任何貢獻,也就是空間向量的一組基是張成該空間的一個線性無關的向量集。到這裡我們可以發現,只要通過向量的數乘和相加,我們就可以張成整個對應維度的空間,也就是達到整個對應維度空間內的任意點。矩陣和線性變換以上向量是基礎運算,一切都是為了更好的理解矩陣運算。很遺憾,矩陣是什麼是說不清的,你必須得自己看看。——墨菲斯函數是將一個輸入經過一些處理變為一個輸出,如y=f(x)。那向量的運算a=L(b)也是如此,為什麼我們不把向量的運算叫函數,而都是叫向量變換/矩陣變換呢。這提醒我們要用運動的思想看待向量的計算,或者換一種說法,矩陣/向量變換是對空間的變換。說明一點,比函數稍微簡單的是,矩陣變化都是線性變換(因為都是依賴向量數乘和相加)。視頻中提到一個問題:對於平面上的一個輸入該給計算機一個什麼公式L,才能得到只需要關注這對基的線性變換,我們就可以得到整個平面的線性變換,也就是公式L

我們將變化後的2個基向量按如下方式放入矩陣,這樣這個矩陣

矩陣向量相乘理解一個【矩陣是一次對空間的變換,且其中2列分別為經過變換後的基向量

以上其實我們就得到了矩陣向量向量相乘的幾何意義:一個向量  左乘一個矩陣

以上整個過程,我們學習矩陣乘法時都是直接背下來的,而明白了它的幾何意義後,希望大家可以每次在用到的時候思考下其背後的幾何意義——對空間的多次相繼變換,這樣對矩陣會有一個更好的認識。乘法結合律和交換律如果大家還有點印象的話,矩陣是滿足乘法結合律,而不滿足乘法交換律的。為什麼是這樣呢?通過幾何意義,我們可以很好地理解原因。等式左邊表示:先進行
矩陣的運算順序是從右往左,可能不太符合常規習慣。不過想一想前面提到的,矩陣運算其實就是對空間進行函數運算,再結合複合f(g(x))的寫法:先計算g(x),再計算f(g(x)),就不難理解了。行列式其實講到的東西已經足以說明了矩陣的幾何意義,後續提到的transform也只需要以上理解就可以了,不過我還是想繼續抽一個其他概念簡述一下,以說明矩陣的其他各種概念也都有著其相對應的實際(幾何)意義。如果大家還有印象,行列式的計算規則為 表示空間上一個單位面積被縮放的倍數。再恢復b不為0,這樣

所以,矩陣的行列式表示的是:經過矩陣變換後,平面單位面積的縮放倍數。想一想對於公式det(
transform: matrix(a,b,c,d,e,f) 

其對應的矩陣為A =

因此保持

小結:translate僅需用到參數e和f,translate(e,f)對應matrix(1,0,0,1,e,f)。scalescale屬性表示對元素的縮放,也就是坐標系縮放了,但是不會變形;即只進行矩陣的數乘變換,小結:scale僅需用到參數a和d,scale(a, b)對應matrix(a,0,0,d,0,0)。rotaterotate屬性表示對元素的旋轉,這裡就涉及到三角函數。旋轉

小結:rotate需用到參數a、b、c和d,rotate()對應matrix(
.element{
    transform: translate(50px, 0) scale(0.5); 
}

.element{
    transform: scale(0.5) translate(50px, 0); 
}

上面我們提到,每次矩陣左乘是一次變換,多次變換就多次左乘即可。假設Translate的矩陣為當前元素所在的整個平面的變換而不是僅針對當前元素,我們就能正確的組合使用了。另外,知道了組合使用實際上只是矩陣相乘,我們也可以連續使用相同的屬性(不一定需要使用calc),比如:transform: translate(100%, 0) translate(50px, 0);,先右移100%,再右移50pxtransform: scale(2) scale(3);先放大2倍,再基於此放大3倍,共2*3=6倍,而不是2+3=5倍。思考:非方陣上面提到的m * n矩陣都是方陣,即行數m和列數n相等的矩陣。那非方陣代表著什麼呢?這裡就不提供答案了,如果理解了上面的內容,相信很容易想清楚~ 本文只提到了矩陣的一些基本性質,但其實這些基礎性質就足以說明了其幾何意義,如果大家以後看到矩陣能想到去想一想它的幾何意義,那本次分享的目的就達到啦!ps:看過視頻之後,我去網上查過一些關於這方面的文章,由於這本身是個用文字很難說清楚且很容易勸退的主題,所以大多數文章都很難讓人看下去,本文也可能是這樣。所以我越發開心看到這個視頻合集,雖然以後也許不一定能用上,但它也帶來了那些看視頻的愉快時光,以及寫本文時的「才思泉湧」和熱情高漲🐶!參考[1]

3Blue1Brown: https://space.bilibili.com/88461692/

[2]

寶藏up主的線性代數合集: https://www.bilibili.com/video/BV1ys411472E

[3]

驗證demo: https://codepen.io/yh418807968/pen/bGgVvRM?editors=1111

[4]

demo: https://codepen.io/yh418807968/pen/Vwmdvaw

[5]

demo: https://codepen.io/yh418807968/pen/Vwmdvaw

❤️ 謝謝支持

以上便是本次分享的全部內容,希望對你有所幫助^_^

喜歡的話別忘了 分享、點讚、收藏 三連哦~。

歡迎關注公眾號 ELab團隊 收貨大廠一手好文章~

我們來自字節跳動,是旗下大力教育前端部門,負責字節跳動教育全線產品前端開發工作。

我們圍繞產品品質提升、開發效率、創意與前沿技術等方向沉澱與傳播專業知識及案例,為業界貢獻經驗價值。包括但不限於性能監控、組件庫、多端技術、Serverless、可視化搭建、音視頻、人工智慧、產品設計與營銷等內容。

歡迎感興趣的同學在評論區或使用內推碼內推到作者部門拍磚哦 🤪

字節跳動校/社招內推碼: W6WGRQM

投遞連結: https://jobs.toutiao.com/s/dPNW5wp

相關焦點

  • 如果看了這些還不懂線性代數,你就來錘我(上)
    3Blue1Brown 的 Essence of linear algebra 系列視頻(連結見文末)是我迄今見過最棒的線性代數視頻。Grant Sanderson(3Blue1Brown 創辦者)一反教科書上抽象、枯燥的公式教學,引導觀眾進入奇妙的「線性代數幾何化世界」,用人話講就是把線性代數可視化了。
  • 《線性代數》公式大全【系列02】:矩陣運算及性質
    矩陣 是線性代數中最核心的一個概念,所有的問題都可以通過矩陣及其運算加以解決。
  • 走進線性代數-矩陣乘法運算(六)
    由上述定義可以看出矩陣C中第i行第j列的元素等於矩陣A中第i行所有元素與矩陣B中第j列對應元素的乘積總和。再看一個示例:即矩陣A的列數與B的行數必須相等,才可進行AB的矩陣乘法運算。乘積C的行數與A相同,其列數與B相同。
  • 線性代數抽象麼?其實矩陣並不陌生,完全可以從中學知識「遷移」
    要想學好微積分,吃透「極限」概念是必要條件這次寫一下高等代數或者線性代數應該怎麼理解「矩陣」等抽象的概念。線性代數主要有兩個重要的概念,行列式和矩陣,且兩個概念有些相似性;行列式本質上是一種運算,而矩陣是一個數組,可以被看成有多個行或列向量組成。有些教材從線性方程組入手,介紹消元法,n維向量空間,線性相關性以及矩陣,然後是矩陣的秩、線性方程組解的判定定理,解的結構。學完這部分內容,基本上可以認為線性方程組的問題似乎是完全解決了的。
  • 2021考研:線性代數怎麼複習?
    考生應注意掌握知識點間的聯繫與區別,例如向量組的秩與矩陣的秩之間的聯繫,向量的線性相關性與齊次方程組是否有非零解之間的聯繫,向量的線性表示與非齊次線性方程組解的討論之間的聯繫,實對稱陣的對角化與實二次型化標準形之間的聯繫等。靈活掌握他們之間的聯繫與區別,對做線性代數的兩個大題在解題思路和方法上會有很大的幫助。
  • 線性代數重要,選對教材更重要:同濟版《線性代數》引發激烈爭議
    在國內上過大學的理科同學應該都見過《線性代數》(同濟版),就算沒有學過,也是聽過它的大名。作為一名過來人,只能說,晦澀難懂,章節混雜... 即使不少 985、211 走過高考獨木橋的學生,每到期末考試,也要默默祈禱不要掛科。現在想起一些內容:相似矩陣、線性變換、特徵值、特徵向量…… 真是一個頭兩個大。
  • 線性代數的非主流經典名作:《線性代數應該這樣學》
    本書是公認的闡述線性代數的經典佳作。從線性代數基礎講起,無需更多數學預備知識。拋棄晦澀難懂的行列式,從向量空間和線性映射出發描述線性算子。包含561道習題和大量示例,提高學生理解和熟練運用線性代數知識的能力並闡明線性代數的主要思想。對術語、結論、證明思路、提及的數學家做了注釋,增加行文趣味性。
  • 深度學習和機器學習的線性代數入門
    本文目錄引言機器學習ML和深度學習NN中的線性代數矩陣向量矩陣乘法轉置矩陣逆矩陣正交矩陣對角矩陣對於機器學習中典型的分類或回歸問題,通過最小化實際值與預測值差異進行處理,該過程就用到線性代數。通過線性代數可以處理大量數據,可以這麼說,「線性代數是數據科學的基本數學。」
  • 線性方程組題型總結,線性代數的趣味,源於你不知道這些數學史!
    前面,我們總結完了常見行列式的計算方法,特殊行列式及行列式的幾何意義。今天,我們進入線性方程組這一章的學習。(知識點和題型為小編自己總結的文檔,其中選題源於考研線性代數,對初學者可能有一點點難度。)直到19世紀,英國數學家道奇森(Dodgson)發現了證明了未知數個方程的方程組有解的重要條件是係數矩陣和增廣矩陣的秩相等。
  • 為什麼會有矩陣這東西,矩陣到底有什麼用
    原本想這個周末可以好好休息一下,沒想到10歲表妹竟然來了。進門的那種氣勢感覺勢不可擋。。。超模君:你等會,先不要看《衡水寶典》,最近衡水中學的學生清華浙大都不錄取了,還是我來給你講講矩陣吧,這樣才能幫助你學習。在《線性代數》書中,行列式和矩陣總是如影隨行,而且兩個確實長得很相似,所以也經常有人混淆兩者。
  • 線性代數學習的核心——從雞兔同籠到線性方程組
    這是線性代數的核心思維。比如,既然方程組加減消元時只有係數改變,省略未知數符號xy可不可以?當然可以。寫成,則就是小學時「殘忍的砍腳法」的化簡流程,也是中學時的加減消元法,如果你已經複習線性代數,就會認出這是對增廣矩陣做初等行變換。線性代數的發端,本就是源自解方程組。方程組既有代數形式,也有矩陣形式,還有向量形式。
  • 2.3——矩陣的乘法與轉置
    矩陣的乘法運算是線性代數的本質運算,它的實質是線性變換。
  • 線性代數 1.4D 克萊默法則
    我沒有能力寫一本線性代數教材,但是我在重拾線性代數的時候,經常會有一些我當時學的時候學不明白的東西以另外一種清晰的面孔浮現出來。
  • Matlab與線性代數
    Matlab與線性代數1 行列式2 矩陣運算3 初等變換4 曲線擬合 polyfit5 向量組正交化qr6 線性方程組7 二次型與標準型1 行列式行列式detB = [0 2 1 12.1 特殊矩陣% 空矩陣[]A = [];AA = [1 2;3 4];A(:,2) = [];A % 刪除矩陣第2列% 單位矩陣eye()A = eye(3);A% 元素全為1矩陣A = ones(3);AA = ones(2,3);A% 元素全為0矩陣
  • 絕對值的化簡計算及絕對值幾何意義的妙用
    下面我們通過幾個例題給大家講解下絕對值的化簡求值與絕對值幾何意義的妙用。一、 巧解絕對值求值巧解絕對值化簡計算二、 絕對值幾何意義的妙用絕對值幾何意義的妙用【解析】絕對值的幾何意義:表示的是數軸上兩點之間的距離。
  • 沉浸式學習線性代數!這裡有一本全交互的線性代數書
    線性代數的書籍那麼多,這本卻獨具特色。準確來講,量詞似乎不能用「本」,因為它需要在網頁上閱讀,更重要的是,書裡的圖是可以動的,讀者還可以拖動圖。這種交互式圖看起來很有意思~書籍地址:http://immersivemath.com/ila/index.html書中的三維立體動態插圖。
  • 必背C語言算法50(13),矩陣轉置
    本實例是利用數組解決線性代數中的矩陣轉置問題。
  • 基礎丨Python下的矩陣操作(3)
    關鍵詞:線性代數 / 矩陣 / 運算今天小編將詳細介紹矩陣的運算規則與數學符號應用在矩陣上的含義,如同算數字的加減法需要了解計算公式的規則一樣,矩陣的運算雖然與單純數字運算相似,但其細節的相異處還需要多加注意。
  • 矩陣的運算
    (1)矩陣加、減(+,-)運算相加、減的兩矩陣必須有相同的行和列,兩矩陣對應元素相加減;允許參與運算的兩矩陣之一是標量。標量與矩陣的所有元素分別進行加減操作。(2)矩陣乘(*)運算 A矩陣的列數必須等於B矩陣的行數; 標量可與任何矩陣相乘。
  • 適用於需要處理大型數據集的NI LabVIEW多核分析和稀疏矩陣工具包...
    實際上,許多現實世界的問題可以表示為大型線性代數計算,而該工具包可以為這些運算減少所需的資源和總體的計算時間。此外,該工具包包括稀疏線性代數函數,並支持單精度和雙精度數據類型。本文介紹了LabVIEW多核分析和稀疏矩陣工具包的用途和推薦用法。 1. 高性能多線程分析 如前所述,NI LabVIEW多核分析和稀疏矩陣工具包提供了一系列高性能、多線程分析庫,可以用來處理大型數據集。