06.1 反應速率方程:一級、二級與複雜反應的微分方程解#
1. 從熱力學到動力學:換一組變數#
第五章問「反應會不會發生」,本章問「反應多快發生」。兩者用同一個變數——反應進度 \(\xi\) ,但把 \(\xi\) 升級為時間的函數 \(\xi(t)\) :
定義(反應速率):對 \(0=\sum_i \nu_i A_i\) , $\(r = \frac{1}{V}\frac{d\xi}{dt} = -\frac{1}{\nu_i}\frac{d[A_i]}{dt}\)$ ( \(\nu_i\) 對反應物為負,故 \(-\nu_i > 0\) 時速率為正。)
速率定律(rate law)是一個假設性的微分方程:
級數 \(m+n\) 不必然等於計量係數——1860 年代 Harcourt 與 Esson 研究高錳酸鉀與草酸反應時首次用微積分擬合濃度-時間數據,開創了化學動力學;1884 年 van 't Hoff 才把級數與計量式分開,指出這是實驗問題而非代數問題。
2. 一級反應:指數衰減#
設 \(A \to P\) 一級反應:
分離變數積分:
半衰期 \(t_{1/2} = \frac{\ln 2}{k}\) 與初濃度無關——這是指數過程的標誌,放射性定年、藥物動力學(一級消除)、化學發光衰減全用它。歷史注腳:放射性衰變定律由 Rutherford 與 Soddy 在 1902–1903 年以一級動力學的形式寫下,成為原子蛻變理論的核心證據。
線性化判別法: \(\ln[A] = \ln[A]_0 - kt\) ,對 \(\ln[A]\) – \(t\) 作圖,直線即一級。這是計算機普及前的標準分析法,也是「數據線性化」思想在化學中的經典應用。
3. 二級反應:有理函數的時間行為#
(甲) \(2A \to P\) : \(-\frac{d[A]}{dt} = k[A]^2\)
半衰期 \(t_{1/2} = \frac{1}{k[A]_0}\) ,與初濃度成反比。 \([A]\) 對 \(t\) 的曲線在尾端有一條「長尾巴」——衰減慢得多,這與一級反應的行為截然不同,正是實驗上判別級數的手感。
(乙) \(A + B \to P\) ,初濃度不等:部分分式積分
4. 零級與 \(n\) 級的統一公式#
\(n\) 級反應( \(n \neq 1\) )有統一積分式:
| 級數 | 速率式 | 濃度-時間 | \(t_{1/2}\) |
|---|---|---|---|
| 0 | \(k\) | \([A]_0 - kt\) | \([A]_0/2k\) |
| 1 | \(k[A]\) | \([A]_0e^{-kt}\) | \(\ln 2/k\) |
| 2 | \(k[A]^2\) | \(\frac{[A]_0}{1+[A]_0kt}\) | \(1/(k[A]_0)\) |
| \(n\) | \(k[A]^n\) | 上式 | 與 \([A]_0^{\,1-n}\) 成正比 |
半衰期法:測不同 \([A]_0\) 的 \(t_{1/2}\) , \(t_{1/2} \propto [A]_0^{1-n}\) ,兩邊取對數得 \(n\) 。這是 19 世紀末已標準化的實驗設計。
5. 可逆反應:逼近平衡的指數過程#
\(A \rightleftharpoons B\) ,速率常數 \(k_1, k_{-1}\) :
解為
深刻之處:趨近平衡的弛豫時間 \(\tau = 1/(k_1+k_{-1})\) 由正逆速率常數「相加」決定,而平衡位置由「相除」 \(K = k_1/k_{-1}\) 決定。這就是細緻平衡原理(detailed balance):熱力學(第五章的 \(K\) )與動力學(本章的 \(k\) )由這條關係鎖在一起。1921 年 Wegscheider 證明:若每個基元反應的正逆比值不滿足 \(K\) ,可以造出永動機——熱力學第二定律在動力學上強加了環路條件。
6. 連續反應 \(A \to B \to C\) :鏈鎖法則的盛宴#
第一條解出 \([A] = [A]_0 e^{-k_1 t}\) ,代入第二條得一階線性 ODE,用積分因子解:
\([B]\) 先升後降,有一個極大值:令 \(d[B]/dt = 0\) 得
化學實例:放射性衰變鏈(鈾→鐳→氡…)正是這組方程;工業上連續硝化、酯化-皂化序列也屬此型。中間產物 \(B\) 的極大值何時出現、多大,決定了「何時出料」的工程決策。
7. 數值實驗:一級、二級與連續反應的模擬#
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
# ---- 一級 vs 二級:同樣半衰期的形狀對比 ----
k1, A0 = 0.1, 1.0 # 一級
k2 = k1 / A0 # 讓初半衰期相同
t = np.linspace(0, 60, 600)
A_1st = A0 * np.exp(-k1 * t)
A_2nd = A0 / (1 + A0 * k2 * t)
plt.figure(figsize=(7, 4.5))
plt.plot(t, A_1st, label="一級 $A_0e^{-kt}$")
plt.plot(t, A_2nd, "--", label="二級 $A_0/(1+A_0kt)$")
plt.axhline(A0 / 2, color="gray", lw=0.8)
plt.xlabel("t"); plt.ylabel("[A]")
plt.legend(); plt.grid(alpha=0.3)
plt.title("一級與二級反應的濃度-時間曲線")
# ---- 連續反應 A -> B -> C 用 ODE 求解器 ----
def chain(t, y, k1, k2):
A, B, C = y
return [-k1 * A, k1 * A - k2 * B, k2 * B]
sol = solve_ivp(chain, [0, 40], [1.0, 0, 0],
t_eval=np.linspace(0, 40, 400), args=(0.3, 0.1))
plt.figure(figsize=(7, 4.5))
for i, lab in enumerate(["A", "B", "C"]):
plt.plot(sol.t, sol.y[i], label=lab)
plt.xlabel("t"); plt.ylabel("濃度")
plt.legend(); plt.grid(alpha=0.3)
plt.title("連續反應 A → B → C(k₁=0.3, k₂=0.1)")
# 解析 t_max 驗證
k1v, k2v = 0.3, 0.1
tmax = np.log(k2v / k1v) / (k2v - k1v)
print(f"解析 t_max = {tmax:.3f}")
i = np.argmax(sol.y[1])
print(f"數值 t_max = {sol.t[i]:.3f}, [B]_max = {sol.y[1][i]:.3f}")
plt.show()
數值極大值位置與解析式 \(t_{\max} = \ln(k_2/k_1)/(k_2-k_1)\) 吻合——這是「先求導、令導數為零」這套微積分流程在動力學中的直接應用。
8. 零級反應與級數的測定方法匯總#
零級反應 \([A] = [A]_0 - kt\) 常見於表面催化(活性位飽和)與光化學(光強恆定時,速率由光子通量決定而非濃度)。特徵:濃度對 \(t\) 作圖是直線,且反應在 \(t = [A]_0/k\) 時「突然」結束。
判別級數的三大實驗策略:
- 積分法:分別以 \([A]\) 、 \(\ln[A]\) 、 \(1/[A]\) 對 \(t\) 作圖,最直者勝。缺點: \(n \ge 3\) 時需要 \(1/[A]^2\) 等越來越敏感的作圖,且很難區分 1.5 級。
- 半衰期法:改變 \([A]_0\) ,看 \(t_{1/2}\) 怎麼變。 \(\log t_{1/2} = (1-n)\log[A]_0 + \text{const}\) ,斜率給 \(1-n\) 。
- 初速率法:只測 \(t \approx 0\) 的小段斜率 \(r_0\) ,系統地改變初濃度做隔離法(flooding:令 \([B] \gg [A]\) 則準一級)。這是現代標準方法,因為它避開了副反應與逆反應的干擾。
例題:丙酮鹵化 \(\mathrm{CH_3COCH_3 + Br_2 \to CH_3COCH_2Br + HBr}\) 的速率式是 \(r = k[\text{acetone}][\mathrm{H^+}]\) ,與 \([\mathrm{Br_2}]\) 無關——儘管溴出現在計量式裡。原因是決速步是酸催化的烯醇化,溴在後續快步驟才登場。這個經典例子告誡我們:速率式是機理的指紋,不是計量式的鏡像。
9. 章末小結#
- 速率定律是指數不一定等於計量係數的假設性 ODE;級數由實驗(半衰期法、線性化作圖、初速率法)決定。
- 一級 → 指數衰變、半衰期恆定;二級 → \(1/[A]\) 線性、半衰期反比於初濃度。
- 可逆反應的弛豫時間 \(\tau = 1/(k_1+k_{-1})\) 與細緻平衡 \(K = k_1/k_{-1}\) 把熱力學與動力學鎖在一起。
- 連續反應的 \([B](t)\) 有解析極大值 \(t_{\max} = \ln(k_2/k_1)/(k_2-k_1)\) ,由微積分直接求出。
- 一旦機理複雜(多步、多中間物),解析解往往不存在——這催生了下一節的「穩態近似」。
下一步#
速率常數 \(k\) 為什麼隨溫度劇變?1889 年 Arrhenius 給出 \(k = Ae^{-E_a/RT}\) ——下一節 06.2 我們把這條式子放到 \(\ln k\) – \(1/T\) 座標上看它的幾何意義,用直線的斜率與截距測量分子世界的能量尺度,並與分子碰撞理論、過渡狀態理論互相印證。