0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

カルノーサイクルのP-V図の図示

0
Last updated at Posted at 2026-04-24

はじめに

理想気体を扱う熱機関のサイクルのうち最も単純なサイクルをカルノーサイクルという。
カルノーサイクルは等温変化及び断熱変化のみで構成されている。
そこで、今回は理想気体の状態方程式、熱力学第一法則を用いてカルノーサイクルのP-V図を描写することを試みる。
具体的には、単原子分子の理想気体を考え、計算機を用いてカルノーサイクルのP-V図を描写する。

PV_カルノーサイクル.png

最後に、考察として熱効率についても言及する。

原理

理想気体の状態方程式は、以下のように表すことができる。

PV=nRT

一方で、熱力学第一法則は以下のように表すことができる。


\Delta U =Q+W =Q-P\Delta V

ただし、$W$は外部からされた仕事を正とし、$W=-P\Delta V$の関係性があるものとする。

ここで、単原子分子の場合は、以下のように表すことができる。

\frac{3}{2}nR\Delta T=Q+W

理想気体の状態方程式、単原子分子における熱力学第一法則を連立させることで、$P,V$の関係式を作成する。
これにより、計算機を用いた数値計算によりP-V図を作成する。

連立方程式

状態方程式より、

T=\frac{PV}{nR}

積の微分法より、

\Delta T =\frac{P\Delta V+V \Delta P}{nR}

これを、熱力学第一法則の式に代入すると、

\frac{3}{2}nR \frac{P\Delta V+V \Delta P}{nR}=Q+W
\frac{3}{2}(P\Delta V+V \Delta P)=Q+W

したがって、

\Delta P= \frac{\frac{2}{3}(Q+W)-P\Delta V}{V}

数値計算

ここで、微小量$h$を$|h|<<1$とする。

V=V+\Delta V=V+h

で更新していくと考える。


P=P+\Delta P =P+\frac{\frac{2}{3}(Q+W)-P\Delta V}{V}=P+\frac{\frac{2}{3}(Q+W)-Ph}{V}

これにより、P-V図を作成する。

条件

ここで、断熱変化及び等温変化の条件をまとめる。

ただし、$W=-P\Delta V=-Ph$であるとする。

断熱変化

断熱より、$Q=0$である。

等温変化

等温より、$\Delta T=0$なので、 $Q+W=0$
つまり、$Q=-W$である。

プログラム

目的

以下のような、カルノーサイクルのP-V図を作成したい。
PV_カルノーサイクル.png

ただし、理想気体の圧力および体積については、単位法(無次元の単位)を用いる。
また、各状態変化の推移点を以下のように定義する。

状態1 $(P_0,V_0)$
状態2 $(P_1,V_1)$
状態3 $(P_2,V_2)$
状態4 $(P_3,V_3)$

ただし、$V_0<V_2<V_1<V_3$とする。

以上の考察及び各状態変化は連続的に行われることに注意して、以下のようなプログラムを作成した。

python Carnot_cycle_vis.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math

# =====================================================================
# カルノーサイクル P-V 図 数値シミュレーション
#
# 対象: 単原子分子理想気体(内部自由度 f = 3)
# 使用する物理法則:
#   - 理想気体の状態方程式: PV = nRT
#   - 熱力学第一法則: dU = δQ + δW
#   - 単原子分子理想気体の内部エネルギー: U = (3/2) * P * V
# =====================================================================

# 数値積分の微小ステップ幅(体積 V の刻み幅)
# 小さいほど精度が上がるが、計算ステップ数も増える
h = 1e-5


def cal_P(P, V, Q, W):
    """
    熱力学第一法則を用いて、微小体積変化 h に対する圧力変化 δP を計算し、
    P と V を 1 ステップ更新して返す。

    【δP の導出】
    単原子分子理想気体の内部エネルギー: U = (3/2) * P * V
    微小変化:  dU = (3/2) * (P * dV + V * dP)

    熱力学第一法則: dU = δQ + δW  (δW = -P * dV = -P * h)
        → (3/2)(P * h + V * δP) = Q + W
        → δP = [2/3 * (Q + W) - P * h] / V

    Parameters
    ----------
    P : float  現在の圧力
    V : float  現在の体積
    Q : float  この微小過程で気体が吸収した熱量
                 等温変化: Q = P * h(吸熱が仕事を補償)
                 断熱変化: Q = 0
    W : float  外部から気体になされた微小仕事(= -P * h)
                 膨張時: W < 0(気体がエネルギーを失う方向)

    Returns
    -------
    P : float  更新後の圧力(P + δP)
    V : float  更新後の体積(V + h)
    """
    # 熱力学第一法則 + 内部エネルギーの表式から導いた差分式
    delta_P = (2/3 * (Q + W) - P * h) / V

    V = V + h        # 体積を微小ステップだけ前進
    P = P + delta_P  # 導出した δP を加算
    return P, V


