現実の振動系には必ず摩擦や抵抗による減衰が存在します。また、外力が加わることで共振が起きれば、振幅が異常に増大して構造破壊に至ることもあります。タコマ橋の崩壊やワイングラスの共鳴破壊は有名な例です。
本記事では物理現象としての減衰振動と強制振動を解説します。数学的な詳細は前提記事で扱っています。
本記事の内容
- 物理系での減衰メカニズム
- 減衰振動の3分類と物理的意味
- Q値とエネルギー散逸
- 共振の物理と工学的意味
- RLC回路との類似性
前提知識
物理系での減衰
| 系 | 減衰メカニズム | 減衰係数 |
|---|---|---|
| ばね-質点 | 粘性摩擦 $F = -cv$ | $c$ [Ns/m] |
| 振り子 | 空気抵抗 | $b$ [kg/s] |
| RLC回路 | 抵抗 $R$ | $R$ [Ω] |
| 建築構造 | 制振ダンパー | $c$ [Ns/m] |
3分類の物理的意味
不足減衰 ($\zeta < 1$): ドアのクローザー(ゆっくり閉まりながら少し戻る)
臨界減衰 ($\zeta = 1$): 車のサスペンション(最速で振動なく戻る)
過減衰 ($\zeta > 1$): 重いオイルダンパー(ゆっくりと戻る)
Q値の物理
$$ Q = \frac{\omega_n}{2\zeta\omega_n} = \frac{1}{2\zeta} = 2\pi \times \frac{\text{蓄積エネルギー}}{\text{1周期あたりの散逸エネルギー}} $$
| 系 | 典型的なQ値 |
|---|---|
| クォーツ時計 | ~10,000 |
| ピアノの弦 | ~3,000 |
| 地震時の建物 | 5-20 |
| 車のサスペンション | 0.5-1 |
RLC回路との類似性
$$ L\ddot{q} + R\dot{q} + \frac{1}{C}q = V(t) $$
| 機械系 | 電気系 |
|---|---|
| 質量 $m$ | インダクタンス $L$ |
| 減衰係数 $c$ | 抵抗 $R$ |
| ばね定数 $k$ | $1/C$(キャパシタンスの逆数) |
| 変位 $x$ | 電荷 $q$ |
| 速度 $v$ | 電流 $i$ |
| 力 $F$ | 電圧 $V$ |
Pythonでの実装
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
omega_n = 2*np.pi*5 # 5 Hz
fig, axes = plt.subplots(2, 2, figsize=(12, 9))
# エネルギー散逸
zeta = 0.1
t = np.linspace(0, 2, 1000)
def damped(t, y):
return [y[1], -2*zeta*omega_n*y[1] - omega_n**2*y[0]]
sol = solve_ivp(damped, [0, 2], [1, 0], t_eval=t, max_step=0.001)
K = 0.5*sol.y[1]**2
U = 0.5*omega_n**2*sol.y[0]**2
E = K + U
axes[0, 0].plot(t, E/E[0], 'k-', linewidth=2, label='全エネルギー')
axes[0, 0].plot(t, K/E[0], 'r-', alpha=0.5, label='運動エネルギー')
axes[0, 0].plot(t, U/E[0], 'b-', alpha=0.5, label='ポテンシャル')
axes[0, 0].set_title(f'エネルギー散逸($\\zeta={zeta}$, Q={1/(2*zeta):.0f})')
axes[0, 0].set_xlabel('時間 [s]')
axes[0, 0].set_ylabel('正規化エネルギー')
axes[0, 0].legend()
axes[0, 0].grid(True, alpha=0.3)
# Q値の比較
for Q, color in [(2, 'r'), (5, 'g'), (20, 'b'), (100, 'purple')]:
z = 1/(2*Q)
def osc(t, y, z=z):
return [y[1], -2*z*omega_n*y[1] - omega_n**2*y[0]]
sol = solve_ivp(osc, [0, 1], [1, 0], t_eval=np.linspace(0, 1, 500), max_step=0.001)
axes[0, 1].plot(sol.t, sol.y[0], color=color, label=f'Q={Q}')
axes[0, 1].set_title('Q値と振動の減衰')
axes[0, 1].set_xlabel('時間 [s]')
axes[0, 1].legend()
axes[0, 1].grid(True, alpha=0.3)
# 共振曲線(異なるQ値)
r = np.linspace(0.01, 2.5, 500)
for Q in [2, 5, 10, 50]:
z = 1/(2*Q)
X = 1/np.sqrt((1-r**2)**2 + (2*z*r)**2)
axes[1, 0].plot(r, X, label=f'Q={Q}')
axes[1, 0].set_title('共振曲線')
axes[1, 0].set_xlabel('$\\omega/\\omega_n$')
axes[1, 0].set_ylabel('振幅倍率')
axes[1, 0].legend()
axes[1, 0].grid(True, alpha=0.3)
axes[1, 0].set_ylim(0, 55)
# RLC回路の類似性
R_vals = [10, 50, 100, 500]
L, C = 0.1, 1e-6 # H, F
omega0 = 1/np.sqrt(L*C)
f = np.linspace(1, omega0*3/(2*np.pi), 500)
omega = 2*np.pi*f
for R in R_vals:
Z = np.sqrt(R**2 + (omega*L - 1/(omega*C))**2)
I = 1.0/Z # V=1V
axes[1, 1].plot(f/1000, I*1000, label=f'R={R}$\\Omega$')
axes[1, 1].axvline(x=omega0/(2*np.pi*1000), color='k', linestyle=':', alpha=0.5)
axes[1, 1].set_title('RLC直列回路の周波数応答')
axes[1, 1].set_xlabel('周波数 [kHz]')
axes[1, 1].set_ylabel('電流 [mA]')
axes[1, 1].legend()
axes[1, 1].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('damped_forced_physics.png', dpi=150, bbox_inches='tight')
plt.show()
まとめ
- 減衰振動は $\zeta$ により3つに分類、工学的用途が異なる
- Q値はエネルギー保持能力の指標(高Q→鋭い共振ピーク)
- 機械振動とRLC回路は数学的に等価
- 共振は構造破壊の原因にも、フィルタ設計の基盤にもなる
次のステップとして、以下の記事も参考にしてください。