幾十年前曾在一本代數的書(內容主要但不限於是線性代數)上看到過「張量 (tensor)」;當然在此前後知道張量是物理中的重要概念,只是物理中的張量是什麼東西我並不清楚,即使看過前述數學定義,也不知二者的關係或差異。近日有朋友談及「張量場」,網路上查了一下介紹的文章,結果感覺有些混淆,就丟在一邊;今又重看,並多看了幾篇介紹的文章,算是有些感悟,且為記。

從抽象的,或說一般性的觀點,首先要有一個所謂「體 (field)」的東西,用在線性代數中稱為「純量體」,以 K 表示。如實數體 R,複數體 C,有限體如同餘體 Zp。在抽象代數上 K 是一個集合上面配備兩種二元運算 (binary operator) 稱為「加法」和「乘法」滿足一堆條件(詳見抽象代數的書,或有些線性代數的教本也會定義)。其次需要一個向量空間,這又是一個集合 V 上面配備一個所謂「(向量)加法」二元運算和 V 與 K 的「純量倍」運算,當然其間又是一堆條件要滿足(詳見線性代數教本)

不同向量空間之間可以定義函數 f: V → U,線性代數中感興趣的是「線性映射 (linear mapping)」; K 本身也可以看成是一個向量空間,因此也可以定義 V 映至 K 的線性映射。這種線性映射有個特別稱呼,叫「線性泛函 (linear functional)」。V 映至 U 的所有線性映射本身配備函數加法及函數純量倍也構成一個向量空間;特殊地說,V 上的所有線性泛函也構成一個向量空間,稱為 V 的「對偶空間 (dual space)」, 以 V* 表示,其元素也稱共變或協變 (covariant) 向量,或稱餘向量 (co-vectors) 或 1-form 。V** 和 V 之間有一個自然的對應,如果在有限維的 V,V 和 V** 之間的自然對應是一對一而且映成的,或更進一步說它們之間是同構的 (isomorphism)。所以在張量術語中,V 的元素也被稱為反變或逆變 (contravariant) 向量。

所謂張量,數學上的定義是從 V*×...×V*×V×...×V (p 個 V*, q 個 V 的笛卡爾乘積)映至 K 的多線性映射。設

f: V*×...×V*×V×...×V → K

函數 f 等於是一個 p+q 變量的函數,其中 p 個在 V*, q 個在 V 中。多線性的意思,就是:對這 p+q 個其中任一個來說, f 都是線性的。例如一個方陣的行列式(值)就可以看成 n 個 R^n 向量,即 (R^n)^n 映至 R 的 n 線性函數,所以是一個 (0,n) 型張量。又如矩陣映至其跡,是一個線性映射,其定義域是所有同階矩陣的集合,例如所有 n 階方陣的集合,在矩陣加法和純量倍運算下是一個向量空間,所以這映射也是一個 (0,1) 型張量。如果 q = 0, 也就是說自變數都是協變向量,這樣的張量稱為協變張量;如果 p = 0, 則是逆變張量;如果 p, q 都是正值,則是混合(型)張量。

張量是 p 個 V* 向量變數和 q 個 V 向量變數的多線性實數值函數(映射),稱為 (p,q) 型張量,p+q 是張量的階或秩 (rank) 。所以 V 的一個線性泛函是一個 (0,1) 型張量;實變數函數 f: R → R 其中 f(x) = cx, 將定義域的 R 視為一個向量空間,也是一個張量,不過這卻不被視為 1 階張量,而被視為 0 階張量。如果把此 0 階張量用 c 代表,c 是一純量;V 的線性泛函是 1 階張量,又是 V* 的元素,本身也是個向量;R^n 上兩向量一般內積是一個雙線性式,可以用一個矩陣(方陣)表示,這是一個 2 階張量。一般有限維向量空間 V 上的一個 2 階張量,在給定 V 的基底(或及 V* 上的對偶基)後都可以用一個矩陣來表示。所以說: 0 階張量是純量,1 階張量是向量,2 階張量是矩陣。以此類推,k 階張量以程式語言的術語來說是 k 個維度(k 個註標)的一個陣列。這樣的張量表現形式是依基底而變的,也就是不同座標系結果不同。如果一個張量的特性值不會因座標系不同而變,這特性值就稱為張量的不變量。

有時候覺得看到的概念介紹相當混淆,例如張量的物理定義或說明似乎顯示張量就是一個陣列,也就是張量的分量表示法,但這顯然和座標系或基底是有關的;但又有一個說法是要定義一個和座標無關的物理量,這不就是上述張量的不變量嗎?那麼,物理上的張量究竟指的是上述分量表示法?或是不變量?或是抽象的多線性映射?做為一個文科生出身者,我不懂物理,無法在此解答,只能把張量界定在抽象層次的多線性純量值函數,以及固定了基底(座標系)之後的分量。

