更新時間:2024-05-10 08:54:05作者:佚名
大昌科技堅持每周更新精選好文前言
為什么要講數學?
我們先來說說接下來的時間線:
文章會涉及到一些最基本的矩陣運算,所以需要學習線性代數/矩陣理論。 只要你學會了,就算忘記了也沒關系。 只要給我一個提醒,留下一點印象就可以了!
說什么?
幾乎所有學科(理工科)都需要學習線性代數,比如計算機科學、物理學、電氣工程、機械工程、統計學等。我們已經學會了如何計算矩陣:乘法、叉積、特征值等,但是我們僅限于計算。 您是否有以下問題:
對于我們學習的很多課程,大家可能都會有這樣的疑問,甚至可能自己還不知道。 對于線性代數來說,今天分享的目的就是為了回答這些問題。
對于線性代數,我們只學習了它的計算,但其實更重要的是它的幾何意義。 計算只是解決問題的工具,理解它的幾何意義有助于我們知道用什么工具解決什么問題以及如何解釋最終結果的意義。
好了,廢話就這么多。 我主要是想激發大家的興趣。 我希望你不會因為完整的公式而感到無聊。 內容其實并不復雜,而且很有趣。 當然,這是建立在我能夠傳達我想說的話的基礎上的,我也盡力做到了。
本文分為 2 部分:
基本矩陣運算
如果直接告訴大家矩陣是如何表示幾何意義的,其實大多數人都能記住并且應用得很好。 不過,我還是希望大家能夠真正明白其中的道理,所以我先講一些基礎知識。
向量和基本運算
矩陣的基礎是向量。 我們先來看看向量。 向量在不同學科眼中是不同的東西,甚至可以是任何東西,只要它們的加法和乘法有意義即可。
為什么只需要加法和乘法,稍后會解釋:只需這兩個運算,就可以到達空間中的任意點。
向量可以表示為、表示為、表示為坐標系上的箭頭
添加
將向量視為運動。 從原點開始,沿該方向移動一段長度,再沿該方向移動一段長度,就相當于直接沿該方向移動長度。
結合數學和幾何表示,我們可以知道為什么向量的加法是這樣定義的: + = 。
數字相乘
會在它的方向上延伸到2倍,相當于x軸和y軸上的分貝放大2倍,這就是==的定義。
線性組合、跨度空間和基
在描述向量時,有一個我們使用但沒有關注的東西:向量的基。 我們都默認向量的基坐標為平面坐標系上的x軸方向和y方向。
通過這兩個基,然后使用乘法和加法+=,我們可以得到平面上的任意向量(對于三個維度也可以這樣說)。 這些向量稱為基向量的線性組合,整個二維平面都在我們的控制之下。 那么如果我們改變基坐標,每對基坐標是否可以控制整個平面呢? 不。 當兩個基向量完全共線時,它們的線性組合總可以是一條直線; 當兩個向量都是零向量時,它們的線性組合總能保持在原點。
用術語來說,我們將可以表示為給定基向量的線性組合的所有向量的集合稱為給定向量所跨越的空間。 從剛才的描述中我們可以看出,對于大多數二維向量來說,它們所跨越的空間是整個A二維平面,在某些情況下可能是一條直線,也可能是一個點。
那么我們如何選擇基向量呢?
如果一個向量可以通過平面上兩個向量的乘加之和得到,那么它不會對跨度空間做出任何貢獻,即至少有 、 、 、 、 等其中一個,可以去掉。 這時候我們會說a、b、c是線性相關的; 同時,我們可以得出結論,一組空間向量的基是一組跨越空間的線性無關向量。
此時我們可以發現,只要對向量進行乘法和加法,就可以擴展整個對應的維度空間,即到達整個對應的維度空間中的任意點。
順便看一下張成的三維空間
矩陣和線性變換
以上向量都是基本運算,一切都是為了更好的理解矩陣運算。
不幸的是,目前還不清楚矩陣是什么,你必須自己去看。 ——函數通過某種處理將輸入變成輸出,例如y=f(x)。 向量運算a=L(b)也是如此。 為什么我們不把向量運算稱為函數,而稱之為向量變換/矩陣變換? 這提醒我們用運動的思想來看待向量的計算,或者換句話說,矩陣/向量變換就是空間的變換。
為了說明,比函數稍微簡單的是,矩陣變化都是線性變換(因為它們都依賴于向量乘法和加法)。
線性變換是一種使網格線平行且等距的變換。
視頻中提到了一個問題:對于平面上的輸入,我們應該給計算機給出什么公式L才能得到=L()?
如上所述, 和 是形成二維平面的最簡單的一對基底。 因此,在關注下面二維平面的變換時,我們只需要關注這對基的線性變換,就可以得到整個平面的線性變換。 變換,即式L。
比如變成,變成,整個二維平面變化如下:
我們將改變后的兩個基向量放入矩陣中,如下所示,這樣這個矩陣就代表了二維空間的一個變換,就是公式L,其中兩列就是變換后的和。
矩陣向量乘法
理解【矩陣是空間的變換,它的兩列是變換后的基向量之和】是非常重要的。 這是理解后續所有操作的基礎。
現在,我們來回答上面的問題:如果你想知道一個向量的位置,比如線性變化后,也就是L()的位置,你只需要計算+=+即可。
抽象后
停下來體驗一下...
上面,我們實際上得到了矩陣-向量-向量乘法的幾何意義:一個向量左乘一個矩陣得到的值的幾何意義是:這個向量在新空間(矩陣變換后的空間)中的位置。
矩陣乘法
矩陣是一個空間的變換,那么如果我們想連續多次變換空間怎么辦?
這時,我們不會一步一步地描述某個特定向量的方向,而是直接描述整個平面的變換。 您可以觀看視頻了解更具體的過程。 我們首先在平面上進行 = 變換:變換到,變換到,然后進行 = 變換。
這時候就會轉化為====+=
這時就會轉化為 = = = + =
上述過程也得到了矩陣乘法的定義,即
上面整個過程我們學矩陣乘法的時候就直接背下來了。 了解了它的幾何意義之后,希望大家每次使用的時候都能思考一下它背后的幾何意義——對空間的多次連續運算。 進行變換,以便您對矩陣有更好的理解。
乘法的結合律和交換律
如果你還有印象的話,矩陣滿足乘法結合律,但不滿足乘法交換律。 為什么是這樣? 我們可以通過幾何意義很好地理解其中的原因。
等式左邊的意思是:先變換,再變換,再變換;
等式右邊的意思是:先變換,再變換,(等一下?)再變換;
是不是很明顯沒有區別甚至不需要證明?
等式左邊的意思是:先變換,再變換;
等式左邊的意思是:先變換,再變換;
很難用言語形容,看視頻吧
我們不需要用數字來證明這個過程。 我們只需要在腦海中想象一下就知道交換律不成立,即空間變換的順序不是任意的。 當然,通過數值計算也可以很容易得出這個結論:
顯然兩者并不相等。 你也可以帶入具體的數字來計算,確實不相等。
矩陣的運算順序是從右到左,可能不符合常規習慣。 但想想前面提到的事情。 矩陣運算其實就是空間上的函數運算,結合復合f(g(x))的寫法:先算g(x),再算f(g(x)),那么就不難理解了。
行列式
其實我所說的已經足以解釋矩陣的幾何意義了。 后面提到的只需要上面的理解即可。 不過,我還是想繼續簡單描述一下另一個概念,以說明矩陣的各種其他概念也都有其相應的實際(幾何)意義。
如果還有展示,行列式的計算規則是=ad-bc。 這個值代表什么? 讓我們一步步來看。
因此,矩陣的行列式表示:矩陣變換后平面單位面積的縮放因子。
想想公式det()=det()det(),不用數學計算,你能用一句話解釋清楚嗎?
假裝了一分鐘。
我的理解:變換后,空間縮放了det()倍,然后變換后,(假設此時的空間被認為是單位空間),那么變換后的空間不是縮放了1* det() times ,而這里的1實際上是det(),即det()=det()det(),這看起來很明顯,不需要任何證明。
還有很多其他的矩陣性質也具有幾何意義,比如逆矩陣、特征值等,這里就不一一解釋了。
中間
如果熟悉這個用法,相信大多數人都不理解每個參數的含義,導致很難死記硬背。 當然,這并不影響我們的日常開發,因為我們很少使用它。 不過,了解了上面的矩陣變換之后,你會發現根本不需要記住。 每個參數都很容易理解,我們常用的一些屬性:
驗證demo[3],點擊正在動畫的元素,你就會發現它。
基本格式
transform:?matrix(a,b,c,d,e,f)?
對應的矩陣為A=。 假設平面上的一點是(x,y),變換后就是=。
再次回顧一下,這里的A是平面(坐標系)的變換,其中(a,b)是變換后的基向量,(cmatrix是什么意思,d)是變換后的基向量。 根據上面的理解,我們知道,對于平面變換,可以使用22的矩陣。 也就是為什么多了e和f,組成了33的矩陣。這個和和有關,所以我們先看一下。
以下場景的演示[4]
屬性表示為元素的位移,不涉及坐標系的變換。 因此,不可能改變參數中的a、b、c、d。 我們需要添加一個簡單的位移維度,即(x,y)平移(e,f)后,坐標會變成(x+e,y+f),同時我們要保留的函數保持不變(假設我們已經知道它的功能,我們稍后再講)。
因此matrix是什么意思,保持總和不變,我們可以得到=,從而得到變換后的點(x+e,y+f)。 添加平面的變換后,我們可以得到上面的通用變換矩陣。
總結:只用到了參數e和f,(e,f)對應(1,0,0,1,e,f)。
規模
scale屬性表示元素的縮放,即坐標系縮放,但不會變形; 也就是說,僅執行矩陣乘法變換,成為,成為,其中m和n是標量。 對應矩陣,即轉化為英語作文,即。
總結:scale只需要參數a和d,scale(a,b)對應(a,0,0,d,0,0)。
屬性表示元素的旋轉,涉及到三角函數。 旋轉之后,變成,變成。 對應于矩陣,即變換為。
總結:參數a、b、c、d為必填項,()對應(,,,,0,0)。
組合使用
其他屬性就不一一解釋了。 讓我們看看如何組合使用這些屬性。
我們先問一個問題:如果我們要將元素縮小到0.5倍,并向右移動50px,我們會寫什么呢?
.element{
????transform:?translate(50px,?0)?scale(0.5);?
}
.element{
????transform:?scale(0.5)?translate(50px,?0);?
}
以上兩種寫法有什么區別嗎?
上面我們提到矩陣的每一次左乘都是一次變換。 對于多重變換,只需多次左乘即可。 假設矩陣為 ,Scale 的矩陣為 ,元素上的點矩陣為 。
我們已經知道矩陣乘法不滿足交換律,即 和 不相等。 這意味著:(50px, 0) 縮放(0.5); 和:比例(0.5)(50px,0); 是不同的。 那么我們來看看事實是否如此?
通過demo[5],我們可以發現兩者并不相同:
因此,只要我們始終記住變換是對當前元素所在的整個平面進行變換,而不僅僅是當前元素,我們就可以使用正確的組合。
另外,知道組合使用實際上只是矩陣乘法,我們還可以連續使用相同的屬性(不一定使用calc),例如:
思考:非方陣
上面提到的m*n矩陣都是方陣,即行數m、列數n相同的矩陣。 非方陣代表什么?
例如:
我不會在這里提供答案。 如果你理解了上面的內容,相信就很容易搞清楚了~
本文只提到了矩陣的一些基本性質,但實際上這些基本性質足以解釋它的幾何意義。 如果以后看到矩陣的時候能想到它的幾何意義,那么本次分享的目的就達到了!
ps:看完視頻,我在網上查了一些關于這方面的文章。 由于這是一個很難用言語解釋清楚且容易勸阻的話題,因此大多數文章都難以閱讀。 這篇文章也很難解釋。 情況可能是這樣。 所以我越來越高興看到這個視頻集。 雖然以后不一定能用到,但它也帶來了那些看視頻的快樂時光,以及寫這篇文章時的“心流”和熱情!
參考
[1]
:
[2]
升寶大師線性代數合集:
[3]
驗證演示:
[4]
演示:
[5]
演示:
??感謝您的支持
以上就是本次分享的全部內容,希望對您有所幫助^_^