2008年5月3日

見山

愈來愈體悟到一個東西要會很多層面了
當初修課的東西現在看起來淺的不得了
一件(線代的)事情至少要會:

1. 定義與實例
2. 具體操作
3. 幾何觀點
4. 直觀概念

很多東西都突然覺得很深刻:

========================================================================
例一: column rank 與 row rank 相等
========================================================================
1.
我們知道:
c-rk(A) 定義為 「矩陣A中某一組maximal線性獨立column vectors的個數」
r-rk(A) 定義為 「矩陣A中某一組maximal線性獨立row vectors的個數」

2.
這兩個東西看起來好像會一樣 但是我們沒有辦法直接說明
常見的作法是把矩陣A換成 row-echelon form
這樣對於左上角的 rk*rk 子矩陣分別從行/列的方向去數pivots會一樣
可以告訴我們c-rk(A) = r-rk(A)

可是在這個層級裡面我們只看得見「矩陣裡面的數字」
「矩陣裡面的數字」對我們來說是沒有意義的!
我們也不知道行列操作的本質是什麼
我們只是呆呆的把一些數字經由小學算術換成另外一些數字

3.
讓我們回到源頭,
矩陣是個把「有限維」向量空間實體化的東西

*來看一個特例:
我們可以想像在R^n上有一個n維向量 v (此時的基底是e1,...,en)
一個Linear map可以把 v 變成另外一個向量 T(v) 同樣落在 R^n上
分開看每一個基底 ej
經過T變換之後變成的 T(ej) 我們一樣可以用e1~en來表示
寫作 T(ej) = Σek*akj 把係數寫下來 就是矩陣!

                    T
 向量空間V          →        向量空間V
     e1   ┌ a11 a12 … a1n ┐    e1
     e2   │ a21 a22    a2n │    e2
      :   │  :          :  │     :
      :   │  :          :  │     :
     en   └ an1 an2 … ann ┘    en

* 一般來說 T:V → W 可以把 向量空間V上的一個向量v
   變成 向量空間W上的一個向量 T(v)

對於這個T,我們可以「任取」V的基底 e1~en 和W的基底f1~fm
可以找到唯一的表示 T(ej) = Σfk*akj 這些係數寫下來就是矩陣

所以一個矩陣就是:
  「對於選定的T:V→W 採用基底e1~en和f1~fm對應的係數變化」
  描述的是
  「一個向量v在e1~en的方向以什麼倍數(就是矩陣係數)的變成T(v)」


                    T
 向量空間V          →        向量空間W
     e1   ┌ a11 a12 … a1m ┐    f1
     e2   │ a21 a22    a2m │    f2
      :   │  :          :  │     :
     en   │  :          :  │     :
          └ an1 an2 … anm ┘    fm

這樣看起來矩陣是個極度不精確(或你可以說可塑性大)的東西
我們只看的到係數的變化卻看不見它的「向量改變」本質


我們實際上對A來做行列的操作,就是左右分別乘上基本矩陣 Q和P
使QAP變成我們想要的樣子
(也就是前rk*rk的子矩陣是I_rk 其他都是0)

*而基本矩陣的本質是「變換基底以描述同個向量」 所以我們可以寫成:

      id       T        id
V    →   V   →   W   →  W
e'1       e1       f1      f'1
 :   [P]   :  [A]   :  [Q]  :
e'n       en       fm      f'm


QAP要是我們要的樣子,就是
「將v以e'1~e'n描述 變成 將id。T。id(v)=T(v)以f'1~f'm描述的係數變化」

4. 幾何觀點

在我修課(線代)的那個時候,dual space和dual basis是很沒有用的東西
但是我覺得我對這個的看法反而在代導被康老啟發了,在那之前我們先來看:

*什麼是矩陣A的轉置矩陣 tA ?

我們的認知絕對不可以只是把矩陣的行列換過來寫
回憶剛剛的圖表
矩陣A是把一個線性寫像 T:V→W 分別選定基底後的係數表示