張量既是多線性函數,那兩張量之積可以直接以函數乘積來定義:

(f⊙g)(x1,...,xm,y1,...,yn) = f(x1,...,xm)g(y1,...,yn) 

稱之為 f 和 g 的「張量積 (tensor product)」。如果只是單純協變或單純逆變張量,這不會有任何問題;但若混合協、逆變,究竟如何處理我不清楚,仍需尋找專門的書籍為準吧!不過,從函數的觀點,只不過是(自)變量之間順序的問題。以分量來表示,假設兩協變張量或兩逆變張量 U, W 的分量分別是 u(i1,...,im) 與 w(j1,...,jn), 則

U⊙W(i1,...,im,j1,...,jn) = u(i1,...,im) w(j1,...,jn)

也就是說兩張量之(張量)積,其秩直接是兩張量之秩的和,而對應的分量是兩張量分量(純量)的普通乘積。例如 u, w 分別是同維度行向量視為張量,則

u⊙w = uw' (矩陣乘法, w' 為 w 之轉置)

結果是一個方陣,正是 2 階張量平常表現形式。若 U, W 都是 2 階張量,以矩陣表示,則 U⊙W 應是秩 4(有 4 個註標)的陣列,而一般兩矩陣的克羅內克積 (Kronecker product) 不只是把它變成一個大矩陣,註標順序也是後者 (W) 先變。不過整體而言,仍是分量排列順序問題。事實上在張量定義中,V* 不一定要放在 V 之前,有的作者是把 V 放在前面而 V* 放在後面。

張量的分量表示法既是與 V 的基底有關,則有序基底由 E = {e1,...,en} 變成 F = {f1,...,fn} 時,張量分量如何變化是需要了解。V 上一向量 v 以 E 表示是 v = (v1,...vn)’; fi 向量以 E 的分量表示是 fi = (fi1,...,fin)。設 P 的第 i (直)行是前述 fi 對有序基底 E 的座標,則形式上可以寫:

F = EP,  v = Ev

上列第二式左邊的 v 可以視為真正的向量 v,而右邊的 v 是以基底 E 表示的座標(行向量)v。若 w = (w1,...,wn)' 是向量 v 以有序基底 F 表示的座標,則

Ev = Fw = EPw

故 Pw = v。因 P 是基底轉換矩陣,是可逆的,所以 w = P^(-1)v。事實上 P^(-1) 第 i 行是原基底向量 ei 以新基底 F 表示的分量。

有了向量基底變換的公式 (F = EP), 我們首先來看 1-form α'v 或 v'α,

α'v = α'Pw

這簡單的關係表示 V 上一個 1 階張量 α'v 在 V 之基底為 E 時分量的表示式是向量 α, 則基底變成 F 時,此張量新的分量表示法為 P'α。前面考慮的是 (0,1) 型張量,α 是在 V* 中。現在要考慮 v 是在 V* 中而 α 在 V (實際上是 V**,但因具有自然的同構對應,把兩者視為相同)中,則我們需要考慮 V 之基底由 E 變成 F 時,V* 上對應的對偶基 (dual basis) 變化。假設 E*, F* 分別是對應 E, F 的對偶基,則形式上 E*'E = F*'F = I, 故

F* = (F')^(-1) =(P'E')^(-1) =E*(P')^(-1)

也就是 V 上的基底變換 E → F = EP 對應到 V* 上對偶基變換 E* → F* = E*((P')^(-1))。因此,V* 上的 1-form 分量表示法將由 α 變成 ((P')^(-1))α。

其次,我們看二次式:如果一個 (0,2) 階張量在 V 的基底是 E 時為 (x,y) → x'Ay,當基底變為 F 時,

x'Ay = (P^(-1)x)'P'AP(P^(-1)y)

也就是對應新基底 F,此雙線性式的分量形式將是矩陣 P'AP,其具體分量公式是

b(h,k) = ΣΣ p(i,h)p(j,h)a(i,j)

其他型戀秩(階)數 2 的張量參考此結果及前面 1-form 結果可得。更高階張量利用張量積運算定義及此處結果亦可得。

張量場 (tensor field) 相當於一個張量值函數,就像向量場是一個向量值函數,而實數值函數則是一個純量場。所以 R^3 中一個區域 A 上的一個張量值函數就是 A 上的一個張量場;R^3 上一個曲面 M 上的一個張量值函數,就是曲面 M 上的一個張量場。

純量值函數可以考慮其微分、積分;向量值函數也可以考慮其微分、積分;同樣,張量值函數也可以考慮其微分、積分。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 等死的老賊 的頭像
    等死的老賊

    劉應興的部落格

    等死的老賊 發表在 痞客邦 留言(0) 人氣()