静水力学(パスカルの原理とアルキメデスの原理)

静水力学(hydrostatics)は、静止した流体中における圧力分布と力の釣り合いを扱う分野です。日常的な水圧の計算からダムの設計、潜水艦の浮沈制御まで、幅広い工学問題の基礎となります。

本記事では、圧力の定義から出発し、パスカルの原理、静水圧の導出、浮力とアルキメデスの原理を数式で丁寧に導出し、Pythonで計算例を確認します。

本記事の内容

  • 圧力の定義
  • パスカルの原理
  • 静水圧の深さ依存性
  • 浮力とアルキメデスの原理
  • 浮沈の条件
  • Pythonでの計算と可視化

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

圧力の定義

スカラー量としての圧力

圧力 $p$ は、単位面積あたりに作用する力として定義されます。

$$ p = \frac{F}{A} $$

ここで $F$ は面に垂直に作用する力 [N]、$A$ は面積 [m$^2$] です。圧力の単位は Pa(パスカル)= N/m$^2$ です。

重要な点は、静止流体中の圧力はスカラー量 であるということです。つまり、ある点における圧力は向きに依存しません。これは次節のパスカルの原理から導かれます。


パスカルの原理

圧力の等方性

静止流体中の任意の点において、圧力は すべての方向で等しい です。これを パスカルの原理 と呼びます。

この性質を示すために、静止流体中に微小な三角形の要素を考えます。厚さを $\delta z$ とし、三角形の底辺を $\delta x$、高さを $\delta y$、斜辺を $\delta s$ とします。各面に作用する圧力を $p_x$, $p_y$, $p_s$ とします。

$x$ 方向の力の釣り合いから、

$$ p_x \delta y \delta z – p_s \delta s \delta z \sin\theta = 0 $$

幾何学的関係 $\delta y = \delta s \sin\theta$ を使うと、

$$ p_x \delta y \delta z – p_s \delta y \delta z = 0 $$

$$ \therefore p_x = p_s $$

$y$ 方向の力の釣り合い(微小要素の重力は2次の微小量として無視)から同様に $p_y = p_s$ が得られるため、

$$ \boxed{p_x = p_y = p_s = p} $$

すなわち、静止流体中のある点における圧力は方向によらず一定です。

密閉容器への応用

パスカルの原理の工学的な応用として、密閉容器に加えた圧力は流体全体に等しく伝わる という性質があります。

油圧ジャッキを考えます。小さなピストン(面積 $A_1$)に力 $F_1$ を加えると、流体中の圧力変化は $\Delta p = F_1 / A_1$ です。この圧力変化が大きなピストン(面積 $A_2$)に伝わり、

$$ F_2 = \Delta p \cdot A_2 = F_1 \frac{A_2}{A_1} $$

面積比 $A_2 / A_1$ だけ力が増幅されます。


静水圧の深さ依存性

導出

重力場中の静止流体を考えます。鉛直方向を $z$ 軸(上向き正)とし、微小な流体要素(断面積 $A$、高さ $dz$)に対する力の釣り合いを考えます。

流体要素の下面に作用する圧力を $p$、上面に作用する圧力を $p + dp$ とすると、鉛直方向の力の釣り合いから、

$$ pA – (p + dp)A – \rho g A \, dz = 0 $$

整理すると、

$$ \boxed{\frac{dp}{dz} = -\rho g} $$

これが 静水圧の基本式 です。圧力は深さとともに増加します。

非圧縮性流体の場合

密度 $\rho$ が一定(非圧縮性)の場合、上式を水面($z = 0$, $p = p_0$)から深さ $h$($z = -h$)まで積分します。

$$ \int_{p_0}^{p} dp = -\rho g \int_0^{-h} dz = \rho g h $$

$$ \boxed{p = p_0 + \rho g h} $$

ここで $p_0$ は水面での圧力(大気圧)、$h$ は水面からの深さです。

ゲージ圧と絶対圧

大気圧 $p_0$ を基準にした圧力を ゲージ圧 $p_g$ と呼びます。

$$ p_g = p – p_0 = \rho g h $$

大気圧を含む全圧力を 絶対圧 と呼びます。


浮力とアルキメデスの原理

浮力の導出

静止流体中に沈められた物体に作用する浮力を導出します。物体表面の各微小面に作用する圧力は $p = p_0 + \rho g h$ です。物体の上面と下面での圧力差が浮力を生じます。

簡単のため、底面積 $A$、高さ $H$ の直方体が深さ $h_1$(上面)から $h_2 = h_1 + H$(下面)に沈んでいる場合を考えます。

下面に作用する上向きの力は $p_0 + \rho g h_2$ に面積 $A$ を掛けたもの、上面に作用する下向きの力は $p_0 + \rho g h_1$ に面積 $A$ を掛けたものです。浮力 $F_B$ は上向きの力から下向きの力を引いたものです。

$$ \begin{align} F_B &= (p_0 + \rho g h_2) A – (p_0 + \rho g h_1) A \\ &= \rho g (h_2 – h_1) A \\ &= \rho g H A \\ &= \rho g V_{\text{sub}} \end{align} $$

ここで $V_{\text{sub}} = HA$ は物体が排除した流体の体積です。

アルキメデスの原理

上の結果は一般の形状の物体に拡張でき、アルキメデスの原理 として知られます。

$$ \boxed{F_B = \rho_f g V_{\text{sub}}} $$

「流体中の物体に作用する浮力は、その物体が排除した流体の重さに等しい」

