正方體等效電阻(七):從圖 Laplacian 到有效電阻公式
有了圖 Laplacian L,解電路問題等同於解 Lv=i。但 L 是奇異矩陣,本文介紹兩種處理方式:接地縮減法與 Moore–Penrose 擬逆。從擬逆推導出有效電阻閉合公式,再用 Python 一次驗算正方體三種連法,並展示立方體 Laplacian 的美麗特徵譜。立方晶格等效電阻系列第七篇。
第六篇推導出電路方程式的矩陣形式:
\[L\mathbf{v} = \mathbf{i} \tag{$*$}\label{eq7:lvi}\]其中 $L$ 是圖 Laplacian,$\mathbf{v}$ 是節點電位向量,$\mathbf{i}$ 是外部注入電流向量。
問題來了:$L$ 是奇異矩陣($\ker L = \operatorname{span}\{\mathbf{1}\}$),所以直接取 $L^{-1}$ 並不存在。本文介紹兩種繞過這個障礙的方法,並推導出一個優雅的有效電阻閉合公式。
方法一:接地縮減法
核心想法:既然電壓是相對量,選一個節點當參考(接地),把它的電位強制設為零,就消除了不確定性。
設接地節點為 $b$(即 $v_b = 0$)。把第 $\eqref{eq7:lvi}$ 式的第 $b$ 列與第 $b$ 行同時刪去,得到一個 $(n-1)\times(n-1)$ 的縮減 Laplacian $L_\text{red}$:
\[L_\text{red}\,\mathbf{v}_\text{red} = \mathbf{i}_\text{red} \tag{1}\label{eq7:lred}\]$L_\text{red}$ 是正定矩陣(連通圖 + 刪去一列一行),所以 $\eqref{eq7:lred}$ 有唯一解。
計算 $R_\text{eff}(a,b)$ 的步驟:接地節點 $b$,在節點 $a$ 注入電流 $I$,解出 $\mathbf{v}_\text{red}$,則
\[R_\text{eff}(a,b) = \frac{v_a - v_b}{I} = \frac{v_a}{I}\]與前五篇手算的對應
以正方體體對角線($a=0$, $b=7$, $I=1$)為例。接地節點 7 後,把 $\tilde{L}$ 的第 8 列和第 8 行刪去,得到 $7\times7$ 的 $\tilde{L}\text{red}$,右端向量 $\mathbf{i}\text{red} = (1,0,0,0,0,0,0)^\top$。
其中節點 0 的那條方程式是:
\[3v_0 - v_1 - v_2 - v_4 = 1\]節點 1(即坐標 $(0,0,1)$,B 型)的方程式是:
\[-v_0 + 3v_1 - v_3 - v_5 = 0\]這和第一篇手列的 KCL 完全一致——接地縮減法只是把同樣的物理方程式換了個矩陣的外衣。
方法二:Moore–Penrose 擬逆
接地法需要選定參考節點,而且每換一種連法就要重解一次線性方程組。有沒有更通用的方式?
答案是擬逆(pseudoinverse)——對奇異矩陣定義一種「廣義逆」,保留非零特徵值方向上的逆,忽略零空間。
擬逆的定義
設 $n\times n$ 對稱矩陣 $L$ 的特徵分解為
\[L = Q\Lambda Q^\top, \qquad Q = [\mathbf{q}_0,\ldots,\mathbf{q}_{n-1}], \quad \Lambda = \operatorname{diag}(\lambda_0,\ldots,\lambda_{n-1})\]其中 $Q$ 是正交矩陣($Q^\top Q = I$),$\lambda_k$ 依大小排列,$\lambda_0 = 0$ 對應零向量 $\mathbf{q}_0 = \mathbf{1}/\sqrt{n}$,其餘 $\lambda_k > 0$。
Moore–Penrose 擬逆 $L^+$ 定義為:把每個非零特徵值取倒數,零特徵值保留為零:
\[L^+ = Q\Lambda^+ Q^\top, \qquad (\Lambda^+)_{kk} = \begin{cases} 1/\lambda_k & \lambda_k \neq 0 \\ 0 & \lambda_k = 0 \end{cases}\]關鍵性質
\[LL^+ = L^+L = I - \frac{1}{n}\mathbf{1}\mathbf{1}^\top =: P_\perp \tag{2}\label{eq7:proj}\]$P_\perp$ 是「投影到 $\mathbf{1}$ 的正交補上」的投影矩陣。若 $\mathbf{x} \perp \mathbf{1}$(即 $\sum_i x_i = 0$),則 $P_\perp \mathbf{x} = \mathbf{x}$。
驗算式 $\eqref{eq7:proj}$:$LL^+ = (Q\Lambda Q^\top)(Q\Lambda^+ Q^\top) = Q\Lambda\Lambda^+ Q^\top$。對角矩陣 $\Lambda\Lambda^+$ 的 $(k,k)$ 元素為 $\lambda_k \cdot (1/\lambda_k) = 1$(若 $\lambda_k\neq0$)或 $0 \cdot 0 = 0$(若 $\lambda_k=0$)。所以 $\Lambda\Lambda^+ = \operatorname{diag}(0,1,1,\ldots,1)$,即 $I - \mathbf{e}_0\mathbf{e}_0^\top$(以特徵向量為基底)。轉換回原始基底:$Q(I - \mathbf{e}_0\mathbf{e}_0^\top)Q^\top = I - \mathbf{q}_0\mathbf{q}_0^\top = I - \frac{1}{n}\mathbf{1}\mathbf{1}^\top$。$\square$
為什麼 $L^+\mathbf{i}$ 是 $L\mathbf{v}=\mathbf{i}$ 的解?
有效電阻問題的電流向量是 $\mathbf{i} = I(\mathbf{e}_a - \mathbf{e}_b)$,它的分量總和為零:
\[\sum_k i_k = I(1 - 1) = 0 \implies \mathbf{i} \perp \mathbf{1}\]因此 $P_\perp\mathbf{i} = \mathbf{i}$,由式 $\eqref{eq7:proj}$:
\[L(L^+\mathbf{i}) = (LL^+)\mathbf{i} = P_\perp\mathbf{i} = \mathbf{i} \checkmark\]所以 $\mathbf{v}^* := L^+\mathbf{i}$ 確實是 $L\mathbf{v} = \mathbf{i}$ 的一個解,且是範數最小(即「零均值電位」)的那個解。
有效電阻的閉合公式
設 $\mathbf{v}^* = L^+(I\cdot\chi)$,其中 $\chi = \mathbf{e}_a - \mathbf{e}_b$:
\[v^*_a - v^*_b = (\mathbf{e}_a - \mathbf{e}_b)^\top \mathbf{v}^* = \chi^\top L^+(I\chi) = I\cdot\chi^\top L^+\chi\]因此:
\[\boxed{R_\text{eff}(a,b) = \frac{v_a - v_b}{I} = \chi^\top L^+\chi = (\mathbf{e}_a - \mathbf{e}_b)^\top L^+(\mathbf{e}_a - \mathbf{e}_b)}\]對正方體($L = \tilde{L}/R$),代入 $L^+ = R\tilde{L}^+$:
\[R_\text{eff}(a,b) = R\cdot(\mathbf{e}_a - \mathbf{e}_b)^\top \tilde{L}^+(\mathbf{e}_a - \mathbf{e}_b)\]這個公式不需要對稱性假設,也不需要逐種連法重列方程——有了 $\tilde{L}^+$,所有連法的答案都立即可讀。
Python 驗算
建立 $\tilde{L}$ 與擬逆
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
# 正方體節點 k ↔ 坐標 (k₂, k₁, k₀),k = 4k₂ + 2k₁ + k₀
n = 8
L = np.zeros((n, n))
for i in range(n):
for j in range(i + 1, n):
if (i ^ j) in (1, 2, 4): # 恰好一個位元不同 → 相鄰
L[i, j] = L[j, i] = -1.0
L[i, i] += 1.0
L[j, j] += 1.0
# Moore–Penrose 擬逆
L_plus = np.linalg.pinv(L)
兩種方法同時驗算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def r_eff_pinv(a: int, b: int) -> float:
"""擬逆法:R_eff = χᵀ L⁺ χ(以 R 為單位)"""
chi = np.zeros(n)
chi[a], chi[b] = 1.0, -1.0
return float(chi @ L_plus @ chi)
def r_eff_ground(a: int, b: int) -> float:
"""接地法:接地節點 b,注入電流 1 於節點 a"""
keep = [k for k in range(n) if k != b]
L_red = L[np.ix_(keep, keep)]
rhs = np.zeros(n - 1)
rhs[keep.index(a)] = 1.0
v = np.linalg.solve(L_red, rhs)
return float(v[keep.index(a)])
cases = [
(0, 7, "體對角線 0→7", "5/6"),
(0, 6, "面對角線 0→6", "3/4"),
(0, 4, "稜邊 0→4", "7/12"),
]
print(f"{'連法':<18} {'擬逆法':>9} {'接地法':>9} {'精確值':>8}")
print("-" * 52)
for a, b, name, exact in cases:
print(f"{name:<18} {r_eff_pinv(a,b):9.6f} "
f"{r_eff_ground(a,b):9.6f} {exact:>8}")
輸出結果:
1
2
3
4
5
連法 擬逆法 接地法 精確值
----------------------------------------------------
體對角線 0→7 0.833333 0.833333 5/6
面對角線 0→6 0.750000 0.750000 3/4
稜邊 0→4 0.583333 0.583333 7/12
兩種方法吻合,三種連法全部驗算正確。
全部 28 對節點
有了 r_eff_pinv,算出正方體全部 $\binom{8}{2} = 28$ 對節點的有效電阻只需幾行:
1
2
3
4
5
6
from itertools import combinations
for a, b in combinations(range(n), 2):
dist = bin(a ^ b).count('1') # 漢明距離 = 圖距離
r = r_eff_pinv(a, b)
print(f" {a}({a:03b})↔{b}({b:03b}) 圖距離={dist} R_eff={r:.6f} R")
觀察輸出後,有個美麗的規律:
| 圖距離(邊數) | $R_\text{eff}$ | 對數 |
|---|---|---|
| 1(稜邊) | $7R/12$ | 12 對 |
| 2(面對角線) | $3R/4$ | 12 對 |
| 3(體對角線) | $5R/6$ | 4 對 |
$R_\text{eff}$ 只依賴圖距離,與節點的具體位置無關。 這不是偶然:立方體圖是頂點遞移(vertex-transitive)的——對任意兩對圖距離相同的節點對 $(a,b)$ 和 $(a’,b’)$,存在圖自同構將前者送到後者,因此等效電阻必然相同。
正方體 Laplacian 的特徵譜
1
2
eigs = np.sort(np.linalg.eigvalsh(L))
print(eigs.astype(int)) # 輸出:[0 2 2 2 4 4 4 6]
正方體的組合 Laplacian $\tilde{L}$ 的特徵值恰好是:
\[\lambda = 0^{(\times1)},\quad 2^{(\times3)},\quad 4^{(\times3)},\quad 6^{(\times1)}\]這個整齊的結構源自正方體圖 $Q_3$(三維超立方體圖)的代數結構:$Q_3$ 是阿貝爾群 $(\mathbb{Z}_2)^3$ 的 Cayley 圖,其特徵值可由群的特徵標(characters)精確計算:
\[\lambda_{(a_1,a_2,a_3)} = \sum_{k=1}^{3}\bigl(1 - (-1)^{a_k}\bigr)\]其中 $(a_1,a_2,a_3) \in (\mathbb{Z}_2)^3$ 索引特徵標。代入可得:
- $(0,0,0)$:$\lambda = 0$(常數模式,零空間)
- $(1,0,0),(0,1,0),(0,0,1)$:$\lambda = 2$(三重縮並)
- $(1,1,0),(1,0,1),(0,1,1)$:$\lambda = 4$(三重縮並)
- $(1,1,1)$:$\lambda = 6$(最高頻模式)
由此,$\tilde{L}^+$ 的非零特徵值為 $1/2, 1/4, 1/6$(各三重、三重、一重)。有效電阻公式的谱分解寫成:
\[R_\text{eff}(a,b) = R \sum_{\lambda_k \neq 0} \frac{1}{\lambda_k}\left[\mathbf{q}_k^\top(\mathbf{e}_a - \mathbf{e}_b)\right]^2\]每一項都是「特徵模式 $\mathbf{q}k$ 對電流向量 $\mathbf{e}_a - \mathbf{e}_b$ 的投影的平方,除以特徵值」。特徵值越大,對應的模式對 $R\text{eff}$ 的貢獻越小——高頻模式(特徵值 6)對等效電阻影響最小。
小結
| 方法 | 適用場景 | 計算量 | 優點 |
|---|---|---|---|
| 手算 KCL + 對稱性(篇①③⑤) | 小電路 + 高對稱 | $O(k^3)$,$k\ll n$ | 直覺清晰 |
| 接地縮減法 | 單一連法 | $O(n^3)$(解線性系統) | 初學者易理解 |
| 擬逆法 | 多種連法、通用 | $O(n^3)$(一次預算) | 閉合公式,通用性強 |
三種方法在正確性上完全等價;擬逆法的優勢在於:只需計算一次 $L^+$,就能回答任意連法的有效電阻問題。
等效電阻的度量性質:$R_\text{eff}$ 是頂點集上的度量(metric):
- $R_\text{eff}(a,a)=0$
- $R_\text{eff}(a,b) = R_\text{eff}(b,a)$
- 三角不等式:$R_\text{eff}(a,c) \leq R_\text{eff}(a,b) + R_\text{eff}(b,c)$
更深刻的結果:$\sqrt{R_\text{eff}}$ 可以等距嵌入到希爾伯特空間(Hilbert space)中,這讓它在機器學習與圖聚類中有廣泛應用。
【系列待續】 前七篇都在研究有限電路。第八篇將把問題推向極限:一個無限延伸的三維立方晶格,任意兩個相鄰節點之間的等效電阻是多少?這需要一套完全不同的工具——格點格林函數。