爲了不浪費大家寶貴的時間,開頭我先簡要說明一下這篇博文對哪些讀者可能會有幫助
1、你是正在學習矩陣的乘法運算,覺得矩陣的乘法掌握起來很困難
2、你已經學會了矩陣乘法,但如果你在計算矩陣乘法時還在使用“一行乘一列得一數”的方法,那我強烈建議你看看後面的內容。
因爲,我將帶你更加深刻地理解矩陣,與之而來是對矩陣乘法的全新計算方式。這不僅讓你在計算矩陣乘法時更快,而且更省心。
“矩陣就是數表”這可能是很多人第一次在線性代數課堂上聽到的概念。我不能指責老師這樣教有錯,但這種膚淺的理解會給以後的學習帶來越來越多的困難,無形之中讓線性代數變得越來越“玄學”。
我認爲好的學問都應該是通俗易懂的,因此讓我們從一個最簡單的概念開始——數數,或者說計量。
人類利用數字來表示事物的多少,但單有數字還是不夠的,配合數字一起使用的還有一個概念——單位。例如,2L水,3kg鋼鐵等等。在更爲抽象的一點事物上,還有與“單位”對應的一個概念——權。例如十進制數字 34 中的 4 的權是 1,而 3 的權是進制 10。簡單來說,衡量任何實物,我們總是要現在此類事物中找一個看得順眼的 “樣品” 來作爲衡量該類型其他事物的一個標準,看看需要衡量的事物是這個標準量的“幾倍”,這樣綜合起來,我們心裏就能有一個感性的認識。
認識一:其實沒有標準,所有的標準都是由一個具體的事物(看得最順眼的那個)來充當的。
上面的數數的例子都是單維度的,然而有很多量無法之中一組“數字+單位”這樣的組合來描述清楚,而需要多組。比如,平面上的點的位置需要兩組,三維空間中的點的位置需要三組才能描述清楚,等等。而線性代數研究的就是空間。讓我們還是再從最簡單的概念開始——平面直角座標系。
也許你會說,平面直角座標系還不簡單麼,不就是這個麼
但是,我更希望它在你心中樣子長成這樣:
官方的說法把它叫做“平面直角座標系的基”,你可以把它理解爲在平面中數點的位置時用到的“單位”(就叫它“標準1”吧)。點(2,3)實際上是:
很多時候我們看的順眼事物往往就那一個,因此標準也是唯一的了。比如二維平面的標準:
或許有人會說,x方向的基並不一定需要和y方向上的基保持長度相同,夾角也不需要是直角(只要是兩個方向就行了)。隨便整一個:
這也能作爲衡量平面中點的座標的“單位”(暫且叫它“標準2”好了)。但讓我們來看一個具體的例子:
如果有一個點在上面這個座標系中的座標是:x=3, y=4。我們是不是通常會“忍不住“計算一下:
這個算式很簡單,但不知你想過沒有,爲什麼我們要去算呢?爲什麼不就用
來表示這個點的座標就好了呢,實際上,當我們寫下第一個等號,在進行
這樣的換算時,我們就已經放棄上面的“標準2”,又使用起了平面直角座標系的“標準1”。
認識二:標準往往是唯一的,使用其他的標準時,我們會情不自禁地回到這個唯一的標準。而這個唯一的標準都有一個特性,你不會去想把它轉化成其他標準。
而這個的簡單算式,實際上就是一次“矩陣運算”!不信?讓我們再來看一下這個簡單的式子:
這就是簡單而又直接的算法,我可沒有用什麼“一橫乘一豎”。不過你應該能發現兩種算法的答案居然是一樣的!等等,你也許會說,這根本就不是矩陣的乘法,就算你這樣變形着寫,着充其量也就是個向量對矩陣的乘法。那下面再讓我們來思考一個更爲深刻的問題——矩陣究竟是什麼?是數表麼,當然不是。其實,上文已經對這個問題給出了答案,再看看 認知一 吧,標準是由事物來充當的;二維空間中衡量點的位置的標準是由二維點來充當的,n 維空間中衡量點的位置的標準是由 n 維點來充當的。更進一步的,n 維空間中衡量一個點的座標需要描述清楚 n 個維度,那描述清楚每一個維度又需要什麼呢?回到開篇所說,需要一個數,一個“單位”。而在 n 維空間中,一個“單位”,一個“標準”,就是由一個點來充當的啊。即,一個維度需要一個標準,一個標準就是一個點,n 個維度自然需要 n 個點,而這每個點又都是 n 維空間中的點,自然每個都有 n 個維度。n 個 n 維點,可不就是一個 的矩陣嘛。爲什麼長寬相等的矩陣出現頻率這麼高,因爲這樣的矩陣本質上是一個座標系!一個描述 n 維空間的座標系。
當你用一個點(專業的說法叫向量)乘以矩陣時,實際上是放棄了以這個矩陣作爲座標系來衡量這個點的位置,重新使用了我們看得最順眼的衡量標準——“單位陣”;
當你用矩陣乘以矩陣時,如
實際上是進行了 n 次點乘以矩陣。你放棄了用矩陣 B 來衡量前面矩陣 A 中的 n 個點的位置,重新使用了我們看得最順眼的衡量標準——“單位陣”。這矩陣A中的 n 個點在矩陣 B 中的位置就是矩陣 A 本身所描述的,在你放棄標準 B(進行了這次矩陣運算後),矩陣 A 中的 n 個點的位置變成由矩陣 C 來描述了。
最後,有了上面的鋪墊,我們來看一下,在這樣的理解下,矩陣乘法到底應該怎麼算。
這裏只有“橫”,沒有什麼“豎”的概念。不要一個數一個數地算,應該一個點一個點的算。公式太抽象?舉個栗子,要計算:
我們一行一行的算,第一行:
相信剩下兩行的計算就不用我囉嗦了,大家都會。
相信大家在學線性代數的時候,一會兒是列向量,一會兒是行向量,叫人頭暈,老師解釋這只是種寫法,並沒有什麼講究,但事實又好像不是如此,因爲你要“一行乘一列”嘛,前面放“行”後面放“列”,這式子沒法算吶。但我在這裏要吶喊:
認識三:從來就沒有什麼列向量,所有的向量都是行向量。
其實,你要是認爲“從來就沒有什麼行向量,所有的向量都是列向量”也可以,那樣的算法是一次算一列。事情的真相其實是所有的向量都是“同方向”的,你喜歡行向量就都是行向量好了,你喜歡列向量就都是列向量好了,反正他們不會同時存在。相信只有一個方向的向量會讓你神清氣爽,不再暈頭轉向。不過你要是用列向量的話,記得要從後往前算,有興趣的讀者可以研究一下具體的算法,如有不明之處可以下面留言交流。
最後再皮一下:其實我是喜歡都看能行向量啦,一來寫起來省紙又順手,二來從左往右算,符合習慣。我還暗自揣測過爲什麼行比列順手,可能跟書寫工具有關吧,矩陣記號是西方發明的,西方人用硬筆,書寫時沉腕,旋轉肘關節自然橫向方便,如果矩陣記號是中國人發明的,我們用軟筆,書寫時懸腕,旋轉肩關節自然豎向方便,那說不定矩陣運算就是列運算更加方便了。
如果您覺得本篇文章對您有所幫助,那就支持我一下吧。