ここで $\rho_f$ は流体の密度、$V_{\text{sub}}$ は流体中に沈んでいる部分の体積です。

浮沈の条件

物体の密度を $\rho_s$、流体の密度を $\rho_f$ とします。物体の全体積を $V$ とすると、重力は $W = \rho_s g V$、浮力は $F_B = \rho_f g V_{\text{sub}}$ です。

条件 結果
$\rho_s < \rho_f$ 浮く(一部が水面上に出る)
$\rho_s = \rho_f$ 中性浮力(どの深さでも静止)
$\rho_s > \rho_f$ 沈む

浮いている場合、水面上に出る割合は次のように求まります。力の釣り合い $W = F_B$ から、

$$ \rho_s g V = \rho_f g V_{\text{sub}} $$

$$ \frac{V_{\text{sub}}}{V} = \frac{\rho_s}{\rho_f} $$

例えば氷($\rho_s \approx 917 \, \mathrm{kg/m^3}$)が水($\rho_f = 1000 \, \mathrm{kg/m^3}$)に浮く場合、体積の約 91.7% が水中に沈みます。


Pythonでの計算と可視化

静水圧の深さ依存性と浮力の計算を行います。

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 3, figsize=(18, 5))

# --- (1) 静水圧の深さ依存性 ---
h = np.linspace(0, 100, 300)  # 深さ [m]
rho_water = 1000  # kg/m^3
rho_seawater = 1025  # kg/m^3
g = 9.81
p0 = 101325  # 大気圧 [Pa]

p_fresh = p0 + rho_water * g * h
p_sea = p0 + rho_seawater * g * h

axes[0].plot(p_fresh / 1e6, h, 'b-', lw=2, label='Fresh water')
axes[0].plot(p_sea / 1e6, h, 'r--', lw=2, label='Sea water')
axes[0].set_xlabel('Absolute pressure [MPa]', fontsize=12)
axes[0].set_ylabel('Depth [m]', fontsize=12)
axes[0].set_title('Hydrostatic Pressure vs Depth', fontsize=13)
axes[0].invert_yaxis()
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3)

# --- (2) 油圧ジャッキ(パスカルの原理)---
A1 = np.linspace(0.001, 0.01, 100)  # 小ピストン面積 [m^2]
A2 = 0.1  # 大ピストン面積 [m^2]
F1 = 100  # 入力力 [N]

F2 = F1 * A2 / A1
ratio = A2 / A1

axes[1].plot(A1 * 1e4, F2 / 1e3, 'g-', lw=2)
axes[1].set_xlabel('Small piston area [cm$^2$]', fontsize=12)
axes[1].set_ylabel('Output force [kN]', fontsize=12)
axes[1].set_title("Pascal's Principle: Hydraulic Jack\n($F_1$=100 N, $A_2$=0.1 m$^2$)", fontsize=13)
axes[1].grid(True, alpha=0.3)

# --- (3) 浮沈の条件 ---
rho_f = 1000  # 水の密度
rho_s = np.linspace(100, 2000, 300)  # 物体の密度

# 沈んでいる割合(浮いている場合は rho_s/rho_f、沈む場合は1.0)
submerged_fraction = np.minimum(rho_s / rho_f, 1.0)

axes[2].plot(rho_s, submerged_fraction * 100, 'b-', lw=2)
axes[2].axvline(x=rho_f, color='r', ls='--', alpha=0.7, label='$\\rho_s = \\rho_f$ (neutral)')
axes[2].axhline(y=100, color='gray', ls=':', alpha=0.5)

# 材料の例をプロット
materials = {
    'Wood (pine)': 500, 'Ice': 917, 'Human body': 985,
    'Steel': 7850, 'Aluminum': 2700
}
for name, rho in materials.items():
    frac = min(rho / rho_f, 1.0) * 100
    axes[2].annotate(name, xy=(rho, frac), fontsize=8,
                     ha='center', va='bottom',
                     arrowprops=dict(arrowstyle='->', color='gray'))
    axes[2].plot(rho, frac, 'ko', ms=4)

axes[2].set_xlabel('Object density $\\rho_s$ [kg/m$^3$]', fontsize=12)
axes[2].set_ylabel('Submerged fraction [%]', fontsize=12)
axes[2].set_title("Archimedes' Principle", fontsize=13)
axes[2].legend(fontsize=10)
axes[2].grid(True, alpha=0.3)
axes[2].set_xlim(0, 2000)

plt.tight_layout()
plt.show()

左のグラフでは、水深に対する絶対圧力の増加が確認できます。淡水と海水で勾配がわずかに異なることがわかります。深さ 10 m で約 1 気圧(0.1 MPa)増加する目安は覚えておくと便利です。

中央のグラフでは、油圧ジャッキにおけるパスカルの原理を示しています。小ピストンの面積が小さいほど、大きな力の増幅が得られます。

右のグラフでは、物体の密度と沈んでいる割合の関係を示しています。物体の密度が水の密度より小さいとき浮き、大きいとき完全に沈みます。


まとめ

本記事では、静水力学の基礎を解説しました。

  • パスカルの原理: 静止流体中の圧力は方向によらず等しい。密閉容器では圧力変化が全体に伝わる
  • 静水圧: $p = p_0 + \rho g h$ — 深さに比例して圧力が増加
  • アルキメデスの原理: 浮力 $F_B = \rho_f g V_{\text{sub}}$ — 排除した流体の重さに等しい
  • 浮沈の条件: $\rho_s < \rho_f$ で浮き、$\rho_s > \rho_f$ で沈む

次のステップとして、以下の記事も参考にしてください。