若是不熟悉線性代數的概念,要去學習天然科學,如今看來就和文盲差很少。」算法
--瑞典數學家Lars Garding名著《Encounter with Mathematics》。編程
1. 矩陣的基本問題數組
然而「按照現行的國際標準,線性代數是經過公理化來表述的,它是第二代數學模型,...,這就帶來了教學上的困難。」事實上,當咱們開始學習線性代數的時候,不知不覺就進入了「第二代數學模型」的範疇當中,這意味着數學的表述方式和抽象性有了一次全面的進化,對於從小一直在「第一代數學模型」,即以實用爲導向的、具體的數學模型中學習的咱們來講,在沒有並明確告知的狀況下進行如此劇烈的paradigm shift,不感到困難纔是奇怪的。函數
大部分工科學生,每每是在學習了一些後繼課程,如數值分析、數學規劃、矩陣論以後,才逐漸可以理解和熟練運用線性代數。即使如此,很多人即便可以很熟練地以線性代數爲工具進行科研和應用工做,但對於不少這門課程的初學者提出的、看上去是很基礎的問題卻並不清楚。好比說:工具
1``. 矩陣到底是什麼東西?
學習
//向量能夠被認爲是具備n個相互獨立的性質(維度)的對象的表示,矩陣又是什麼呢?咱們若是認爲矩陣是一組列(行)向量組成的新的複合向量的展開式,那麼爲何這種展開式具備如此普遍的應用?特別是,爲何恰恰二維的展開式如此有用?若是矩陣中每個元素又是一個向量,那麼咱們再展開一次,變成三維的立方陣,是否是更有用?
spa
2``. 矩陣的乘法規則究竟爲何這樣規定?
設計
//爲何這樣一種怪異的乘法規則卻可以在實踐中發揮如此巨大的功效?不少看上去彷佛是徹底不相關的問題,最後居然都歸結到矩陣的乘法,這難道不是很奇妙的事情?難道在矩陣乘法那看上去莫名其妙的規則下面,包含着世界的某些本質規律?若是是的話,這些本質規律是什麼?
code
3``. 行列式到底是一個什麼東西?
對象
//爲何會有如此怪異的計算規則?行列式與其對應方陣本質上是什麼關係?爲何只有方陣纔有對應的行列式,而通常矩陣就沒有(不要以爲這個問題很蠢,若是必要,針對m x n矩陣定義行列式不是作不到的,之因此不作,是由於沒有這個必要,可是爲何沒有這個必要)?並且,行列式的計算規則,看上去跟矩陣的任何計算規則都沒有直觀的聯繫,爲何又在不少方面決定了矩陣的性質?難道這一切僅是巧合?
4``. 矩陣爲何能夠分塊計算?
//分塊計算這件事情看上去是那麼隨意,爲何竟是可行的?
5``. 矩陣的轉置運算和求逆運算之間有什麼聯繫。
//對於矩陣轉置運算AT,有(AB)T = BTAT,對於矩陣求逆運算A-1,有(AB)-1 = B-1A-1。兩個看上去徹底沒有什麼關係的運算,爲何有着相似的性質?這僅僅是巧合嗎?
6``. 爲何說P-1AP獲得的矩陣與A矩陣「類似」?
//這裏的「類似」是什麼意思?
7``. 特徵值和特徵向量的本質是什麼?
//它們定義就讓人很驚訝,由於Ax =λx,一個諾大的矩陣的效應,居然不過至關於一個小小的數λ,確實有點奇妙。但何至於用「特徵」甚至「本徵」來界定?它們刻劃的到底是什麼?
2. 數學的直覺性和抽象性
這樣的一類問題,常常讓使用線性代數已經不少年的人都感到爲難。就好像大人面對小孩子的刨根問底,最後總會無可奈何地說「就這樣吧,到此爲止」同樣,面對這樣的問題,不少老手們最後也只能用:「就是這麼規定的,你接受而且記住就好」來搪塞。然而,這樣的問題若是不能得到回答,線性代數對於咱們來講就是一個粗暴的、不講道理的、莫名其妙的規則集合,咱們會感到,本身並非在學習一門學問,而是被不禁分說地「拋到」一個強制的世界中,只是在考試的皮鞭揮舞之下被迫趕路,全然沒法領略其中的美妙、和諧與統一。直到多年之後,咱們已經發覺這門學問如此的有用,卻仍然會很是迷惑:怎麼這麼湊巧?
我認爲,這是咱們的線性代數教學中直覺性喪失的後果。上述這些涉及到「如何能」、「怎麼會」的問題,僅僅經過純粹的數學證實來回答,是不能令提問者滿意的。好比,若是你經過通常的證實方法論證了矩陣分塊運算確實可行,那麼這並不可以讓提問者的疑惑獲得解決。他們真正的困惑是:矩陣分塊運算爲何居然是可行的?究竟只是湊巧,仍是說這是由矩陣這種對象的某種本質所必然決定的?若是是後者,那麼矩陣的這些本質是什麼?只要對上述那些問題稍加考慮,咱們就會發現,全部這些問題都不是單純依靠數學證實所可以解決的。像咱們的教科書那樣,凡事用數學證實,最後培養出來的學生,只能熟練地使用工具,卻欠缺真正意義上的理解。
自從1930年代法國布爾巴基學派興起以來,數學的公理化、系統性描述已經得到巨大的成功,這使得咱們接受的數學教育在嚴謹性上大大提升。然而數學公理化的一個備受爭議的反作用,就是通常數學教育中直覺性的喪失。數學家們彷佛認爲直覺性與抽象性是矛盾的,所以絕不猶豫地犧牲掉前者。然而包括我本人在內的不少人都對此表示懷疑,咱們不認爲直覺性與抽象性必定相互矛盾,特別是在數學教育中和數學教材中,幫助學生創建直覺,有助於它們理解那些抽象的概念,進而理解數學的本質。反之,若是一味注重形式上的嚴格性,學生就好像被迫進行鑽火圈表演的小白鼠同樣,變成枯燥的規則的奴隸。
對於線性代數的相似上述所提到的一些直覺性的問題,兩年多來我斷斷續續地反覆思考了4、五次,爲此閱讀了好幾本國內外線性代數、數值分析、代數和數學通論性書籍,其中像前蘇聯的名著《數學:它的內容、方法和意義》、龔昇教授的《線性代數五講》、前面提到的Encounter with Mathematics(《數學概觀》)以及Thomas A. Garrity的《數學拾遺》都給我很大的啓發。不過即便如此,我對這個主題的認識也經歷了好幾回自我否認。好比之前思考的一些結論曾經寫在本身的blog裏,可是如今看來,這些結論基本上都是錯誤的。所以打算把本身如今的有關理解比較完整地記錄下來,一方面是由於我以爲如今的理解比較成熟了,能夠拿出來與別人探討,向別人請教。另外一方面,若是之後再有進一步的認識,把如今的理解給推翻了,那如今寫的這個snapshot也是頗有意義的。
由於打算寫得比較多,因此會分幾回慢慢寫。也不知道是否是有時間慢慢寫完整,會不會中斷,寫着看吧。
--------------------------------------------------------------------------
3. 矩陣的核心概念
今天先談談對線形空間和矩陣的幾個核心概念的理解。這些東西大部分是憑着本身的理解寫出來的,基本上不抄書,可能有錯誤的地方,但願可以被指出。但我但願作到直覺,也就是說能把數學背後說的實質問題說出來。
3.1 空間
首先說說空間(space),這個概念是現代數學的命根子之一,從拓撲空間開始,一步步往上加定義,能夠造成不少空間。線形空間其實仍是比較初級的,若是在裏面定義了範數,就成了賦範線性空間。賦範線性空間知足完備性,就成了巴那赫空間;賦範線性空間中定義角度,就有了內積空間,內積空間再知足完備性,就獲得希爾伯特空間。
總之,空間有不少種。你要是去看某種空間的數學定義,大體都是「存在一個集合,在這個集合上定義某某概念,而後知足某些性質」,就能夠被稱爲空間。這未免有點奇怪,爲何要用「空間」來稱呼一些這樣的集合呢?你們將會看到,其實這是頗有道理的。
咱們通常人最熟悉的空間,毫無疑問就是咱們生活在其中的(按照牛頓的絕對時空觀)的三維空間,從數學上說,這是一個三維的歐幾里德空間,咱們先無論那麼多,先看看咱們熟悉的這樣一個空間有些什麼最基本的特色。仔細想一想咱們就會知道,這個三維的空間:
1``. 由不少(其實是無窮多個)位置點組成;
2``. 這些點之間存在相對的關係;
3``. 能夠在空間中定義長度、角度;
4``.這個空間能夠容納運動,這裏咱們所說的運動是從一個點到另外一個點的移動(變換),而不是微積分意義上的「連續」性的運動。
上面的這些性質中,最最關鍵的是第4條。第一、2條只能說是空間的基礎,不算是空間特有的性質,凡是討論數學問題,都得有一個集合,大多數還得在這個集合上定義一些結構(關係),並非說有了這些就算是空間。而第3條太特殊,其餘的空間不須要具有,更不是關鍵的性質。只有第4條是空間的本質,也就是說,
容納運動是空間的本質特徵。
認識到了這些,咱們就能夠把咱們關於三維空間的認識擴展到其餘的空間。事實上,無論是什麼空間,都必須容納和支持在其中發生的符合規則的運動(變換)。你會發現,在某種空間中每每會存在一種 _相對應的 _變換,好比
拓撲空間中有拓撲變換
線性空間中有線性變換
仿射空間中有仿射變換
其實這些變換都只不過是對應空間中容許的運動形式而已。
所以只要知道**,**「空間」是容納運動的一個對象集合,而變換則規定了對應空間的運動。
3.2 線性空間
下面咱們來看看線性空間。線性空間的定義任何一本書上都有,可是既然咱們認可線性空間是個空間,那麼有兩個最基本的問題必須首先獲得解決,那就是:
1``. 空間是一個對象集合,線性空間也是空間,因此也是一個對象集合。那麼線性空間是什麼樣的對象的集合?或者說,線性空間中的對象有什麼共同點嗎?
2``. 線性空間中的運動如何表述的?也就是,線性變換是如何表示的?
咱們先來回答第一個問題,回答這個問題的時候實際上是不用拐彎抹角的,能夠直截了當的給出答案。線性空間中的任何一個對象,經過選取基和座標的辦法,均可以表達爲向量的形式。一般的向量空間我就不說了,舉兩個不那麼平凡的例子:
L1. 最高次項不大於n次的多項式的全體構成一個線性空間,也就是說,這個線性空間中的每個對象是一個多項式。若是咱們以x0, x1, ..., xn爲基,那麼任何一個這樣的多項式均可以表達爲一組n+1維向量,其中的每個份量ai其實就是多項式中x(i-1)項的係數。值得說明的是,基的選取有多種辦法,只要所選取的那一組基線性無關就能夠。這要用到後面提到的概念了,因此這裏先不說,提一下而已。
L2. 閉區間[a, b]上的n階連續可微函數的全體,構成一個線性空間。也就是說,這個線性空間的每個對象是一個連續函數。對於其中任何一個連續函數,根據魏爾斯特拉斯定理,必定能夠找到最高次項不大於n的多項式函數,使之與該連續函數的差爲0,也就是說,徹底相等。這樣就把問題歸結爲L1了。後面就不用再重複了。
因此說,向量是很厲害的,只要你找到合適的基,用向量能夠表示線性空間裏任何一個對象。這裏頭大有文章,由於向量表面上只是一列數,可是其實因爲它的有序性,因此除了這些數自己攜帶的信息以外,還能夠在每一個數的對應位置上攜帶信息。爲何在程序設計中數組最簡單,卻又威力無窮呢?根本緣由就在於此。這是另外一個問題了,這裏就不說了。
下面來回答第二個問題,這個問題的回答會涉及到線性代數的一個最根本的問題。
線性空間中的運動,被稱爲線性變換。也就是說,你從線性空間中的一個點運動到任意的另一個點,均可以經過一個線性變化來完成。那麼,線性變換如何表示呢?頗有意思,在線性空間中,當你選定一組基以後,不只能夠用一個向量來描述空間中的任何一個對象,並且能夠用矩陣來描述該空間中的任何一個運動(變換)。而使某個對象發生對應運動的方法,就是用表明那個運動的矩陣,乘以表明那個對象的向量。
簡而言之,在線性空間中選定基以後,向量刻畫對象,矩陣刻畫對象的運動,用矩陣與向量的乘法施加運動。
是的,矩陣的本質是運動的描述。若是之後有人問你矩陣是什麼,那麼你就能夠響亮地告訴他,矩陣的本質是運動的描述。
但是多麼有意思啊,向量自己不是也能夠當作是n x 1矩陣嗎?這實在是很奇妙,由於:
一個空間中的對象和運動居然能夠用相類同的方式表示。
能說這是巧合嗎?若是是巧合的話,那可真是幸運的巧合!能夠說,線性代數中大多數奇妙的性質,均與這個巧合有直接的關係。
4.運動理解的進階
上面說「矩陣是運動的描述」,到如今爲止,好像你們都還沒什麼意見。可是我相信遲早會有數學系出身的網友來拍板轉。由於運動這個概念,在數學和物理裏是跟微積分聯繫在一塊兒的。咱們學習微積分的時候,總會有人照本宣科地告訴你,初等數學是研究常量的數學,是研究靜態的數學,高等數學是變量的數學,是研究運動的數學。你們口口相傳,差很少人人都知道這句話。可是真知道這句話說的是什麼意思的人,好像也很少。簡而言之,在咱們人類的經驗裏,運動是一個連續過程,從A點到B點,就算走得最快的光,也是須要一個時間來逐點地通過AB之間的路徑,這就帶來了連續性的概念。而連續這個事情,若是不定義極限的概念,根本就解釋不了。古希臘人的數學很是強,但就是缺少極限觀念,因此解釋不了運動,被芝諾的那些著名悖論(飛箭不動、飛毛腿阿喀琉斯跑不過烏龜等四個悖論)搞得死去活來。由於這篇文章不是講微積分的,因此我就很少說了。有興趣的讀者能夠去看看齊民友教授寫的《重溫微積分》。我就是讀了這本書開頭的部分,才明白「高等數學是研究運動的數學」這句話的道理。
不過在我這個《理解矩陣》的文章裏,「運動」的概念不是微積分中的連續性的運動,而是瞬間發生的變化。好比這個時刻在A點,通過一個「運動」,一會兒就「躍遷」到了B點,其中不須要通過A點與B點之間的任何一個點。這樣的「運動」,或者說「躍遷」,是違反咱們平常的經驗的。不過了解一點量子物理常識的人,就會馬上指出,量子(例如電子)在不一樣的能量級軌道上跳躍,就是瞬間發生的,具備這樣一種躍遷行爲。因此說,天然界中並非沒有這種運動現象,只不過宏觀上咱們觀察不到。可是無論怎麼說,「運動」這個詞用在這裏,仍是容易產生歧義的,說得更確切些,應該是「躍遷」。所以這句話能夠改爲:
「矩陣是線性空間裏躍遷的描述」。
但是這樣說又太物理,也就是說太具體,而不夠數學,也就是說不夠抽象。所以咱們最後換用一個正牌的數學術語——變換,來描述這個事情。這樣一說,你們就應該明白了,
所謂變換,其實就是空間裏從一個點(元素/對象)到另外一個點(元素/對象)的躍遷。
好比說,拓撲變換,就是在拓撲空間裏從一個點到另外一個點的躍遷。
再好比說,仿射變換,就是在仿射空間裏從一個點到另外一個點的躍遷。附帶說一下,這個仿射空間跟向量空間是親兄弟。作計算機圖形學的朋友都知道,儘管描述一個三維對象只須要三維向量,但全部的計算機圖形學變換矩陣都是4 x 4的。說其緣由,不少書上都寫着「爲了使用中方便」,這在我看來簡直就是企圖矇混過關。真正的緣由,是由於在計算機圖形學裏應用的圖形變換,其實是在仿射空間而不是向量空間中進行的。想一想看,在向量空間裏相一個向量平行移動之後還是相同的那個向量,而現實世界等長的兩個平行線段固然不能被認爲同一個東西,因此計算機圖形學的生存空間其實是仿射空間。而仿射變換的矩陣表示根本就是4 x 4的。又扯遠了,有興趣的讀者能夠去看《計算機圖形學——幾何工具算法詳解》。
一旦咱們理解了「變換」這個概念,矩陣的定義就變成:
「矩陣是線性空間裏的變換的描述。」
到這裏爲止,咱們終於獲得了一個看上去比較數學的定義。不過還要多說幾句。教材上通常是這麼說的,在一個線性空間V裏的一個線性變換T,當選定一組基以後,就能夠表示爲矩陣。所以咱們還要說清楚到底什麼是線性變換,什麼是基,什麼叫選定一組基。線性變換的定義是很簡單的,設有一種變換T,使得對於線性空間V中間任何兩個不相同的對象x和y,以及任意實數a和b,有:
T(ax + by) = aT(x) + bT(y),
那麼就稱T爲線性變換。
定義都是這麼寫的,可是光看定義還得不到直覺的理解。線性變換到底是一種什麼樣的變換?咱們剛纔說了,變換是從空間的一個點躍遷到另外一個點,而線性變換,就是從一個線性空間V的某一個點躍遷到另外一個線性空間W的另外一個點的運動。這句話裏蘊含着一層意思,就是說一個點不只能夠變換到同一個線性空間中的另外一個點,並且能夠變換到另外一個線性空間中的另外一個點去。無論你怎麼變,只要變換先後都是線性空間中的對象,這個變換就必定是線性變換,也就必定能夠用一個非奇異矩陣來描述。而你用一個非奇異矩陣去描述的一個變換,必定是一個線性變換。有的人可能要問,這裏爲何要強調非奇異矩陣?所謂非奇異,只對方陣有意義,那麼非方陣的狀況怎麼樣?這個提及來就會比較冗長了,最後要把線性變換做爲一種映射,而且討論其映射性質,以及線性變換的核與像等概念才能完全講清楚。我以爲這個不算是重點,若是確實有時間的話,之後寫一點。如下咱們只探討最經常使用、最有用的一種變換,就是在同一個線性空間以內的線性變換。也就是說,下面所說的矩陣,不做說明的話,就是方陣,並且是非奇異方陣。
學習一門學問,最重要的是把握主幹內容,迅速創建對於這門學問的總體概念,沒必要一開始就考慮全部的細枝末節和特殊狀況,自亂陣腳。
接着往下說,什麼是基呢?這個問題在後面還要大講一番,這裏只要把基當作是線性空間裏的座標系就能夠了**。**注意是座標系,不是座標值,這二者但是一個「對立矛盾統一體」。這樣一來,「選定一組基」就是說在線性空間裏選定一個座標系。就這意思。
好,最後咱們把矩陣的定義完善以下:
「矩陣是線性空間中的線性變換的一個描述。在一個線性空間中,只要咱們選定一組基,那麼對於任何一個線性變換,都可以用一個肯定的矩陣來加以描述。」
理解這句話的關鍵,在於把「線性變換」與「線性變換的一個描述」區別開。一個是那個對象,一個是對那個對象的表述。就好像咱們熟悉的面向對象編程中,一個對象能夠有多個引用,每一個引用能夠叫不一樣的名字,但都是指的同一個對象。若是還不形象,那就乾脆來個很俗的類比。
好比有一頭豬,你打算給它拍照片,只要你給照相機選定了一個鏡頭位置,那麼就能夠給這頭豬拍一張照片。這個照片能夠當作是這頭豬的一個描述,但只是一個片面的的描述,由於換一個鏡頭位置給這頭豬拍照,能獲得一張不一樣的照片,也是這頭豬的另外一個片面的描述。全部這樣照出來的照片都是這同一頭豬的描述,可是又都不是這頭豬自己。
一樣的,對於一個線性變換,只要你選定一組基,那麼就能夠找到一個矩陣來描述這個線性變換。換一組基,就獲得一個不一樣的矩陣。全部這些矩陣都是這同一個線性變換的描述,但又都不是線性變換自己。
可是這樣的話,問題就來了若是你給我兩張豬的照片,我怎麼知道這兩張照片上的是同一頭豬呢?一樣的,你給我兩個矩陣,我怎麼知道這兩個矩陣是描述的同一個線性變換呢?若是是同一個線性變換的不一樣的矩陣描述,那就是本家兄弟了,見面不認識,豈不成了笑話。
好在,咱們能夠找到同一個線性變換的矩陣兄弟們的一個性質,那就是:
若矩陣A與B是同一個線性變換的兩個不一樣的描述(之因此會不一樣,是由於選定了不一樣的基,也就是選定了不一樣的座標系),則必定能找到一個非奇異矩陣P,使得A、B之間知足這樣的關係:
A = P-1BP
線性代數稍微熟一點的讀者一下就看出來,這就是類似矩陣的定義。沒錯,所謂類似矩陣,就是同一個線性變換的不一樣的描述矩陣。按照這個定義,同一頭豬的不一樣角度的照片也能夠成爲類似照片。俗了一點,不過能讓人明白。
而在上面式子裏那個矩陣P,其實就是A矩陣所基於的基與B矩陣所基於的基這兩組基之間的一個變換關係。關於這個結論,能夠用一種很是直覺的方法來證實(而不是通常教科書上那種形式上的證實),若是有時間的話,我之後在blog裏補充這個證實。
這個發現過重要了。原來一族類似矩陣都是同一個線性變換的描述啊!難怪這麼重要!工科研究生課程中有矩陣論、矩陣分析等課程,其中講了各類各樣的類似變換,好比什麼類似標準型,對角化之類的內容,都要求變換之後獲得的那個矩陣與先前的那個矩陣式類似的,爲何這麼要求?由於只有這樣要求,才能保證變換先後的兩個矩陣是描述同一個線性變換的。固然,同一個線性變換的不一樣矩陣描述,從實際運算性質來看並非不分好環的。有些描述矩陣就比其餘的矩陣性質好得多。這很容易理解,同一頭豬的照片也有美醜之分嘛。因此矩陣的類似變換能夠把一個比較醜的矩陣變成一個比較美的矩陣,而保證這兩個矩陣都是描述了同一個線性變換。
這樣一來,矩陣做爲線性變換描述的一面,基本上說清楚了。可是,事情沒有那麼簡單,或者說,線性代數還有比這更奇妙的性質,那就是,矩陣不只能夠做爲線性變換的描述,並且能夠做爲一組基的描述。而做爲變換的矩陣,不但能夠把線性空間中的一個點給變換到另外一個點去,並且也可以把線性空間中的一個座標系(基)表換到另外一個座標系(基)去。並且,變換點與變換座標系,具備殊途同歸的效果。線性代數裏最有趣的奧妙,就蘊含在其中。理解了這些內容,線性代數裏不少定理和規則會變得更加清晰、直覺。
這個留在下一篇再寫吧。
由於有別的事情要作,下一篇可能要過幾天再寫了。
5. 矩陣理解再進階
在第二部分結束的時候,我說:
「矩陣不只能夠做爲線性變換的描述,並且能夠做爲一組基的描述。而 做爲變換的矩陣,不但能夠把線性空間中的一個點給變換到另外一個點去,並且也可以把線性空間中的一個座標系(基)表換到另外一個座標系(基)去。並且,變換點 與變換座標系,具備殊途同歸的效果。線性代數裏最有趣的奧妙,就蘊含在其中。理解了這些內容,線性代數裏不少定理和規則會變得更加清晰、直覺。
這個留在下一篇再寫吧。
由於有別的事情要作,下一篇可能要過幾天再寫了。 」
然而這一拖就是一年半。一年半以來,這兩篇粗糙放肆的文章被處處轉載,以致於在Google的搜索提示中,個人名字跟「矩陣」是一對關聯詞彙。這對於學生時代數學一直不好的我來講,實在是使人惶恐的事情。數學是何等輝煌精緻的學問!表明着人類智慧的最高成就,是人與上帝對話的語言。而我實在連數學的門都還沒進去,不要說談什麼理解,就是稍微難一些的題目我也不多能解開。我有什麼資格去談矩陣這樣重要的一個數學概念呢?更況且,個人想法直觀是直觀,未見的是正確的啊,會不會誤人子弟呢?所以,算了吧,到此爲止吧,我這麼想。
是時不時收到的來信逐漸改變了個人想法。
一年半以來,我收到過不下一百封直接的來信,要求我把後面的部分寫出來。這些來信大部分是國內的網友和學生,也有少數來自正在國外深造的朋友,大部分是鼓勵,有的是誠摯的請求,也有少數嚴厲斥責我不守承諾。無論是何種態度,這都代表他們對我這一點點小小的思考成果的鼓勵,特別是對於我這種思惟的視角和嘗試的鼓勵。他們在信中讓我知道,儘管個人數學水平不高,可是我這種從普通人(而不是數學家)視角出發,強調對數學概念和規則的直覺理解的思路,對於不少人是有益的。也許這條路子在數學中絕非正道,也不會走得很遠,可是不管如何,在必定的階段,對一部分人來講,較之目前數學教材廣泛採用的思路,這種方式可能更容易理解一些。既然是可能對一部分人有幫助的事情,那麼我就不該該心存太多雜念,應該不斷思考和總結下去。
因此,下面就是大家來信要求我寫出來的東西。
首先來總結一下前面兩部分的一些主要結論:
1``. 首先有空間,空間能夠容納對象運動的。一種空間對應一類對象。
2``. 有一種空間叫線性空間,線性空間是容納向量對象運動的。
3``. 運動是瞬時的,所以也被稱爲變換。
4``. 矩陣是線性空間中運動(變換)的描述。
5``. 矩陣與向量相乘,就是實施運動(變換)的過程。
6``. 同一個變換,在不一樣的座標系下表現爲不一樣的矩陣,可是它們的本質是同樣的,因此本徵值相同。
下面讓咱們把視力集中到一點以改變咱們以往看待矩陣的方式。咱們知道,線性空間裏的基本對象是向量,而向量是這麼表示的:
[a1, a2, a3, ..., an]
矩陣呢?矩陣是這麼表示的:
a11, a12, a13, ..., a1n
a21, a22, a23, ..., a2n
...
an1, an2, an3, ..., ann
不用太聰明,咱們就能看出來,矩陣是一組向量組成的。特別的,n維線性空間裏的方陣是由n個n維向量組成的。咱們在這裏只討論這個n階的、非奇異的方陣,由於理解它就是理解矩陣的關鍵,它纔是通常狀況,而其餘矩陣都是意外,都是不得不對付的討厭情況,大能夠放在一邊。這裏多一句嘴,學習東西要抓住主流,不要糾纏於旁支末節。很惋惜咱們的教材課本大多數都是把主線埋沒在細節中的,搞得你們還沒明白怎麼回事就先被灌暈了。好比數學分析,明明最要緊的觀念是說,一個對象能夠表達爲無窮多個合理選擇的對象的線性和,這個概念是貫穿始終的,也是數學分析的精華。可是課本里自始至終不講這句話,反正就是讓你作吉米多維奇,掌握一大堆解偏題的技巧,記住各類特殊狀況,兩類間斷點,怪異的可微和可積條件(誰還記得柯西條件、迪裏赫萊條件...?),最後考試一過,一切忘光光。要我說,還不如反覆強調這一個事情,把它深深入在腦子裏,別的東西忘了就忘了,真碰到問題了,再查數學手冊嘛,何須因小失大呢?
言歸正傳。若是一組向量是彼此線性無關的話,那麼它們就能夠成爲度量這個線性空間的一組基,從而事實上成爲一個座標系體系,其中每個向量都躺在一根座標軸上,而且成爲那根座標軸上的基本度量單位(長度1)。
如今到了關鍵的一步。看上去矩陣就是由一組向量組成的,並且若是矩陣非奇異的話(我說了,只考慮這種狀況),那麼組成這個矩陣的那一組向量也就是線性無關的了,也就能夠成爲度量線性空間的一個座標系。結論:
矩陣描述了一個座標系。
「慢着!」,你嚷嚷起來了,「你這個騙子!你不是說過,矩陣就是運動嗎?怎麼這會矩陣又是座標系了?」
嗯,因此我說到了關鍵的一步。我並無騙人,之因此矩陣又是運動,又是座標系,那是由於——
「運動等價於座標系變換」。
對不起,這話其實不許確,我只是想讓你印象深入。準確的說法是:
_「對象的變換等價於座標系的變換」。
或者:
「固定座標系下一個對象的變換等價於固定對象所處的座標系變換。」
說白了就是:
「運動是相對的。」 _
讓咱們想一想,達成同一個變換的結果,好比把點(1, 1)變到點(2, 3)去,你能夠有兩種作法。
第一,座標系不動,點動,把(``1``, ``1``)點挪到(``2``, ``3``)去。
第二,點不動,變座標系,讓x軸的度量(單位向量)變成原來的``1``/``2``,讓y軸的度量(單位向量)變成原先的``1``/``3``,這樣點仍是那個點,但是點的座標就變成(``2``, ``3``)了。
方式不一樣,結果同樣。
從第一個方式來看,那就是我在《理解矩陣》1/2中說的,把矩陣當作是運動描述,矩陣與向量相乘就是使向量(點)運動的過程。在這個方式下,
Ma = b
的意思是:
「向量a通過矩陣M所描述的變換,變成了向量b。」
而從第二個方式來看,矩陣M描述了一個座標系,姑且也稱之爲M。那麼:
Ma = b
的意思是:
「有一個向量,它在座標系M的度量下獲得的度量結果向量爲a,那麼它在座標系I的度量下,這個向量的度量結果是b。」
這裏的I是指單位矩陣,就是主對角線是1,其餘爲零的矩陣。
而這兩個方式本質上是等價的。
我但願你務必理解這一點,由於這是本篇的關鍵。
正由於是關鍵,因此我得再解釋一下。
在M爲座標系的意義下,若是把M放在一個向量a的前面,造成Ma的樣式,咱們能夠認爲這是對向量a的一個環境聲明。它至關因而說:
「注意了!這裏有一個向量,它在座標系M中度量,獲得的度量結果能夠表達爲a。但是它在別的座標系裏度量的話,就會獲得不一樣的結果。爲了明確,我把M放在前面,讓你明白,這是該向量在座標系M中度量的結果。」
那麼咱們再看孤零零的向量b:
b
多看幾遍,你沒看出來嗎?它其實不是b,它是:
Ib
也就是說:「在單位座標系,也就是咱們一般說的直角座標系I中,有一個向量,度量的結果是b。」
而 Ma = Ib的意思就是說:
「在M座標系裏量出來的向量a,跟在I座標系裏量出來的向量b,其實根本就是一個向量啊!」
這哪裏是什麼乘法計算,根本就是身份識別嘛。
從這個意義上咱們從新理解一下向量。向量這個東西客觀存在,可是要把它表示出來,就要把它放在一個座標系中去度量它,而後把度量的結果(向量在各個座標軸上的投影值)按必定順序列在一塊兒,就成了咱們平時所見的向量表示形式。你選擇的座標系(基)不一樣,得出來的向量的表示就不一樣。向量仍是那個向量,選擇的座標系不一樣,其表示方式就不一樣。所以,按道理來講,每寫出一個向量的表示,都應該聲明一下這個表示是在哪一個座標系中度量出來的。表示的方式,就是 Ma,也就是說,有一個向量,在M矩陣表示的座標系中度量出來的結果爲a。咱們平時說一個向量是[2 3 5 7]T,隱含着是說,這個向量在 I 座標系中的度量結果是[2 3 5 7]T,所以,這個形式反而是一種簡化了的特殊狀況。
注意到,M矩陣表示出來的那個座標系,由一組基組成,而那組基也是由向量組成的,一樣存在這組向量是在哪一個座標系下度量而成的問題。也就是說,表述一個矩陣的通常方法,也應該要指明其所處的基準座標系。
所謂M,實際上是 IM,也就是說,M中那組基的度量是在 I 座標系中得出的。
從這個視角來看,M×N也不是什麼矩陣乘法了,而是聲明瞭一個在M座標系中量出的另外一個座標系N,其中M自己是在I座標系中度量出來的。
回過頭來講變換的問題。我剛纔說,「固定座標系下一個對象的變換等價於固定對象所處的座標系變換」,那個「固定對象」咱們找到了,就是那個向量。可是座標系的變換呢?我怎麼沒看見?
請看:
Ma = Ib
我如今要變M爲I,怎麼變?對了,再前面乘以個M-1,也就是M的逆矩陣。換句話說,你不是有一個座標系M嗎,如今我讓它乘以個M-1,變成I,這樣一來的話,原來M座標系中的a在I中一量,就獲得b了。
我建議你此時此刻拿起紙筆,畫畫圖,求得對這件事情的理解。好比,你畫一個座標系,x軸上的衡量單位是2,y軸上的衡量單位是3,在這樣一個座標系裏,座標爲(1,1)的那一點,實際上就是笛卡爾座標系裏的點(2, 3)。而讓它原形畢露的辦法,就是把原來那個座標系:
2 0
0 3
的x方向度量縮小爲原來的1/2,而y方向度量縮小爲原來的1/3,這樣一來座標系就變成單位座標系I了。保持點不變,那個向量如今就變成了(2, 3)了。
怎麼可以讓「x方向度量縮小爲原來的1/2,而y方向度量縮小爲原來的1/3」呢?就是讓原座標系:
2 0
0 3
被矩陣:
1/2 0
0 1/3
左乘。而這個矩陣就是原矩陣的逆矩陣。
下面咱們得出一個重要的結論:
「對座標系施加變換的方法,就是讓表示那個座標系的矩陣與表示那個變化的矩陣相乘。」
再一次的,矩陣的乘法變成了運動的施加。只不過,被施加運動的再也不是向量,而是另外一個座標系。
若是你以爲你還搞得清楚,請再想一下剛纔已經提到的結論,矩陣MxN,一方面代表座標系N在運動M下的變換結果,另外一方面,把M當成N的前綴,當成N的環境描述,那麼就是說,在M座標系度量下,有另外一個座標系N。這個座標系N若是放在I座標系中度量,其結果爲座標系MxN。
在這裏,我實際上已經回答了通常人在學習線性代數是最困惑的一個問題,那就是爲何矩陣的乘法要規定成這樣。簡單地說,是由於:
1``. 從變換的觀點看,對座標系N施加M變換,就是把組成座標系N的每個向量施加M變換。
2``. 從座標系的觀點看,在M座標系中表現爲N的另外一個座標系,這也歸結爲,對N座標系基的每個向量,把它在I座標系中的座標找出來,而後匯成一個新的矩陣。
3``. 至於矩陣乘以向量爲何要那樣規定,那是由於一個在M中度量爲a的向量,若是想要恢復在I中的真像,就必須分別與M中的每個向量進行內積運算。我把這個結論的推導留給感興趣的朋友吧。應該說,其實到了這一步,已經很容易了。
綜合以上,矩陣的乘法就得那麼規定,一切有根有據,毫不是哪一個神經病胡思亂想出來的。
我已經沒法說得更多了。矩陣又是座標系,又是變換。究竟是座標系,仍是變換,已經說不清楚了,運動與實體在這裏統一了,物質與意識的界限已經消失了,一切歸於沒法言說,沒法定義了。道可道,很是道,名可名,很是名。矩陣是在是不可道之道,不可名之名的東西。到了這個時候,咱們不得不認可,咱們偉大的線性代數課本上說的矩陣定義,是無比正確的:
「矩陣就是由m行n列數放在一塊兒組成的數學對象。」
好了,這基本上就是我想說的所有了。還留下一個行列式的問題。矩陣M的行列式其實是組成M的各個向量按照平行四邊形法則搭成一個n維立方體的體積。對於這一點,我只能感嘆於其精妙,卻沒法揭開其中奧祕了。也許我掌握的數學工具不夠,我但願有人可以給咱們你們講解其中的道理了。
我不知道是否講得足夠清楚了,反正這一部分須要您花些功夫去推敲。
此外,請你們沒必要等待這個系列的後續部分。以個人工做狀況而言,近期內很難保證繼續投入腦力到這個領域中,儘管我仍然對此興致濃厚。不過若是還有(四)的話,多是一些站在應用層面的考慮,好比對計算機圖形學相關算法的理解。可是我不承諾這些討論近期內會出現了。