生成熱から反応エンタルピーを計算
生成熱の表から反応エンタルピーを直接求められます。二酸化炭素−393.5 kJ/mol、水−285.8、メタン−74.8を使うと、メタンの燃焼は−890.3 kJ/molです。重みつきの和が両辺とも表示されるので確認できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
標準反応エンタルピーとは、釣り合いの取れた化学方程式が標準状態で進行するときに定圧でやり取りされる熱量です。熱化学の表には、あり得るすべての反応が載っているわけではほとんどありません。代わりに純粋な化合物の標準生成エンタルピーが載っており、ヘスの法則によって、生成物側の生成エンタルピーの加重和から反応物側の加重和を引くことで反応の値が求まります。この計算機は、方程式の両側について化学量論係数と ΔH°_f の値を受け取り、生成物側と反応物側の中間和を ΔH°_rxn とともに返し、過程を発熱・吸熱・熱中立に分類します。空の配列や長さの不一致は明確なバリデーションエラーで失敗するため、不完全な宿題のデータがエンタルピー変化ゼロを装うことはありません。
生成熱から反応エンタルピーが導かれるしくみ
まず、すべての生成物と反応物の種に化学量論係数 ν を付けて釣り合わせた方程式から始めます。物質の標準生成エンタルピー ΔH°_f とは、その物質1モルが標準状態の単体から生成するときのエンタルピー変化です。
定義上、標準状態にある純粋な単体の ΔH°_f はゼロであり、そのため酸素ガス、黒鉛炭素、金属固体は、大きな係数で現れても反応物側で何も寄与しないことがよくあります。ヘスの法則とエンタルピーの状態関数性から、標準反応エンタルピーは生成物についての ν_p×ΔH°_f,p の和から、反応物についての ν_r×ΔH°_f,r の和を引いたものに等しくなります。
完全な生成表があれば、個々の結合エネルギーは必要ありません。まず生成物から計算します。各生成物の係数にその生成エンタルピーを掛け、それらの項を足し合わせます。
次に反応物についても同様に行います。生成物の合計から反応物の合計を引けば ΔH°_rxn が得られます。結果が負なら標準状態で発熱反応、正なら吸熱反応、数値的なゼロ(浮動小数点の許容誤差内)なら熱中立です。
単位はすべての生成値で統一する必要があり、通常はキロジュール毎モルですが、すべての項目が同じ系統ならジュール毎モルでも構いません。係数は釣り合いの取れた方程式に由来する無次元のモル数であり、エネルギーの単位を伴うべきではありません。
この計算機が行うのは算術とバリデーションだけであり、表を参照したり、方程式を代わりに釣り合わせたり、キロジュールとジュールを換算したりはしません。
生成ベースのエンタルピー計算機が実務で使われる場面
中等教育や大学の一般化学の講義では、表に載った生成熱から ΔH°_rxn を再構成するヘスの法則の練習問題が絶えず出題され、2つの中間和と最終的な差の両方を返す信頼できる唯一のオラクルがあれば、採点やデモの準備が速くなります。
プロセス工学の概算計算では、本格的なプロセスシミュレータを開くずっと前から生成表を使ってバーナー・改質器・スクラバーの熱負荷を見積もり、エンジニアには単一の数値を出力するだけのブラックボックスな熱力学パッケージではなく、ν×ΔH_f の透明な算術が求められます。
グリーンケミストリーや原子経済のモジュールでは、代替合成経路を比較する際に質量指標とエンタルピー指標を組み合わせることが多く、生成データによる手軽な反応エンタルピーの確認は収率や廃棄物の計算と並んで使われます。
一般的な気体や固体の標準生成表を掲載する実験マニュアルにとっては、列の貼り忘れでゼロを黙って返して学生を混乱させるのではなく、空の生成物リストや反応物リストを拒否する計算機が有益です。
後でエンタルピー・エントロピー・温度からギブズ自由エネルギーを求めたり、結合エネルギーの推定や、温度間で熱容量を積分したエンタルピー変化が必要になった場合は、この生成熱計算ページに詰め込まず、別の検索意図とランディングページとして扱ってください。
活用例
宿題・試験の解答キー
教科書のヘスの法則の問題について ΔH°_rxn と生成物・反応物の生成和を生成し、教師と自動採点が生成ルートによる同一の基準を共有できるようにします。
燃焼・合成の熱負荷
表に載った ΔH°_f の値と化学量論係数から、釣り合いの取れた燃焼・水素化・アンモニア型合成の標準的な熱の放出または吸収を見積もります。
よくある質問
この計算機はどの式を使いますか?
標準反応エンタルピーは ΔH°_rxn = Σ ν_p ΔH°_f,p − Σ ν_r ΔH°_f,r で、生成物と反応物の化学量論係数と標準生成エンタルピーを用います。
生成物または反応物の配列が空の場合はどうなりますか?
生成熱からの反応エンタルピーには、生成物の項目と反応物の項目がそれぞれ少なくとも1つ必要です。空の配列はゼロとして扱わず拒否されます。
単体の反応物にも生成値は必要ですか?
はい。 標準状態の純粋な単体(例: O2、N2、黒鉛 C)には 0 を入力してください。係数はそのゼロにも掛かり、化学量論が明示的に保たれます。
単位はどう選ぶべきですか?
すべての ΔH°_f の項目を同じエネルギー毎モルの系統(通常は kJ/mol)に揃えてください。この計算機は単位換算を行いません。不整合な混在は、数値的には誤りだが次元上は黙ったままの結果を生みます。
料金はいくらですか?
ブラウザのツールは無料でローカルに動作します。無効な入力は課金されません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/chem/enthalpy-from-formation \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"product_coeffs":[1,2],"product_delta_hf":[-393.5,-285.8],"reactant_coeffs":[1,2],"reactant_delta_hf":[-74.8,0]}'const res = await fetch("https://api.kit.forhosting.com/chem/enthalpy-from-formation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"product_coeffs": [
1,
2
],
"product_delta_hf": [
-393.5,
-285.8
],
"reactant_coeffs": [
1,
2
],
"reactant_delta_hf": [
-74.8,
0
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/chem/enthalpy-from-formation",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"product_coeffs": [
1,
2
],
"product_delta_hf": [
-393.5,
-285.8
],
"reactant_coeffs": [
1,
2
],
"reactant_delta_hf": [
-74.8,
0
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/chem/enthalpy-from-formation", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"product_coeffs":[1,2],"product_delta_hf":[-393.5,-285.8],"reactant_coeffs":[1,2],"reactant_delta_hf":[-74.8,0]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"product_coeffs":[1,2],"product_delta_hf":[-393.5,-285.8],"reactant_coeffs":[1,2],"reactant_delta_hf":[-74.8,0]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/chem/enthalpy-from-formation", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"product_coeffs": [
1,
2
],
"product_delta_hf": [
-393.5,
-285.8
],
"reactant_coeffs": [
1,
2
],
"reactant_delta_hf": [
-74.8,
0
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "chem.enthalpy_from_formation",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
生成熱から反応エンタルピーが導かれるしくみ
パイプラインは乱数シード・時刻情報・ネットワーク呼び出しのない決定的な浮動小数点演算なので、同一の係数配列と生成配列からは常に同一のJSONが生成されます。
送信するものと返ってくるもの
各側は長さが一致している必要があり、各係数には対応する生成値が必要です。教科書の定番の確認例としては、二酸化炭素と水の生成値をメタンと単体の酸素に対して用いるメタン燃焼、水素と酸素からの水の合成、窒素と水素からのアンモニア生成があります。バリデーションの失敗はプリペイド残高を消費しません。送信するのは4つのフィールドです。product_coeffs は生成物についての有限で非負の化学量論係数からなる空でない配列、またはその配列のJSON文字列です。product_delta_hf は同じ生成物について同じ順序の有限な標準生成エンタルピーからなる空でない配列です。reactant_coeffs と reactant_delta_hf は反応物側で同様の役割を果たします。4つのフィールドはすべて必須です。フィールドの欠落、空の配列、非数値の文字列、NaN、Infinity、負の係数、片側64項目を超える過大な種のリスト、長さの不一致は invalid_input で失敗し、課金されません。成功時には、応答は整形済みの係数配列と生成配列をそのまま返し、n_products と n_reactants を報告し、sum_products と sum_reactants を2つの中間加重和として返し、delta_h_rxn をその差として報告します。thermal フィールドは符号を発熱・吸熱・熱中立に分類します。成功したAPI呼び出しの料金は公表されている基本額で1項目あたり$0.002です。
生成ベースのエンタルピー計算機が実務で使われる場面
この機能は純粋な parse エンジンであるため、API料金は公表の基本額で成功1項目あたり$0.002であり、バリデーション失敗は残高を消費しません。
連携の活用例
経路比較用の fixture
同じ生成物セットを持つ代替の釣り合い済み経路を一括比較し、空または不整合の生成配列を、暗黙のゼロではなく厳格な invalid_input で検出します。