def change_P(P, V1, V2, parm):
    """
    体積を V1 から V2 まで微小ステップで増加させながら、
    各状態の (P, V) を数値積分で追跡する。
    parm で等温変化/断熱変化を切り替える。

    【等温変化 (parm=0)】
    温度一定 → 内部エネルギー変化なし (dU = 0)
    → Q = -W = P * h  (吸熱量 = 気体がする仕事量)
    P-V 上では PV = const の双曲線(ボイルの法則)をたどる。

    【断熱変化 (parm=1)】
    外部との熱交換なし → Q = 0
    → dU = W のみ。膨張すると内部エネルギーが減り温度が下がる。
    P-V 上では PV^γ = const の曲線(等温線より急傾斜)をたどる。
    単原子分子の場合 γ = Cp/Cv = 5/3 ≈ 1.667。

    Parameters
    ----------
    P    : float  初期圧力(積分開始点の圧力)
    V1   : float  初期体積(積分開始点)
    V2   : float  終端体積(積分終了条件 V < V2 を満たす間ループ)
    parm : int    0 = 等温変化、1 = 断熱変化

    Returns
    -------
    P_ary  : list[float]  各ステップの圧力の配列
    V_ary  : list[float]  各ステップの体積の配列
    P_last : float        終端(V ≈ V2)での圧力
                          → 次の過程の初期圧力として利用する
    """
    P_ary = []
    V_ary = []
    V = V1

    while V < V2:
        # 微小膨張 dV = h に対して外部がする仕事(膨張なので負)
        W = -P * h

        if parm == 0:
            # 等温変化: 内部エネルギー不変 → 熱が仕事を全量補償
            Q = -W
        else:
            # 断熱変化: 熱の出入りなし
            Q = 0

        P, V = cal_P(P, V, Q, W)
        P_ary.append(P)
        V_ary.append(V)

    P_last = P  # 次過程の初期圧力として返す
    return P_ary, V_ary, P_last


# =====================================================================
# カルノーサイクル初期条件の設定
#
# カルノーサイクルは「2 本の等温線」と「2 本の断熱線」が交差する
# 閉じたループを形成する。各過程の役割:
#
#   [過程 1] 高温等温膨張  : (P0,V0) ─等温─→ (P_last,  V1)   状態1→状態2
#   [参照線] 初期点の断熱線: (P0,V0) ─断熱─→ (P_last1, V2)   状態1→状態3
#            ※ 低温等温線の起点圧力 P_last1 を確定するための参照曲線
#   [過程 2] 断熱膨張      : (P_last,V1) ─断熱─→ (P_last2, V3) 状態2→状態4
#            ※ 高温 T_H から低温 T_C へ温度が降下する
#   [過程 3] 低温等温膨張  : (P_last1,V2) ─等温─→ (P_last3, V3) 状態3→
#            ※ 描画用に膨張方向で等温線の形状を示す
# =====================================================================

# 初期状態(高温側等温線の始点 = 状態1)
P0, V0 = 1.0, 1.0

V1 = 2.0  # 高温等温膨張の終端体積(状態2 の体積)
V2 = 1.5  # 参照断熱線の終端体積(状態3 の体積)
V3 = 3.0  # 断熱膨張・低温等温線の共通終端体積(状態4・P-V 図の右端)

# ----- 各過程の数値積分 -----

# [過程 1] 高温側 等温膨張: 状態1(P0,V0) → 状態2(P_last, V1)
P_ary,  V_ary,  P_last  = change_P(P0,      V0, V1, 0)

# [参照線] 初期点 (P0,V0) からの断熱変化: V0 → V2
# 終端圧力 P_last1 が低温等温線(状態3)の基準圧力になる
P_ary1, V_ary1, P_last1 = change_P(P0,      V0, V2, 1)

