程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 理解矩陣(二)

理解矩陣(二)

編輯:.NET實例教程

接著理解矩陣。

上一篇裡說“矩陣是運動的描述”,到現在為止,好像大家都還沒什麼意見。但是我相信早晚會有數學系出身的網友來拍板轉。因為運動這個概念,在數學和物理裡是跟微積分聯系在一起的。我們學習微積分的時候,總會有人照本宣科地告訴你,初等數學是研究常量的數學,是研究靜態的數學,高等數學是變量的數學,是研究運動的數學。大家口口相傳,差不多人人都知道這句話。但是真知道這句話說的是什麼意思的人,好像也不多。簡而言之,在我們人類的經驗裡,運動是一個連續過程,從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的另一個點的運動。這句話裡蘊含著一層意思,就是說一個點不僅可以變換到同一個線性空間中的另一個點,而且可以變換到另一個線性空間中的另一個點去。不管你怎麼變,只要變換前後都是線性空間中的對象,這個變換就一定是線性變換,也就一定可以用一個非奇異矩陣來描述。而你用一個非奇異矩陣去描述的一個變換,一定是一個線性變換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved