梁のたわみを弾性曲線方程式 $EIy” = M(x)$ から求めるとき、積分定数を決定するための境界条件の設定が解の鍵です。支持条件が変わるだけで、同じ荷重でもたわみは大きく異なります。
本記事では、代表的な梁の支持条件ごとに境界条件を整理し、主要な荷重ケースに対するたわみの公式をまとめます。
本記事の内容
- 各支持条件の境界条件
- 片持ち梁の代表的な解
- 単純支持梁の代表的な解
- 両端固定梁の代表的な解
- 連続梁の概要
- Pythonでの比較可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
支持条件と境界条件
固定端(Clamped / Fixed)
壁に埋め込まれた端部。たわみもたわみ角もゼロ。
$$ y = 0, \quad y’ = 0 $$
ピン支持(Pinned / Hinged)
回転は自由だが、上下変位は拘束。
$$ y = 0, \quad M = 0 \quad (EIy” = 0) $$
ローラー支持(Roller)
ピン支持と同様に鉛直変位は拘束されますが、水平方向は自由です。境界条件はピン支持と同じ:
$$ y = 0, \quad M = 0 $$
自由端(Free)
力もモーメントも作用しない端部。
$$ M = 0 \quad (EIy” = 0), \quad V = 0 \quad (EIy”’ = 0) $$
まとめ表
| 支持条件 | 条件1 | 条件2 |
|---|---|---|
| 固定端 | $y = 0$ | $y’ = 0$ |
| ピン/ローラー | $y = 0$ | $y” = 0$ |
| 自由端 | $y” = 0$ | $y”’ = 0$ |
片持ち梁の公式集
固定端を $x = 0$、自由端を $x = L$ とします。
先端集中荷重 $P$
$$ y(x) = \frac{P}{6EI}(x^3 – 3Lx^2) $$
$$ \delta_{\max} = \frac{PL^3}{3EI}, \quad \theta_{\max} = \frac{PL^2}{2EI} $$
$$ M_{\max} = PL \quad (\text{固定端}) $$
等分布荷重 $w$
$$ y(x) = \frac{w}{24EI}(x^4 – 4Lx^3 + 6L^2 x^2) $$
$$ \delta_{\max} = \frac{wL^4}{8EI}, \quad \theta_{\max} = \frac{wL^3}{6EI} $$
$$ M_{\max} = \frac{wL^2}{2} \quad (\text{固定端}) $$
先端モーメント $M_0$
$$ y(x) = \frac{M_0 x^2}{2EI} $$
$$ \delta_{\max} = \frac{M_0 L^2}{2EI}, \quad \theta_{\max} = \frac{M_0 L}{EI} $$
単純支持梁の公式集
等分布荷重 $w$
$$ y(x) = \frac{wx}{24EI}(x^3 – 2Lx^2 + L^3) $$
$$ \delta_{\max} = \frac{5wL^4}{384EI} \quad (x = L/2) $$
$$ M_{\max} = \frac{wL^2}{8} \quad (x = L/2) $$
中央集中荷重 $P$
$$ y(x) = \begin{cases} \frac{P}{48EI}(3L^2 x – 4x^3) & (0 \leq x \leq L/2) \\[4pt] \frac{P}{48EI}[3L^2(L-x) – 4(L-x)^3] & (L/2 \leq x \leq L) \end{cases} $$
$$ \delta_{\max} = \frac{PL^3}{48EI} \quad (x = L/2) $$
$$ M_{\max} = \frac{PL}{4} \quad (x = L/2) $$
任意の位置 $a$ に集中荷重 $P$($a < L$)
荷重位置を $x = a$、$b = L – a$ とすると:
$$ \delta(x = a) = \frac{Pa^2 b^2}{3EIL} $$
最大たわみの位置: $x = \sqrt{(L^2 – b^2)/3}$
両端固定梁の公式集
両端固定梁は不静定梁であり、反力の決定に適合条件が必要です。
等分布荷重 $w$
$$ y(x) = \frac{w}{24EI}(x^2 – Lx)^2 = \frac{wx^2}{24EI}(L-x)^2 $$
$$ \delta_{\max} = \frac{wL^4}{384EI} \quad (x = L/2) $$
$$ M_{\text{端}} = -\frac{wL^2}{12}, \quad M_{\text{中央}} = \frac{wL^2}{24} $$
単純支持梁と比較すると、最大たわみは $\frac{1}{5}$ に、最大モーメントは固定端で $\frac{2}{3}$ 倍(中央では $\frac{1}{3}$ 倍)になります。固定端は構造的に有利です。
中央集中荷重 $P$
$$ \delta_{\max} = \frac{PL^3}{192EI} \quad (x = L/2) $$
$$ M_{\text{端}} = -\frac{PL}{8}, \quad M_{\text{中央}} = \frac{PL}{8} $$
各支持条件の比較
等分布荷重 $w$ に対する最大たわみの比較:
| 支持条件 | $\delta_{\max}$ | 比率 |
|---|---|---|
| 片持ち梁 | $\frac{wL^4}{8EI}$ | 1.000 |
| 単純支持梁 | $\frac{5wL^4}{384EI}$ | 0.104 |
| 両端固定梁 | $\frac{wL^4}{384EI}$ | 0.021 |
片持ち梁に比べ、両端固定梁のたわみは約 $1/48$ と格段に小さくなります。
連続梁の概要
連続梁は3つ以上の支点を持つ不静定梁です。各スパンの曲げモーメントの関係は3モーメントの定理(クラペイロンの定理) で記述されます。
3つの隣接する支点 $i-1, i, i+1$ のモーメント $M_{i-1}, M_i, M_{i+1}$ と各スパン長 $L_1, L_2$ の関係:
$$ M_{i-1}L_1 + 2M_i(L_1 + L_2) + M_{i+1}L_2 = -\frac{w_1 L_1^3}{4} – \frac{w_2 L_2^3}{4} $$
これを全支点について立式し、連立方程式を解きます。
Pythonでの実装
import numpy as np
import matplotlib.pyplot as plt
L = 4.0 # 梁の長さ [m]
E = 200e9 # ヤング率 [Pa]
b = 0.1 # 断面幅 [m]
h = 0.2 # 断面高さ [m]
I = b * h**3 / 12
EI = E * I
w = 10e3 # 等分布荷重 [N/m]
P = 20e3 # 集中荷重 [N]
n = 500
x = np.linspace(0, L, n)
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# (1) 等分布荷重: 3つの支持条件を比較
y_cant = w / (24*EI) * (x**4 - 4*L*x**3 + 6*L**2*x**2)
y_ss = w*x / (24*EI) * (x**3 - 2*L*x**2 + L**3)
y_fixed = w*x**2 / (24*EI) * (L - x)**2
axes[0, 0].plot(x, y_cant*1e3, 'b-', linewidth=2, label='Cantilever')
axes[0, 0].plot(x, y_ss*1e3, 'r-', linewidth=2, label='Simply Supported')
axes[0, 0].plot(x, y_fixed*1e3, 'g-', linewidth=2, label='Fixed-Fixed')
axes[0, 0].set_xlabel('x [m]')
axes[0, 0].set_ylabel('Deflection [mm]')
axes[0, 0].set_title(f'UDL w={w/1e3:.0f} kN/m: Support Comparison')
axes[0, 0].legend()
axes[0, 0].grid(True, alpha=0.3)
# (2) 集中荷重: 3つの支持条件を比較
y_cant_P = P / (6*EI) * (x**3 - 3*L*x**2)
y_ss_P = np.where(x <= L/2,
P / (48*EI) * (3*L**2*x - 4*x**3),
P / (48*EI) * (3*L**2*(L-x) - 4*(L-x)**3))
# 両端固定・中央集中荷重
y_fixed_P = np.where(x <= L/2,
P*x**2 / (48*EI) * (3*L - 4*x),
P*(L-x)**2 / (48*EI) * (3*L - 4*(L-x)))
axes[0, 1].plot(x, y_cant_P*1e3, 'b-', linewidth=2, label='Cantilever')
axes[0, 1].plot(x, y_ss_P*1e3, 'r-', linewidth=2, label='Simply Supported')
axes[0, 1].plot(x, y_fixed_P*1e3, 'g-', linewidth=2, label='Fixed-Fixed')
axes[0, 1].set_xlabel('x [m]')
axes[0, 1].set_ylabel('Deflection [mm]')
axes[0, 1].set_title(f'Point Load P={P/1e3:.0f} kN at Center')
axes[0, 1].legend()
axes[0, 1].grid(True, alpha=0.3)
# (3) 等分布荷重のBMD比較
M_cant = -w*(L-x)**2 / 2
M_ss = w*x*(L-x) / 2
M_fixed_bmd = w/12 * (6*L*x - 6*x**2 - L**2)
axes[1, 0].plot(x, M_cant/1e3, 'b-', linewidth=2, label='Cantilever')
axes[1, 0].plot(x, M_ss/1e3, 'r-', linewidth=2, label='Simply Supported')
axes[1, 0].plot(x, M_fixed_bmd/1e3, 'g-', linewidth=2, label='Fixed-Fixed')
axes[1, 0].axhline(0, color='k', linewidth=0.5)
axes[1, 0].set_xlabel('x [m]')
axes[1, 0].set_ylabel('M [kN$\\cdot$m]')
axes[1, 0].set_title('BMD Comparison (UDL)')
axes[1, 0].legend()
axes[1, 0].grid(True, alpha=0.3)
# (4) たわみ比較(棒グラフ)
delta_cant_w = w*L**4 / (8*EI) * 1e3 # [mm]
delta_ss_w = 5*w*L**4 / (384*EI) * 1e3
delta_fixed_w = w*L**4 / (384*EI) * 1e3
delta_cant_P = P*L**3 / (3*EI) * 1e3
delta_ss_P = P*L**3 / (48*EI) * 1e3
delta_fixed_P = P*L**3 / (192*EI) * 1e3
labels = ['Cantilever', 'Simply\nSupported', 'Fixed-Fixed']
x_bar = np.arange(3)
width = 0.35
bars1 = axes[1, 1].bar(x_bar - width/2,
[delta_cant_w, delta_ss_w, delta_fixed_w],
width, label=f'UDL w={w/1e3:.0f} kN/m', color='steelblue')
bars2 = axes[1, 1].bar(x_bar + width/2,
[delta_cant_P, delta_ss_P, delta_fixed_P],
width, label=f'Point P={P/1e3:.0f} kN', color='coral')
axes[1, 1].set_xticks(x_bar)
axes[1, 1].set_xticklabels(labels)
axes[1, 1].set_ylabel('Max Deflection [mm]')
axes[1, 1].set_title('Maximum Deflection Comparison')
axes[1, 1].legend()
axes[1, 1].grid(True, alpha=0.3, axis='y')
# 値をバーの上に表示
for bar in bars1:
axes[1, 1].text(bar.get_x() + bar.get_width()/2, bar.get_height(),
f'{bar.get_height():.2f}', ha='center', va='bottom', fontsize=8)
for bar in bars2:
axes[1, 1].text(bar.get_x() + bar.get_width()/2, bar.get_height(),
f'{bar.get_height():.2f}', ha='center', va='bottom', fontsize=8)
plt.tight_layout()
plt.savefig('beam_boundary_conditions.png', dpi=150, bbox_inches='tight')
plt.show()
まとめ
本記事では、はりの境界条件と典型的なたわみ解を体系的に解説しました。
- 固定端: $y=0$, $y’=0$、ピン/ローラー: $y=0$, $y”=0$、自由端: $y”=0$, $y”’=0$
- 片持ち梁は最もたわみが大きく、両端固定梁は最も小さい
- 等分布荷重の最大たわみ: 片持ち $\frac{wL^4}{8EI}$、単純支持 $\frac{5wL^4}{384EI}$、両端固定 $\frac{wL^4}{384EI}$
- 両端固定梁は不静定構造であり、たわみとモーメントの両方が大幅に低減される
- 連続梁は3モーメントの定理で解析できる
次のステップとして、以下の記事も参考にしてください。