# [過程 2] 高温等温線終点(状態2)からの 断熱膨張: V1 → V3
# 温度が高温 T_H から低温 T_C まで降下する(状態2→状態4)
P_ary2, V_ary2, P_last2 = change_P(P_last,  V1, V3, 1)

# [過程 3] 低温側 等温線: 状態3(P_last1, V2) → V3
# P_last1 を初期圧力とし、低温 T_C での等温曲線を描く
P_ary3, V_ary3, P_last3 = change_P(P_last1, V2, V3, 0)

# =====================================================================
# P-V 図のプロット
# =====================================================================

plt.plot(V_ary,  P_ary,  label="等温変化", color="blue")  # 高温等温線(過程1)
plt.plot(V_ary1, P_ary1, label="断熱変化", color="red")   # 参照断熱線(状態1起点)
plt.plot(V_ary2, P_ary2, label="断熱変化", color="red")   # 断熱膨張線(過程2)
plt.plot(V_ary3, P_ary3, label="等温変化", color="blue")  # 低温等温線(過程3)

# 各状態点のラベルを P-V 図上に表示
plt.annotate("状態1", (V0,     P0))      # 高温等温線の始点
plt.annotate("状態2", (V1,     P_last))  # 高温等温線の終点 / 断熱膨張の始点
plt.annotate("状態3", (V2,     P_last1)) # 参照断熱線の終点 / 低温等温線の始点
plt.annotate("状態4", (V3,     P_last2)) # 断熱膨張の終点

plt.xlabel("V")  # 横軸: 体積
plt.ylabel("P")  # 縦軸: 圧力
plt.legend()
plt.savefig("PV_カルノーサイクル.png")
plt.show()

結果

上記のプログラムを実行すると以下のようなグラフが生成される。
PV_カルノーサイクル.png

考察(参考)

カルノーサイクルは、熱効率が理想気体の温度のみで決定されることで有名である。
そこで、P-V図をもとにして、熱効率を求めてみよう。

等温変化(状態1から状態2)

まず、ピストンが気体から見て外部押し出される等温膨張($T=T_{H}$)の場合について考える。

熱力学第一法則より、

\Delta U_{12} = Q_{12}+W_{12}=0

が成立する。つまり、

Q_{12}=-W_{12}=-\int_{V_0}^{V_1} PdV=-\int_{V_0}^{V_1} \frac{nRT_{H}}{V}dV=- nRT_{H} \ln\frac{V_1}{V_0}

断熱変化(状態2から状態4)

まず、$Q_{24}=0$である。

また、この場合、ポアソンの法則より以下の式が成立する。


T_{H}V_0^{\gamma-1}=T_L V_2^{\gamma-1}

等温変化(状態4から状態3)

熱力学第一法則より、

\Delta U_{43} = Q_{43}+W_{43}=0

が成立する。つまり、

Q_{43}=-W_{43}=-\int_{V_3}^{V_2} PdV=-\int_{V_3}^{V_2} \frac{nRT_{L}}{V}dV=- nRT_{L} \ln\frac{V_2}{V_3}

断熱変化(状態3から状態1)

まず、$Q_{31}=0$である。

また、この場合、ポアソンの法則より以下の式が成立する。


T_{H}V_1^{\gamma-1}=T_L V_3^{\gamma-1}

熱効率

ここで、熱効率を以下のように定義する。
ただし、$W_{total}$は1サイクルにおいて外部からされた仕事であることに注意する。

\eta=\frac{-W_{total}}{Q_{12}}

ここで、1サイクルにおける内部エネルギーの変化は、$\Delta T_{total}=0$より、

\Delta U_{total} =0

したがって、熱力学第一法則より、

\Delta U_{total} =Q_{total}+W_{total}
0 =(Q_{12}+Q_{43})+W_{total}

つまり、熱効率は以下のように与えられる。

\eta=\frac{-W_{total}}{Q_{12}}=\frac{Q_{12}+Q_{43}}{Q_{12}}=\frac{T_H-T_L}{T_H}

このように、最終的にはカルノーサイクルの熱機関は、内部気体の最高温度と最低温度によって決定される。

まとめ

カルノーサイクルは、断熱変化及び等温変化から構成される。ただ、2つの状態変化のもととなっている考えは、状態方程式、熱力学第一法則なので、共通している。そのことを意識するとシンプルに体系づけることができる。
今回は、Pythonを用いて、カルノーサイクルのP-V図を作成した。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?