01 / 入门

基本原理

先定义系统边界、假设、单位和未知量。Solve用于符号求解,FindRoot从初值寻找数值根,NDSolve积分微分方程并返回插值规则。==表示方程,=表示赋值,内置函数首字母大写。复用笔记本前清除旧定义。示例使用注明单位的数值而非Quantity对象,混用单位会改变模型。

CA 浓度 (mol/L)时间 t (min)CA = 2 exp(−0.2 t)t = 10; CA ≈ 0.271

02 / 应用

计算示例

质量分数0.20和0.50的两股物流混合,产出100 kg/h、分数0.35。总量和组分衡算得到各50 kg/h。独立的等温恒容一级间歇例中k = 0.20 min⁻¹,CA0 = 2 mol/L。FindRoot求exp(−kt)=0.20,NDSolve求0–20分钟浓度。独立解析计算给出t = 8.047189562 min,CA(10) = 0.2706705665 mol/L。数值已用独立算术核查,本文未实际执行Mathematica。

Mixer: F1 + F2 = Fout; F1 x1 + F2 x2 = Fout xout
Batch: dCA/dt = −k CA; CA(t) = CA0 exp(−kt)
CA(10 min) = 0.2706705665 mol/L; t80% = 8.047189562 min
参数数值单位
f150kg/h
f250kg/h
t (X = 0.80)8.047189562min
CA (t = 10 min)0.2706705665mol/L
ClearAll["Global`*"];
(* Flows: kg/h; mass fractions dimensionless *)
Solve[{f1 + f2 == 100, 0.20 f1 + 0.50 f2 == 35}, {f1, f2}]
(* k: 1/min; t: min; concentration: mol/L *)
k = 0.20; ca0 = 2.0;
FindRoot[Exp[-k t] == 0.20, {t, 8}]
sol = NDSolve[{ca'[t] == -k ca[t], ca[0] == ca0}, ca, {t, 0, 20}];
ca[10] /. First[sol]
Plot[Evaluate[ca[t] /. First[sol]], {t, 0, 20},
 AxesLabel -> {"t (min)", "CA (mol/L)"}, PlotRange -> All]

03 / 进阶

工程决策

检查方程残差、正流量、0–1转化率和质量守恒。非线性求根应尝试多个初值并看图,单次成功不能证明唯一性。热量与动力学耦合ODE可能有刚性和尺度问题,改变容差并比较结果。用解析指数解校核数值解,记录单位和参数。代码是教学示例,不是设备安全或操作模型。

参考资料

  1. Wolfram · Solve ↗
  2. Wolfram · FindRoot ↗
  3. Wolfram · NDSolve ↗
向助手询问本文 ↗