剛度矩陣(stiffness matrix)
當有限元素法把偏微分方程化為線性方程組 K c = f 時,矩陣 K 有一個借自其結構工程起源的名字:剛度矩陣。這名字來自彈性力學,在那裡 K 確實編碼了結構抵抗變形的剛硬程度,但這個矩陣對每一個橢圓型偏微分方程都會出現。它是微分算子的離散化身——算子的作用,記錄在一張有限的數字網格中。
它的元素是具體的積分。第 (i, j) 個元素是 K_ij = 在區域上對 (grad phi_i) 點乘 (grad phi_j) 的積分,其中 phi_i 與 phi_j 是位於節點 i 與 j 的基底函數。由於每個基底函數(帽形)只在觸及其節點的少數元素上不為零,除非節點 i 與 j 相鄰,否則該積分為零——於是絕大多數元素都是零,K 是「稀疏」的,這正是讓百萬未知量的 K c = f 可解的關鍵。只要底層的弱形式對稱且強制,K 也是對稱正定的,這保證唯一解,並讓你能使用如 Cholesky 或共軛梯度等高效求解器。其伴隨矩陣 M_ij = phi_i phi_j 的積分(無梯度)是質量矩陣,出現在含時與特徵值問題中。
實務上 K 從不被寫成一個大積分;它是逐元素「組裝」而成的。你為每個元素算一個小的局部剛度矩陣(線性三角形是 3x3),再把它的元素加進全域 K 中對應該元素節點的列與行。這種局部到全域的組裝是每一份有限元素程式的計算核心,而其稀疏性是一切:一百萬未知量的稠密矩陣需要 8 兆位元組(TB),而稀疏的剛度矩陣只需數 GB,幾分鐘內便能解出。
對間距為 h 的均勻一維網格上的分段線性元素,-u_xx 的全域剛度矩陣是 (1/h) 乘以對角為 2、非對角為 -1 的三對角矩陣——由把每個元素的局部矩陣 (1/h)[1, -1; -1, 1] 疊到它連接的兩個節點上組裝而成。
稀疏、對稱、正定——並逐元素堆疊而成。
在施加邊界條件之前,K 是奇異的(不可逆)——純諾伊曼問題會留下一個常數未定,恰反映偏微分方程本身的相容性條件。求解之前你必須在某處把解釘住。