✅ 熱力学第一法則とマイヤーの関係式
● 熱力学第一法則(第1法則):
$$
\Delta U = Q - W
$$
● 状態A→B(等圧変化):
- 吸熱量:$Q_{AB} = nC_P(T_1 - T_0)$
- 仕事:$W_{AB} = \int_{V_0}^{V_1} P,dV = nR(T_1 - T_0)$
- よって内部エネルギー変化:
$$
\Delta U = Q - W = n(C_P - R)(T_1 - T_0)
$$
● 状態A→C(等体積変化):
- 吸熱量 = 内部エネルギー変化:
$$
Q_{AC} = \Delta U = nC_V(T_1 - T_0)
$$
→ 両方から:
$$
n(C_P - R)(T_1 - T_0) = nC_V(T_1 - T_0)
\quad \Rightarrow \quad
C_P = C_V + R
$$
✅ これはマイヤーの関係式
✅微小断熱変化に対する近似
● 熱力学第1法則(微小断熱):
$$
0 = nC_V \Delta T + P \Delta V \tag{①}
$$
● 状態方程式(PV=nRT)差分展開:
$$
(P + \Delta P)(V + \Delta V) = nR(T + \Delta T) \tag{③}
$$
→ テイラー展開と近似により:
$$
\frac{\Delta V}{V} = -\frac{C_V}{R} \cdot \frac{\Delta T}{T}, \quad \gamma = \frac{C_P}{C_V}
$$
最終的に、仕事・熱・状態変数の関係から:
$$
\frac{\Delta P}{P} = -\gamma \frac{\Delta V}{V} \quad \text{(断熱条件)} \tag{⑤}
$$
→ ポアソンの関係式につながる
✅ ピストンの運動と熱力学結合
- 力の釣り合い:$P S = Mg$
- ピストン運動(単振動方程式):
$$
M \frac{d^2x}{dt^2} = -\gamma \frac{Mg}{L}x
$$
→ 周期:
$$
\tau = 2\pi \sqrt{\frac{L}{\gamma g}}
$$
✅ ポアソンの式の導出(積分)
断熱変化の微分式:
$$
\frac{dP}{P} = -\gamma \frac{dV}{V}
\Rightarrow
PV^\gamma = \text{const.}
$$
さらに状態方程式を使えば:
$$
TV^{\gamma - 1} = \text{const.}
$$
# Program Name: thermodynamics_poisson.py
# Creation Date: 20250727
# Overview: Thermodynamics first law, Mayer's relation, adiabatic relations and piston oscillation period.
# Usage: Run to calculate and plot thermodynamic quantities under adiabatic process assumptions.
!pip install numpy matplotlib
import numpy as np
import matplotlib.pyplot as plt
# --- パラメータ定義(Parameters) ---
n = 1.0 # mol数 [mol]
R = 8.314 # 気体定数 [J/mol·K]
Cv = 20.8 # 定積モル比熱(例:1原子分子)[J/mol·K]
Cp = Cv + R # マイヤーの関係による定圧比熱
gamma = Cp / Cv # 比熱比 γ
T0 = 300 # 初期温度 [K]
V0 = 0.01 # 初期体積 [m^3]
P0 = n * R * T0 / V0 # 初期圧力 [Pa]
# --- ΔV変化に対する断熱変化 (Adiabatic Process) ---
dV_frac = np.linspace(-0.05, 0.05, 100) # ΔV/Vの比率
V = V0 * (1 + dV_frac)
P = P0 * (V0 / V) ** gamma # PV^γ = const.
T = T0 * (V0 / V) ** (gamma - 1) # TV^{γ−1} = const.
# --- ピストン単振動の周期計算(Piston Oscillation) ---
M = 1.0 # ピストン質量 [kg]
L = 0.5 # 有効長さ [m]
g = 9.81 # 重力加速度 [m/s^2]
tau = 2 * np.pi * np.sqrt(L / (gamma * g)) # 周期 [s]
# --- プロット(Plotting) ---
plt.figure(figsize=(6, 4))
plt.plot(dV_frac * 100, P / 1e5, label='Pressure [atm]')
plt.plot(dV_frac * 100, T, label='Temperature [K]')
plt.axhline(y=P0/1e5, color='gray', linestyle='--', linewidth=0.7)
plt.axhline(y=T0, color='gray', linestyle='--', linewidth=0.7)
plt.xlabel("ΔV / V [%]")
plt.ylabel("Pressure / Temperature")
plt.title("Adiabatic Response: ΔP and ΔT vs ΔV/V")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
# --- 結果出力(Results) ---
print(f"Mayer relation check: Cp = {Cp:.2f} J/mol·K, γ = {gamma:.3f}")
print(f"Initial Pressure: {P0/1e5:.2f} atm")
print(f"Piston Oscillation Period τ: {tau:.3f} s")