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で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 ↗
この記事について質問 ↗