002_leastsquare.mw

実測データの近似

イントロダクション

エタノールと水の混合液について考えましょう。 この混合液の 平衡点 および 沸点 についてのデータが得られます。単純な関数で、このデータを近似できます。これらの関数は蒸留のシミュレーションに必要です。

> restart;

データ

測定された沸点温度はリスト Temp に、液相のエタノールの mol 分率は リスト Ml に、蒸気相のエタノールの mol 分率がリスト Mv に保存されます。

> Temp := [100, 95.5, 89.0, 86.7, 85.3, 84.1, 82.7, 82.3, 81.5, 80.7, 79.8, 79.7, 79.3, 78.74, 78.41, 78.15];
Ml := [.0, .0190, .0721, .0966, .1238, .1661, .2337, .2608, .3273, .3965, .5079, .5198, .5732, .6763, .7472, .8943];
Mv := [.0, .1700, .3891, .4375, .4704, .5089, .5445, .5580, .5826, .6122, .6564, .6599, .6841, .7385, .7815, .8943];

Temp := [100, 95.5, 89.0, 86.7, 85.3, 84.1, 82.7, 82.3, 81.5, 80.7, 79.8, 79.7, 79.3, 78.74, 78.41, 78.15]

Ml := [0., 0.190e-1, 0.721e-1, 0.966e-1, .1238, .1661, .2337, .2608, .3273, .3965, .5079, .5198, .5732, .6763, .7472, .8943]

Mv := [0., .1700, .3891, .4375, .4704, .5089, .5445, .5580, .5826, .6122, .6564, .6599, .6841, .7385, .7815, .8943]

解決方法

解を決定するために、stats (統計) パッケージの fit コマンドを使用します。以下に続くケースでは、指数関数と線形関数を使用します。

> with(stats):

液体の沸点について近似を計算します。

> Tf:=unapply(op(2,fit[leastsquare[[x,y], y=a*exp(-14*x)+b*x+c,{a,b,c}]]( [Ml,Temp])),x);

Tf := proc (x) options operator, arrow; 16.50979463*exp(-14*x)-6.385934628*x+83.27831100 end proc

データと近似結果を比較します。

> pl1 := plot([Tf(x)], x = 0 .. 1, axes = boxed, color = [green], labels = ["Mol fraction of ethanol in liquid phase", "Temp. °C"], title = "Boiling Curve"):
pl2 := plot([seq([Ml[i], Temp[i]], i = 1 .. nops(Ml))], style = point, symbol = circle, color = red):
plots[display]([pl1, pl2]);

[Plot]

平衡点について近似を計算します。

> K:=unapply(op(2,fit[leastsquare[[x,y], y=a*exp(-25*x)+b*x+c,{a,b,c}]]([Ml,Mv])),x);

K := proc (x) options operator, arrow; -.4244747056*exp(-25*x)+.4830909531*x+.4249877048 end proc

データと近似結果を比較します。

> pl1:=plot([x,K(x)], x=0..1, 0..1,
      axes=boxed, color=[black,green],
      labels=["Mol fraction of ethanol in liquid phase",
      "Mol fraction of ethanol in vapor phase"],
      title=" Equilibrium Curve" ):
pl2:=plot([seq([Ml[i], Mv[i]], i=1..nops(Ml))],
      style=point, symbol=circle, color=red):
plots[display]([pl1,pl2]);

[Plot]

結論

Maple を使って、液相のエタノールのモル分率に対する、混合液の沸点を表すシンプルな関数と、蒸留相のエタノールのモル分率を表すシンプルな関数を見つける事ができます。これらの関数によりエタノールと水の蒸留による分離をシミュレーションすることができます。

参考文献

Perry´s Chemical Engineers´ Handbook, Robert H. Perry and Don Green, sixth edition, McGraw Hill.