有 T(ej) = Σfk*akj
            k

我們能不能找到一種通用的方法、對應的東西
可以有 變換(基底1) = Σ基底2*ajk  ?
                      k
答案就是用對偶空間來描述:

* 對於T:V→W 先畫出

     T
 V  →  W
e1     f1
 : [A]  :
en     fm

 我們可以決定T*:V*→W* 有以下關係

     T*
 V*  →   W*
e*1      f*1
 :   [B]  :
e*n      f*m

若V是一個over K 的向量空間,則V*是對應V的對偶空間
元素都是「把V對到K的線性轉換」即V* = Hom_K(V,K)

而e*i則是一個 把ei對到1, 其他基底都對到0的 線性轉換
我們把這種東西叫做 linear functional...依此類推f*j

譬如說若 v  = 5e1 + 3e2 + 2e4
則   e*1(v) = 5*1 + 3*0 + 2*0 = 5
     e*4(v) = 5*0 + 3*0 + 2*1 = 2

可以硬寫開來證明這樣產生的係數變化的矩陣B就是 tA !

而我們就可以把矩陣轉置著寫想成對偶空間上發生的事情。

*而我們用幾何的觀點來看r-rk等於c-rk這件事情就是:

  r-rk(T)
= r-rk(A)  因為row rank is well defined
= c-rk(tA) 直接把它從另一個方向來數maximal LI set
= dim(im(T*)) 由幾何定義的rank得來
= dim(T*(W*)) 其中T*(W*)為W*的子空間
= dim(V*) - dim(T*(W*)⊥) 因 dimV* = dimU* + dimU*⊥
= dim(V) - dim(ker(T)) 因 dimV = dimV* 且 ker(T) = T*(W*)⊥
= dim(im(T)) 由rank equation
= c-rk(A)
= c-rk(T)

這中間發生了三件奧妙的事情:

(a) Rank Equation: dim V = dim(im(T)) + dim(ker(T))
(b) 若U*為W*的子空間 則 dimV* = dimU* + dimU*⊥
(c) ker(T) = T*(W*)⊥

前兩件事情可以紮實的由定義算出來
(或是說用Steinitz的方法來換基底之類的)
第三件事情可以由定義檢驗它是對的
但是說實在我也還沒有很明白中間的insight為何
至少我看來它把看「關係不明確的V和對偶空間V*」連結了起來

5.所以我們有三種觀點:

(a) 對寫成方塊狀的數字,我們可以把它按照規則動一動
    變成一個樣子 然後指著它說c-rk = r-rk
    (但是不知道自己在講什麼東西)

(b) 看著擺成方塊的數字,真實的看到了兩邊的基底和中間的關係
    我們可以分別找到兩組基底,T這個變換在共rank個方向上
    各別可以把那個方向的向量伸長且不會轉到別的方向去
    延伸下去就是對角化的概念!

(c) 看著兩邊的基底和其中的關係,想到了對應的對偶空間
    把「從另一個方向來數」看作了對偶空間上發生的事情
    再藉由良好的定義基底讓等式成立
    (說實在的我還沒有看透insight)

======================================================================

如果今天去問大學生「你會不會說明 row rank = column rank?」
可能很多人都會認為這是件trivial的事情

但是這個看起來trivial的事情對我來講意義很深刻
有點誇張的是,當我第一次了解dual space在幹麼的時候
是有點激動的 好像開了通往另一個世界的窗戶一樣
跨過這個窗戶究竟是一個新世界還是狹窄的小房間我並不清楚
(好像後者的可能性比較大 xD)
但是騙不了自己的是我那時候激動了一下

有如蚍蜉撼樹

後記:

其實我跳過了 「若U*為W*的子空間 則 dimV* = dimU* + dimU*⊥」的說明
因為跟本文不太有關係,但是我還是補一下:

我們可以定義 操作<˙,˙>如下:

 V x V*  →   K
(v , f )|→ = f(v)
若U*為W*的子空間 則 U*⊥ = {v in V| = 0 for all g in U*}