▼ [おさらい] 反応速度の温度依存性
化学反応の速度は、温度への依存性が高く、素反応の反応速度の温度依存性は次の Arrhenius の式で表現できることが知られています。
| k = k0 exp(-E/RT) | (1) |
ここで、k は反応速度定数、k0 は頻度因子(frequency factor)、E は活性化エネルギー(activation energy)、R は気体定数(8.314 J mol-1 K-1)、T は温度(K)です。
この式は、両辺の対数をとると
| lnk = lnk0 -E/RT | (2) |
と変形できます。つまり、反応速度定数の対数と温度の逆数が比例する(≒直線で結ばれる)関係として表現できることが分かります。同時に、活性化エネルギー Eは傾き -E/R に含まれるので簡単に求められることもわかります。では次に、IGOR Pro を使って、サンプルデータをアレニウスプロットで表現することで活性化エネルギーを求めてみましょう。
▼ サンプルデータ
今回用いるサンプルデータは、参考書籍1に掲載されていたものです。CH3CHO(アセトアルデヒド)の熱分解反応の反応速度定数 k を反応温度を変えて測定したもの(だそう)です。
Table1 CH3CHO の反応速度
| T [°C] | 457 | 517 | 567 | 637 |
|---|---|---|---|---|
| k [m3/2 mol -1/2 s-1] | 35.0 | 347 | 2.17x103 | 2.00x104 |
IGOR Pro にこのデータを入力し、プロットしてみます(Fig.1)。確かに、温度とともに指数関数的に反応速度定数は増加しています。
Fig.1 反応速度と温度の関係
次に、式2 にしたがって、対数変換したのちに、1/T を X 軸、lnk を Y 軸にプロットしてみます。データを変換する必要がありますので、温度データのウェーブ名(Temp)、反応速度データのウェーブ名(k)とすると、コマンドラインで
//Temp を invTemp に複製
duplicate Temp, invTemp
//T を換算
invTemp = 1000/Temp
//k を lnk に複製
duplicate k, lnk
//k を換算
lnk = ln(k)とやっておきます。変換前後のウェーブをテーブルに表示するとこんな感じになります(Fig.2)。
Fig.2 変換前後のウェーブ
変換後のウェーブをプロットすると Fig.3 のようになり、いわゆるアレニウスプロットが得られます。きれいな直線に乗っていることが分かります。
Fig.3 対数変換後のウェーブのプロット
▼ フィッティング
いよいよフィッティングです。元の関数は非線形でしたので、非線形関数のカーブフィッティングが必要でしたが、変換後は直線でフィッティング可能です。。
Fig.3 のグラフを最前面に表示して、解析メニュー>回帰分析 を選択します。関数とデータのタブの関数のリストで line、Y データのリストで lnk、X データのリストで invTemp を選んで実行ボタンをクリック!とても簡単にきれいな直線が描かれます(Fig.4)。
Fig.4 フィッティング結果
a = 35.658 ± 0.523
b = -23.484 ± 0.424
で、用いた関数 line は y = a + bx ですので、Y 切片が 35.658、傾きが -23.484 に対応します。このように、IGOR Pro では、フィッティングパラメータは、推計値 ± 誤差 の形で得られますが、推計値は W_Coef というウェーブ、誤差は W_Sigma というウェーブにそれぞれ保存されます。
さて、式2 より 傾き = -E/R で、気体定数 R は 8.314 J mol-1 K-1 ですので ∴E = 23.484*R = 195.25 [kJ mol-1]と、めでたくそれらしい活性化エネルギーが得られました。
▼ もう一歩
アレニウスプロットは慣例的に横軸を 1000/T とするので、慣れないと実際の温度 T との対応がいまいちよくわかりません。ひと工夫して上側の横軸を温度 T で表示するとわかりやすいかもしれません。
今、下側の横軸(名称:bottom)は、1.05~1.40 まで 0.05 刻みで描かれています。これに対応する上側の横軸(名称:top)を表示してみます。当然、互いに逆数の関係になりますので、bottom が線形なら、top は線形にはならず、同じ位置に表示できる top の目盛り切れのよい数字にはなりません。そのため、目盛りは自動的に表示させずにユーザ定義目盛りで対応する必要があります。ポイントは、
- 同じプロットを見えないように重ねる
- 軸の範囲をそろえる
- ユーザ定義目盛りを表示させる
まず、同じプロットを top 軸に再度プロットします。プロットを最前面に表示して、グラフメニュー>グラフにトレースを追加 を選択します。X データには invTemp、Y データには lnk を選択し、X 軸のリストで top を選んで実行をクリックします。
環境設定がオフであれば、デフォルトの赤の折れ線グラフが描かれます。このプロットの表示は不要ですので、グラフメニュー > トレースアピアランスの修正 を開いて、線の太さを 0 にします。これでグラフ内のプロットに影響を与えずに、top 軸の設定が可能になります。
次に軸範囲を揃えます。もし bottom 軸の設定で軸範囲を変更していたら、top 軸の設定を bottom 軸の設定に合わせてください。こうしないと目盛りの位置がずれてしまうことがあります。
さて、次にユーザ定義の目盛りを表示させます。ユーザ定義目盛りを表示するには
- 目盛りの位置を指定する数値ウェーブ(tick_loc)
- 目盛りに表示する文字を指定するテキストウェーブ(tick_label)
が必要です。例では、1.05~1.40 まで 0.05 刻みで bottom 軸が表示されていますので、位置を指定する 8 ポイントの数値ウェーブ(tick_loc)を作成します。(以下ではコマンドで作成していますが、テーブルを開いて、数値を8個入力しても、もちろん OK です。)
Make/o/n=8 tick_loc={1.05,1.1,1.15,1.2,1.25,1.3,1.35,1.4}次に、目盛りの文字を指定するテキストウェーブ(tick_label)を作成します。たとえば、1.05 の X 位置のラベルは、1000/1.05 ≒ 952 などとなります。
Make/t/o/n=8 tick_label={"952","909","870","833","800","769","741","714"}このように、数値をテキストウェーブの値として与えるには、「"」(二重引用符、ダブルクォーテーション)で値の前後を囲って、文字であることを明示する必要があります。作成したユーザ定義目盛り用のウェーブは Fig.5 のようになります。
Fig.5 ユーザ定義目盛りに使うウェーブ(tick_label はテキストウェーブ)
この二つのウェーブを作成すれば、あとは、後は top 軸に指定するだけです。まず、 グラフメニュー > 軸を修正 を選択し、左上の軸のリストで top を選択し、 自動/手動目盛りタブ を開きます。
左側のリストから ウェーブのユーザ目盛り を選択し、右側の ユーザウェーブ目盛り の ラベル と 位置 のリストで、先ほど作成した、 tick_label と tick_loc をそれぞれ選択して実行ボタンをクリックします。top 軸に温度 T の目盛りを表示することが出来ました(Fig.6)。
Fig.6 ユーザ定義目盛りの表示
▼ まとめ
今回は、IGOR Pro を使って、Arrhenius Plot から活性化エネルギーを求めてみました。対数変換すると y = a + bx で表示できる系なので、フィッティングで簡単に活性化エネルギーを求めることが出来ます。このように、対数変換すると直線で表現することができ、その直線の傾きや切片から何かを計算するというやり方は、多くの分野で見られるアプローチです。
また、top 軸に 温度 T の軸目盛りに表示させました。bottom 軸の温度の逆数 1/T の読み値とグリッド線を生かすため、top 軸には敢えて中途半端な目盛りを表示させることにして、ユーザ定義目盛りの機能を利用しました。
ユーザ定義目盛りを使うには、目盛りの位置を与える数値ウェーブと、目盛りに表示するテキストを与えるテキストウェーブが必要で、同じポイント数である必要があります。目盛りとして表示するテキストを「テキストウェーブ」として用意することがポイントだったと思います。
井上@技術開発部でした。
参考書籍:
1) 橋本健治 著 (1998) 「反応工学」 培風館
2) 慶伊富長 著 (2004) 「反応速度論 第3版」 東京化学同人


