2. 自由基聚合转化率-时间曲线拟合与参数提取
为什么转化率-时间曲线值得拟合
丙烯酸树脂的自由基聚合在实验室或中试阶段通常用定时取样(称重法、GC 或 FTIR 跟踪残余单体)得到一组转化率-时间数据。原始数据点本身只能说明"快慢",而把数据拟合到动力学模型后,可以提取出两个对工艺判断最有价值的量:诱导期 tind(引发剂分解、杂质阻聚消耗自由基的滞后时间)和表观速率常数 kapp(在给定温度、引发剂浓度下综合反映引发与增长速率的常数)。这两个参数直接决定后续温度与引发剂用量的调整方向。
本例采用工程上最常用的简化处理:在低转化率区间(一般转化率 < 20%~30%,无明显凝胶效应、单体浓度近似恒定)把聚合视为准一级反应,转化率随时间的关系为
x(t) = 0 (t ≤ tind);x(t) = 1 − exp[−kapp·(t − tind)] (t > tind)
对 t > tind 的数据取 y = −ln(1 − x),则 y 与 (t − tind) 呈线性关系,斜率为 kapp。因此拟合分两步:先用线性化方法给出初值,再用最小二乘对原始 x-t 数据做非线性精修。
示例数据与拟合实现
下表是一组教学示例数据(假设值,用于演示方法,非实测结果):反应温度 80 °C,BPO 用量为单体质量的 0.8%,溶剂为醋酸丁酯,取样间隔 10 min。
| t / min | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
|---|---|---|---|---|---|---|---|---|---|---|
| x | 0.00 | 0.02 | 0.07 | 0.15 | 0.24 | 0.33 | 0.41 | 0.48 | 0.55 | 0.61 |
下面是一段可直接运行的 Python 代码,完成线性化初值估计与非线性精修,并输出拟合优度与参数:
import numpy as np
from scipy.optimize import curve_fit
t = np.array([0,10,20,30,40,50,60,70,80,90], dtype=float)
x = np.array([0.00,0.02,0.07,0.15,0.24,0.33,0.41,0.48,0.55,0.61])
# 1) 线性化初值:仅用 x 在 (0.05, 0.30) 之间的点,避开诱导期与高转化率区
mask = (x > 0.05) & (x < 0.30)
y = -np.log(1 - x[mask])
A = np.vstack([t[mask], np.ones(mask.sum())]).T
k0, b0 = np.linalg.lstsq(A, y, rcond=None)[0]
t_ind0 = -b0 / k0
print(f"线性化初值: k_app={k0:.5f} /min, t_ind={t_ind0:.2f} min")
# 2) 非线性精修:对原始 x-t 数据拟合分段模型
def model(t, k, t_ind):
dt = np.clip(t - t_ind, 0, None)
return 1 - np.exp(-k * dt)
popt, pcov = curve_fit(model, t, x, p0=[k0, t_ind0],
bounds=([1e-4, 0.0], [1.0, 30.0]))
k_fit, t_ind_fit = popt
perr = np.sqrt(np.diag(pcov))
x_pred = model(t, *popt)
ss_res = np.sum((x - x_pred)**2)
ss_tot = np.sum((x - x.mean())**2)
r2 = 1 - ss_res / ss_tot
print(f"k_app = {k_fit:.5f} ± {perr[0]:.5f} /min")
print(f"t_ind = {t_ind_fit:.2f} ± {perr[1]:.2f} min")
print(f"R^2 = {r2:.4f}")
按上述示例数据运行,预期输出量级为:kapp ≈ 0.012~0.014 min⁻¹,tind ≈ 8~12 min,R² > 0.995。若你的实际数据拟合出的 R² 明显低于 0.99,通常说明低转化率假设已不成立(进入凝胶效应区)或取样点过少,需要缩小拟合区间或改用带自加速项的模型。
拟合结果如何读成工艺判断
参数提取出来只是第一步,关键是把它翻译成反应阶段特征:
- 诱导期偏长(> 15 min):引发剂分解慢或体系含阻聚剂(如 MEHQ 未除净),表现为"投料后长时间不升温、不增稠"。可考虑提高引发剂用量或适当升温,但要与例 3 的半衰期匹配计算联动。
- kapp 偏小:在排除温度因素后,说明引发剂浓度不足或单体活性低,转化率爬升缓慢,批次周期被拉长。
- kapp 偏大且曲线后期上翘:低转化率模型开始失效,体系已进入凝胶效应区,放热会加速,需警惕飞温,这正是例 4 要处理的滴加速率问题。
- 残差呈系统性弯曲:不是随机误差,而是模型结构不匹配,应缩短拟合窗口到转化率 20% 以内重新拟合。
拟合窗口与验证要点
为了让提取出的参数真正可用,操作上要守住三条:
- 拟合窗口限定在低转化率区。示例中转化率超过 30% 后曲线开始上翘,这是凝胶效应(Trommsdorff 效应)导致 kapp 不再是常数。若把全部点一起拟合,kapp 会被系统性拉高,误导后续判断。建议只用 x < 0.25 的点。
- 诱导期用分段模型而非强行线性。直接把 t=0 的点纳入线性回归会让截距偏移,tind 被低估。代码中先用 (0.05, 0.30) 区间估初值,再对原始数据做带 tind 的分段非线性拟合,能同时得到两个参数及其标准误。
- 用残差和 R² 双重验证。R² > 0.995 且残差随机分布在零线两侧,才说明准一级假设成立;若残差呈 U 形或单调弯曲,说明模型结构不对,应缩短窗口或引入自加速项。