Excelソルバー

ソルバーで高校の化学平衡の問題を解いてみる

Excelソルバー

[PR]当サイトはアフィリエイト広告を利用しています。

はじめに

今回は久しぶりにソルバーネタ。

高校の化学平衡の話に出てくる計算をします。

ソルバーの練習です。

問題

次のような問題を解きます。

酢酸6.0molとエタノール3.0mol、触媒として硫酸を少量混合し、25℃に保って振った。

平衡状態に達したとき、混合溶液中の酢酸エチルの物質量は何molか。

25℃におけるこの反応の平衡定数はK=4.0とし、反応中に液体の体積は変化しないものとする。

解:

この反応は次のように書ける。(入試レベルの完璧な書き方ではなく、概要をわかるように書いているだけですので注意)

CH3COOH + C2H5OH ⇄ CH3COOC2H5 + H2O

反応前はそれぞれ、

6.0, 3.0, 0, 0 [mol]

平衡時はそれぞれ

6.0-x, 3.0-x, x, x [mol]

混合溶液中の酢酸エチルの物質量をx[mol]とする。

混合溶液の体積をVとすると、

K=([CH3COOC2H5][H2O])/([CH3COOH][ C2H5OH])

=(x/V)2/(((6.0-x)/V)((3.0-x)/V))

=4.0

この式から

x≒9.5, 2.5 x<3より、x=2.5[mol]

ソルバーで求める

これをソルバーで求めてみます。

まずxの式を整理します。

K=x*x/((6.0-x)(3.0-x))

となります。

適当にセルにxとKの式を入力します。

D4:=C4C4/((6-C4)(3-C4))

C4は0にしておきます。

ソルバーの設定をしていきます。

目的セル:D4

目標値:指定値 4

変数セル:C4

制約条件:C4<=2.9999、C4>=0

解決方法:GRG非線形

Kは4なので目標値は4です。

制約条件がC4<=3とならないのは、C4<=3とすると、Kの式の分母が0になる(C4=3のとき)場合があって、そのときにソルバーが途中で止まってしまうからです。

GRG非線形なのは、xの一次式ではないこと(つまり線形ではないので線形計画法が使えない)、xは連続変数であることから選択しました。

解決すると

C4=2.535898377

となりました。

ゴールシークでも解決できる

変数セルが一つなのでゴールシークでも解が求まります。

このようにセットして解決すると

C4=2.535856554

と出ます。

ただしゴールシークはC4の初期値からアルゴリズムを走らせるので

C4=10とかで始めると

C4=9.464293876

と出ます。

こういうときは初期値を0から始めれば、小さい方の解を出すので、変数の下限から始めたほうがいいです。

エボリューショナリー以外の解法は、初期点から、関数の勾配(微分してプラスかマイナスか)を頼りに進んでいきます。

よくわからないときは、色々な初期点で求めてみて、変数の範囲に入る値を決めるというアプローチもあります。

変数の範囲をよく確認してから走らせましょう。

ちなみにソルバーの場合は

C4<=2.9999

としておけばC4の初期値が10でも求めたい解が出ます。

変数の範囲を最初の設定段階で明確にしておくのが大事ですね。

まとめ

今回はソルバーの練習で化学平衡の問題を扱いました。

二次方程式を式展開するの面倒なら、ソルバーを使ってみてもいいかもしれませんね。

式の形だけ入力すれば解が出ますから。

当ブログ(シルルスのコードおきば)ではエクセルソルバー関係の記事を他にも執筆しています。参考になりましたら幸いです。

●エクセルソルバーで複数解を求める方法【初期値を変えるしかないです】

●エクセルソルバーと組み合わせ最適化問題【解法例と基礎知識】

●エクセルソルバーとは【使い方と数理最適化の基礎】

●輪作作物をソルバーで決定

●Calcのソルバーでどこまでできるか実験

●巡回セールスマン問題をソルバーで解く

●Support Vector Regressionをエクセルのソルバーで作ってみた

●移動販売をどこに出店するかソルバーで求める

●ソルバーで正規分布の90%範囲を求める

●ソルバーとユーザー定義関数の連携