梁に曲げモーメントが作用すると、断面内に引張と圧縮の応力分布が生じます。この曲げ応力を正確に計算することは、構造設計の安全性を担保するうえで不可欠です。
曲げ応力の計算には 断面二次モーメント $I$ が登場します。断面の形状がどれだけ曲げに抵抗できるかを表す幾何学的量です。本記事では、曲げ応力公式の導出から断面二次モーメントの計算まで解説します。
本記事の内容
- 曲げ応力の導出(平面保持の仮定から)
- 断面二次モーメントの定義と計算
- 各種断面形状の断面二次モーメント
- Pythonでの応力分布と断面特性の可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
曲げ応力の導出
平面保持の仮定
梁が曲げ変形するとき、以下を仮定します。
- 変形前に平面だった断面は、変形後も平面を保つ(ベルヌーイ・ナビエの仮定)
- 断面は中立面に対して垂直を保つ
ひずみ分布
中立軸から距離 $y$ の位置のひずみは、曲率半径 $R$ を用いると、
$$ \varepsilon = \frac{y}{R} $$
中立軸($y = 0$)ではひずみがゼロで、中立軸から離れるほどひずみが大きくなります。上側($y > 0$)と下側($y < 0$)で符号が反転します。
応力分布
フックの法則 $\sigma = E\varepsilon$ より、
$$ \sigma = \frac{Ey}{R} $$
応力も中立軸から距離 $y$ に比例して線形に分布します。
曲げモーメントとの関係
断面に作用する曲げモーメント $M$ は、応力による力のモーメントの総和です。
$$ M = \int_A \sigma \cdot y \, dA = \int_A \frac{E}{R} y^2 \, dA = \frac{E}{R} \int_A y^2 \, dA $$
ここで 断面二次モーメント を、
$$ I = \int_A y^2 \, dA $$
と定義すると、
$$ M = \frac{EI}{R} $$
$1/R = M/(EI)$ を応力の式に代入して、
$$ \boxed{\sigma = \frac{My}{I}} $$
これが 曲げ応力公式 です。曲げ応力は中立軸からの距離 $y$ に比例します。
最大曲げ応力と断面係数
断面の上端または下端($y = c$)で応力が最大になります。
$$ \sigma_{\max} = \frac{Mc}{I} = \frac{M}{Z} $$
ここで $Z = I/c$ を 断面係数 といいます。
断面二次モーメントの計算
長方形断面
幅 $b$、高さ $h$ の長方形断面(中立軸が中央)の場合、
$$ I = \int_{-h/2}^{h/2} y^2 \cdot b \, dy = b\left[\frac{y^3}{3}\right]_{-h/2}^{h/2} = \frac{bh^3}{12} $$
円形断面
半径 $r$ の円形断面の場合、
$$ I = \frac{\pi r^4}{4} $$
中空円形断面
外径 $r_o$、内径 $r_i$ の場合、
$$ I = \frac{\pi(r_o^4 – r_i^4)}{4} $$
I型断面
フランジ幅 $b_f$、フランジ厚さ $t_f$、ウェブ高さ $h_w$、ウェブ厚さ $t_w$ のI型断面(全高さ $H = h_w + 2t_f$)は、
$$ I = \frac{b_f H^3}{12} – \frac{(b_f – t_w)h_w^3}{12} $$
各断面形状の比較
| 断面形状 | $I$ | $Z$ |
|---|---|---|
| 長方形 ($b \times h$) | $bh^3/12$ | $bh^2/6$ |
| 円形 (半径 $r$) | $\pi r^4 / 4$ | $\pi r^3 / 4$ |
| 中空円形 | $\pi(r_o^4 – r_i^4)/4$ | $\pi(r_o^4 – r_i^4)/(4r_o)$ |
平行軸の定理
中立軸から距離 $d$ だけ離れた軸まわりの断面二次モーメント $I’$ は、
$$ I’ = I + Ad^2 $$
ここで $A$ は断面積、$I$ は図心を通る軸まわりの断面二次モーメントです。
Pythonでの実装
各断面形状の断面二次モーメントの比較と、曲げ応力分布の可視化を行います。
import numpy as np
import matplotlib.pyplot as plt
# --- 曲げ応力分布の可視化 ---
M = 10000 # 曲げモーメント [N·m]
# 長方形断面
b, h = 0.05, 0.10 # 幅50mm, 高さ100mm
I_rect = b * h**3 / 12
y_rect = np.linspace(-h/2, h/2, 200)
sigma_rect = M * y_rect / I_rect
# 円形断面(同じ面積)
A_rect = b * h
r_circ = np.sqrt(A_rect / np.pi)
I_circ = np.pi * r_circ**4 / 4
y_circ = np.linspace(-r_circ, r_circ, 200)
sigma_circ = M * y_circ / I_circ
# I型断面(同じ面積)
bf, tf, tw = 0.08, 0.01, 0.006
hw = (A_rect - 2 * bf * tf) / tw
H = hw + 2 * tf
I_beam = bf * H**3 / 12 - (bf - tw) * hw**3 / 12
y_beam = np.linspace(-H/2, H/2, 200)
sigma_beam = M * y_beam / I_beam
fig, axes = plt.subplots(1, 3, figsize=(15, 6))
# 長方形
axes[0].plot(sigma_rect / 1e6, y_rect * 1e3, 'b-', linewidth=2)
axes[0].axhline(y=0, color='gray', linestyle='--', alpha=0.5)
axes[0].axvline(x=0, color='gray', linestyle='--', alpha=0.5)
axes[0].set_xlabel('Stress [MPa]')
axes[0].set_ylabel('y [mm]')
axes[0].set_title(f'Rectangle ({b*1e3:.0f}x{h*1e3:.0f} mm)\n$I$={I_rect*1e8:.2f}×10⁻⁸ m⁴')
axes[0].grid(True)
# 円形
axes[1].plot(sigma_circ / 1e6, y_circ * 1e3, 'r-', linewidth=2)
axes[1].axhline(y=0, color='gray', linestyle='--', alpha=0.5)
axes[1].axvline(x=0, color='gray', linestyle='--', alpha=0.5)
axes[1].set_xlabel('Stress [MPa]')
axes[1].set_ylabel('y [mm]')
axes[1].set_title(f'Circle (r={r_circ*1e3:.1f} mm)\n$I$={I_circ*1e8:.2f}×10⁻⁸ m⁴')
axes[1].grid(True)
# I型
axes[2].plot(sigma_beam / 1e6, y_beam * 1e3, 'g-', linewidth=2)
axes[2].axhline(y=0, color='gray', linestyle='--', alpha=0.5)
axes[2].axvline(x=0, color='gray', linestyle='--', alpha=0.5)
axes[2].set_xlabel('Stress [MPa]')
axes[2].set_ylabel('y [mm]')
axes[2].set_title(f'I-beam\n$I$={I_beam*1e8:.2f}×10⁻⁸ m⁴')
axes[2].grid(True)
plt.suptitle(f'Bending Stress Distribution (M = {M/1000:.0f} kN·m, Same Cross-Section Area)', y=1.02)
plt.tight_layout()
plt.show()
# 比較
print(f"断面積(共通): {A_rect*1e4:.2f} cm²")
print(f"長方形 I = {I_rect*1e8:.2f} × 10⁻⁸ m⁴, σ_max = {abs(sigma_rect).max()/1e6:.1f} MPa")
print(f"円形 I = {I_circ*1e8:.2f} × 10⁻⁸ m⁴, σ_max = {abs(sigma_circ).max()/1e6:.1f} MPa")
print(f"I型 I = {I_beam*1e8:.2f} × 10⁻⁸ m⁴, σ_max = {abs(sigma_beam).max()/1e6:.1f} MPa")
同じ断面積でも、材料を中立軸から遠くに配置したI型断面は断面二次モーメントが大きく、最大曲げ応力が小さくなることが確認できます。これが構造部材にI型やH型が多用される理由です。
まとめ
本記事では、曲げ応力と断面二次モーメントについて解説しました。
- 平面保持の仮定から曲げ応力公式 $\sigma = My/I$ を導出した
- 断面二次モーメント $I = \int y^2 \, dA$ は曲げ剛性を決める幾何学量
- 断面係数 $Z = I/c$ を用いて最大曲げ応力は $\sigma_{\max} = M/Z$ で求まる
- 同じ断面積でも、材料配置(I型など)により $I$ を大きくでき、曲げに強い断面を設計できる
次のステップとして、以下の記事も参考にしてください。