01 / 入門
基礎原理
先に系の境界、仮定、単位、未知数を書きます。Solveは記号解、FindRootは初期値から数値根、NDSolveは微分方程式を積分して補間規則を返します。==は方程式、=は代入、組込み関数は大文字始まりです。古い定義を消してください。例はQuantityでなく明示した単位の数値を使うため、単位系を混ぜてはいけません。
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
| パラメータ | 値 | 単位 |
|---|---|---|
| f1 | 50 | kg/h |
| f2 | 50 | kg/h |
| t (X = 0.80) | 8.047189562 | min |
| CA (t = 10 min) | 0.2706705665 | mol/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は剛性やスケールに注意し、許容誤差を変えて比較します。数値解を解析指数解と照合し、パラメータと単位を記録します。コードは教育用で、設備の安全・運転モデルではありません。




コメント
承認済みのコメントはまだありません。
公開を許可しない場合、コメントはアカウント内に保存されます。
SMSでログインしてコメントしてください。