減衰振動と強制振動の理論を丁寧に導出する

1940年11月7日、アメリカ・ワシントン州のタコマナローズ橋が、わずか時速64kmの風を受けて激しくねじれ、崩壊しました。橋の設計上の固有振動数と風による周期的な力がかみ合い、振幅がどんどん増大する共振が起きたのです。この出来事は、振動現象を甘く見ることの危険性を世界に知らしめました。

しかし共振は、いつも破壊的なわけではありません。車のサスペンションは路面からの衝撃を素早く吸収するために、減衰を絶妙に調整しています。地震時のビルでは、制振ダンパーが建物の揺れを抑えることで倒壊を防ぎます。楽器では、弦や管の共振を意図的に利用して美しい音色を生み出しています。

このように、減衰と共振の理解は工学のあらゆる場面で不可欠です。具体的には、以下のような分野で直接使われます。

  • 機械工学: エンジンのマウント設計、ギアの振動解析、ショックアブソーバーの最適設計
  • 土木・建築工学: 耐震設計、制振ダンパー、橋梁の風洞試験
  • 電気・電子工学: RLC回路のフィルタ設計、水晶振動子、アンテナの周波数選択
  • 制御工学: 2次遅れ系の応答PID制御のチューニング

本記事では、単振動を出発点に、減衰振動の3つのケース(過減衰・臨界減衰・不足減衰)を丁寧に導出し、さらに強制振動の定常解と共振現象を数学的に記述します。最後にPythonで全てを可視化し、理論と直感の両方を固めます。

本記事の内容

  • 減衰振動の運動方程式と3つのケースの解
  • 減衰比 $\zeta$ の物理的意味と制御工学との接続
  • 強制振動における過渡応答と定常応答
  • 共振現象の数学的記述、Q値と帯域幅
  • Pythonでの可視化と結果の考察

前提知識

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

減衰振動の直感的理解

なぜ減衰を考える必要があるのか

単振動では、バネにつながれた質点は永遠に同じ振幅で揺れ続けました。しかし現実にはそのような系は存在しません。空気抵抗、内部摩擦、材料のヒステリシスなど、運動エネルギーを熱や音に変換する要因が必ず存在します。これらを総称して減衰(damping)と呼びます。

ドアクローザーを思い浮かべてください。ドアを開いて手を離すと、ドアはゆっくりと閉じていきます。良いドアクローザーは、ドアをバタンと叩きつけることなく、しかもあまり時間をかけずに、静かに閉じます。これが「ちょうどいい減衰」の典型例です。

もし減衰が弱すぎると、ドアはバタンバタンと何度も跳ね返ってからようやく閉まります(不足減衰)。逆に減衰が強すぎると、ドアはゆーっくりと閉まり、なかなか完全には閉じきりません(過減衰)。そしてその中間に、振動せずに最速で閉じる「臨界」の状態があります(臨界減衰)。

この3つのケースを、数学的に厳密に導出するのがこのセクションの目標です。

運動方程式の導出

質量 $m$ の物体がバネ定数 $k$ のバネに接続されており、さらに速度に比例する減衰力を受ける場合を考えます。ニュートンの運動法則に従って、物体に作用する力を全て書き下しましょう。

  • 復元力(バネの力): $F_{\text{spring}} = -kx$。変位 $x$ に比例し、平衡位置に戻す向きに働きます。
  • 減衰力(粘性抵抗): $F_{\text{damp}} = -c\dot{x}$。速度 $\dot{x}$ に比例し、運動を妨げる向きに働きます。ここで $c > 0$ は減衰係数と呼ばれる定数です。

$F = ma$ に従って運動方程式を立てると、次のようになります。

$$ m\ddot{x} = -kx – c\dot{x} $$

これを整理すると、減衰振動の基本的な運動方程式が得られます。

$$ \begin{equation} m\ddot{x} + c\dot{x} + kx = 0 \end{equation} $$

ここで、2つの重要なパラメータを導入します。

  • 固有角振動数: $\omega_0 = \sqrt{k/m}$。減衰がない場合の振動数で、系の「本来の速さ」を表します。
  • 減衰係数: $\gamma = c/(2m)$。減衰の強さを質量で規格化したもので、減衰の「時定数の逆数」に相当します。

これらを用いると、運動方程式は次のように簡潔に書けます。

$$ \begin{equation} \ddot{x} + 2\gamma\dot{x} + \omega_0^2 x = 0 \end{equation} $$

この形は2階線形定数係数同次微分方程式であり、常微分方程式の標準的な手法で解くことができます。 $2\gamma$ という係数の「2」は後の計算で自然に現れるため、慣例的に最初から因数に含めています。

運動方程式が得られたので、次はこれを解いていきましょう。解の形は $\gamma$ と $\omega_0$ の大小関係によって劇的に変わります。

特性方程式と解の構造

2階線形定数係数微分方程式の一般的な解法として、まず $x = e^{\lambda t}$ の形の解を仮定します。この仮定は「指数関数は微分しても形が変わらない」という性質を利用したものです。

$x = e^{\lambda t}$ を運動方程式に代入すると、$\dot{x} = \lambda e^{\lambda t}$、$\ddot{x} = \lambda^2 e^{\lambda t}$ より、次が得られます。

$$ \lambda^2 e^{\lambda t} + 2\gamma \lambda e^{\lambda t} + \omega_0^2 e^{\lambda t} = 0 $$

$e^{\lambda t} \neq 0$ なので、両辺を $e^{\lambda t}$ で割ることができます。

$$ \begin{equation} \lambda^2 + 2\gamma\lambda + \omega_0^2 = 0 \end{equation} $$

これが特性方程式(characteristic equation)です。2次方程式の解の公式を適用すると、次のようになります。

$$ \begin{equation} \lambda = -\gamma \pm \sqrt{\gamma^2 – \omega_0^2} \end{equation} $$

ここで重要なのは、根号の中身 $\gamma^2 – \omega_0^2$ の符号です。この符号によって解の性質が根本的に異なり、先ほどドアクローザーで見た3つのケースに正確に対応します。

  • $\gamma < \omega_0$(減衰が弱い): 根号の中が負 → 複素数の解 → 振動する(不足減衰)
  • $\gamma = \omega_0$(減衰がちょうど): 根号の中がゼロ → 重根 → 最速で収束(臨界減衰)
  • $\gamma > \omega_0$(減衰が強い): 根号の中が正 → 2つの負の実数解 → ゆっくり収束(過減衰)

以降、この3つのケースを順に導出します。

ケース1: 不足減衰($\gamma < \omega_0$)

日常で最もよく目にする振動パターンです。揺れながら徐々に小さくなっていく様子は、ギターの弦をはじいた後の振動、ブランコが徐々に止まる様子などで馴染みがあるでしょう。

$\gamma < \omega_0$ のとき、$\gamma^2 - \omega_0^2 < 0$ なので、根号の中が負になります。そこで減衰振動数 $\omega_d$ を次のように定義します。

$$ \begin{equation} \omega_d = \sqrt{\omega_0^2 – \gamma^2} \end{equation} $$

$\omega_d$ は減衰がある場合の実効的な振動数で、必ず固有振動数 $\omega_0$ より小さくなります。これは直感的にも理にかなっています。減衰がエネルギーを奪うことで、振動はわずかに「遅く」なるのです。

特性方程式の解は次のように書けます。

$$ \lambda = -\gamma \pm j\omega_d $$

ここで $j = \sqrt{-1}$ は虚数単位です。一般解は $e^{\lambda_1 t}$ と $e^{\lambda_2 t}$ の線形結合ですが、これをオイラーの公式 $e^{j\theta} = \cos\theta + j\sin\theta$ を用いて実数形に直すと、次のようになります。

$$ \begin{equation} x(t) = Ae^{-\gamma t}\cos(\omega_d t + \phi) \end{equation} $$

ここで $A$ と $\phi$ は初期条件で決まる定数です。この式の構造を読み解きましょう。

  • $\cos(\omega_d t + \phi)$: 角振動数 $\omega_d$ で振動する部分です。
  • $e^{-\gamma t}$: 振幅を時間とともに指数的に小さくする「包絡線」です。

つまり不足減衰の解は、指数関数的に減衰する包絡線の中で振動するという、直感通りの振る舞いを示します。振幅が元の $1/e$ 倍(約37%)に減るまでの時間は $\tau = 1/\gamma$ であり、これを時定数と呼びます。

ケース2: 臨界減衰($\gamma = \omega_0$)

ドアクローザーの理想的な状態がこのケースです。振動せずに、かつ最も速く平衡位置に戻ります。

$\gamma = \omega_0$ のとき、特性方程式は重根 $\lambda = -\gamma$ を持ちます。重根の場合、$e^{-\gamma t}$ だけでは2つの独立な解が得られません。常微分方程式の理論で学ぶように、重根のときは $te^{-\gamma t}$ というもう1つの独立解が存在します。

したがって一般解は次のようになります。

$$ \begin{equation} x(t) = (C_1 + C_2 t)e^{-\gamma t} \end{equation} $$

$C_1$ と $C_2$ は初期条件で決まります。この解の特徴は以下の通りです。

  • $t$ の1次式 $(C_1 + C_2 t)$ と指数減衰 $e^{-\gamma t}$ の積です。
  • 短い時間では $C_1 + C_2 t$ の1次式部分が支配的で、長い時間では $e^{-\gamma t}$ の減衰が支配的になります。
  • 結果として、初期変位から一度もオーバーシュートせずに(あるいはちょうど1回だけ平衡を横切って)速やかにゼロに収束します。

臨界減衰は、振動しない領域の中で最速の応答を実現するため、精密計器のメーターの針、車のショックアブソーバー、地震計の振動子など、「素早く静止してほしい」系の設計指針として用いられます。

ケース3: 過減衰($\gamma > \omega_0$)

お風呂の栓を抜いた後にゆっくり沈んでいくゴムアヒルのように、のんびりと平衡位置に戻るケースです。

$\gamma > \omega_0$ のとき、$\gamma^2 – \omega_0^2 > 0$ なので特性方程式の2つの解はどちらも実数です。

$$ \lambda_1 = -\gamma + \sqrt{\gamma^2 – \omega_0^2}, \quad \lambda_2 = -\gamma – \sqrt{\gamma^2 – \omega_0^2} $$

$\gamma > 0$ かつ $\sqrt{\gamma^2 – \omega_0^2} < \gamma$ なので、$\lambda_1$ も $\lambda_2$ も負の実数です。一般解は次のようになります。

$$ \begin{equation} x(t) = C_1 e^{\lambda_1 t} + C_2 e^{\lambda_2 t} \end{equation} $$

2つの指数減衰の重ね合わせであり、振動は一切起きません。$|\lambda_2| > |\lambda_1|$ なので、長時間では $e^{\lambda_1 t}$ の方がゆっくり減衰し、系全体の緩和速度を支配します。

過減衰の系は臨界減衰よりも平衡位置への到達に時間がかかります。減衰を「強くしすぎた」状態であり、たとえば油圧シリンダーに粘度の高すぎるオイルを入れた場合がこれに相当します。

ここまでで3つのケースを見てきました。では、この3つのケースを1つのパラメータで統一的に分類する方法はないでしょうか。次に紹介する減衰比 $\zeta$ がまさにその役割を果たします。

減衰比 $\zeta$ の物理的意味

減衰比の定義

減衰の強さを表す指標として、減衰比(damping ratio)$\zeta$ を次のように定義します。

$$ \begin{equation} \zeta = \frac{\gamma}{\omega_0} = \frac{c}{2\sqrt{mk}} = \frac{c}{2m\omega_0} \end{equation} $$

$\zeta$ は無次元量であり、「系の減衰が臨界減衰の何倍か」を表します。3つのケースとの対応は次の通りです。

減衰比の範囲 ケース 特徴
$0 < \zeta < 1$ 不足減衰 振動しながら減衰
$\zeta = 1$ 臨界減衰 振動せず最速で収束
$\zeta > 1$ 過減衰 振動せずゆっくり収束

$\zeta$ を用いると、運動方程式は次のように書けます。

$$ \begin{equation} \ddot{x} + 2\zeta\omega_0\dot{x} + \omega_0^2 x = 0 \end{equation} $$

この形は制御工学で頻繁に登場する2次系の標準形そのものです。

制御工学との接続

制御工学では、2次遅れ系伝達関数を次のように表します。

$$ G(s) = \frac{\omega_0^2}{s^2 + 2\zeta\omega_0 s + \omega_0^2} $$

これはまさに上で導出した減衰振動の運動方程式をラプラス変換したものに対応します。つまり、力学で学ぶ減衰振動のパラメータ $\zeta$ と $\omega_0$ は、そのまま制御工学の設計パラメータとして使えるのです。

制御工学では、$\zeta$ の値が系の応答特性を決定的に左右します。

  • $\zeta = 0.707$($= 1/\sqrt{2}$): オーバーシュートが約4.3%に抑えられ、しばしば「良い妥協点」として採用されます。
  • $\zeta \ll 1$: 応答は振動的で、オーバーシュートが大きくなります。PID制御のゲイン調整でPゲインを大きくしすぎると、この状態になりがちです。
  • $\zeta \gg 1$: 応答がのろくなり、目標値への到達に時間がかかります。

フィードバック制御系を設計するとき、「どの程度の減衰比にするか」は最も基本的かつ重要な設計判断の一つです。この判断を正しく行うためには、ここで導出した減衰振動の理論が不可欠です。

減衰比の物理的意味を理解したところで、次は系に外部から周期的な力が加わる場合を考えましょう。これが強制振動の問題です。

強制振動の理論

日常の直感: ブランコを押す

強制振動を理解するために、ブランコを押す場面を考えてみましょう。

子どもがブランコに乗っているとき、大人がタイミングよく押してあげると、ブランコの振幅はどんどん大きくなります。このとき大人が押すリズム(外力の周波数)は、ブランコが自然に揺れるリズム(固有振動数)にほぼ一致しています。これが共振の原理です。

逆に、ブランコの揺れとは全く無関係なタイミングでむやみに押すと、ブランコはちぐはぐに揺れるだけで、振幅は大きくなりません。つまり、外力の振動数と系の固有振動数の関係が、応答の大きさを決定的に支配しているのです。

この直感を数式で表現していきましょう。

運動方程式

質量 $m$ のバネ-ダンパー系に、周期的な外力 $F(t) = F_0\cos\Omega t$ が加わる場合を考えます。ここで $F_0$ は外力の振幅、$\Omega$ は外力の角振動数です。

ニュートンの運動法則から、運動方程式は次のようになります。

$$ m\ddot{x} + c\dot{x} + kx = F_0\cos\Omega t $$

先ほど定義した $\gamma = c/(2m)$、$\omega_0 = \sqrt{k/m}$ を用いて書き換えます。

$$ \begin{equation} \ddot{x} + 2\gamma\dot{x} + \omega_0^2 x = \frac{F_0}{m}\cos\Omega t \end{equation} $$

これは2階線形定数係数非同次微分方程式です。右辺がゼロの同次方程式の一般解(余関数 あるいは 過渡解)は既に求めました。あとは右辺を満たす特殊解定常解)を見つければ、一般解が完成します。

過渡応答と定常応答の区別

強制振動の解は、次の2つの部分から成り立ちます。

$$ x(t) = \underbrace{x_h(t)}_{\text{過渡応答}} + \underbrace{x_p(t)}_{\text{定常応答}} $$

過渡応答 $x_h(t)$ は同次方程式の解であり、前のセクションで求めた減衰振動の解です。減衰がある限り、$e^{-\gamma t}$ の因子によって時間とともにゼロに向かいます。いわば「系が初期条件の記憶を忘れていく」過程です。

定常応答 $x_p(t)$ は外力に追従する振動であり、$t \to \infty$ でも消えません。十分時間が経てば過渡応答は無視できるようになり、系は外力と同じ周波数 $\Omega$ で振動し続けます。

実用上、最も重要なのは定常応答です。なぜなら、機械が定常的に運転されているときの振動を知りたい場合が圧倒的に多いからです。過渡応答は起動時にしか現れず、十分な時間が経てば消えてしまいます。

ただし、過渡応答が無視できない場合もあります。地震のように突発的に始まる外力では、まさに過渡応答が建物に最大の応力をもたらす場合があるのです。過渡応答の重要性は2次遅れ系の応答の記事でも詳しく扱っています。

定常解の導出

定常解を求めるために、$x_p(t) = X\cos(\Omega t – \delta)$ の形を仮定します。ここで $X$ は振幅、$\delta$ は外力に対する位相の遅れです。

この仮定を運動方程式に代入して展開していきます。まず $x_p$ の微分を計算します。

$$ \dot{x}_p = -X\Omega\sin(\Omega t – \delta) $$

$$ \ddot{x}_p = -X\Omega^2\cos(\Omega t – \delta) $$

これらを運動方程式に代入すると、次のようになります。

$$ -X\Omega^2\cos(\Omega t – \delta) – 2\gamma X\Omega\sin(\Omega t – \delta) + \omega_0^2 X\cos(\Omega t – \delta) = \frac{F_0}{m}\cos\Omega t $$

左辺を整理するために、$\cos(\Omega t – \delta)$ の係数と $\sin(\Omega t – \delta)$ の係数をそれぞれまとめます。

$$ X(\omega_0^2 – \Omega^2)\cos(\Omega t – \delta) – 2\gamma X\Omega\sin(\Omega t – \delta) = \frac{F_0}{m}\cos\Omega t $$

右辺の $\cos\Omega t$ を加法定理で展開します。

$$ \cos\Omega t = \cos[(\Omega t – \delta) + \delta] = \cos(\Omega t – \delta)\cos\delta – \sin(\Omega t – \delta)\sin\delta $$

$\cos(\Omega t – \delta)$ と $\sin(\Omega t – \delta)$ は線形独立なので、両辺の係数を比較します。

$\cos(\Omega t – \delta)$ の係数を比較すると、

$$ X(\omega_0^2 – \Omega^2) = \frac{F_0}{m}\cos\delta $$

$\sin(\Omega t – \delta)$ の係数を比較すると、

$$ 2\gamma X\Omega = \frac{F_0}{m}\sin\delta $$

これら2式を $\sin^2\delta + \cos^2\delta = 1$ に代入して $\delta$ を消去し、$X$ を求めます。上の2式の両辺を2乗してから足し合わせると、次のようになります。

$$ X^2\left[(\omega_0^2 – \Omega^2)^2 + (2\gamma\Omega)^2\right] = \left(\frac{F_0}{m}\right)^2 $$

$X > 0$ なので、$X$ について解くと振幅の公式が得られます。

$$ \begin{equation} X = \frac{F_0/m}{\sqrt{(\omega_0^2 – \Omega^2)^2 + (2\gamma\Omega)^2}} \end{equation} $$

また、2つの係数比較の式の比をとると、位相遅れの公式が得られます。

$$ \frac{\sin\delta}{\cos\delta} = \tan\delta = \frac{2\gamma\Omega}{\omega_0^2 – \Omega^2} $$

すなわち、

$$ \begin{equation} \delta = \arctan\frac{2\gamma\Omega}{\omega_0^2 – \Omega^2} \end{equation} $$

これらの結果は非常に重要です。振幅 $X$ と位相遅れ $\delta$ は、外力の角振動数 $\Omega$ の関数であり、$\Omega$ を変えると系の応答が劇的に変化することを示しています。

定常解の一般形が得られたので、次は振幅が最大になる条件、すなわち共振について詳しく調べましょう。

共振現象

共振周波数の導出

共振とは、外力の周波数が系の固有振動数に近いとき、応答の振幅が著しく増大する現象です。数学的には、振幅 $X(\Omega)$ を最大にする $\Omega$ を求めることに相当します。

振幅の式を改めて確認します。

$$ X(\Omega) = \frac{F_0/m}{\sqrt{(\omega_0^2 – \Omega^2)^2 + (2\gamma\Omega)^2}} $$

$X$ を最大にするには、分母を最小にすればよいです。分母の2乗を $f(\Omega^2)$ とおきます。

$$ f(u) = (\omega_0^2 – u)^2 + 4\gamma^2 u \quad \text{ここで } u = \Omega^2 $$

$f(u)$ を $u$ で微分してゼロとおきます。

$$ f'(u) = -2(\omega_0^2 – u) + 4\gamma^2 = 0 $$

これを $u$ について解くと、次のようになります。

$$ u = \omega_0^2 – 2\gamma^2 $$

したがって、共振角振動数は次のように求まります。

$$ \begin{equation} \Omega_{\text{res}} = \sqrt{\omega_0^2 – 2\gamma^2} \end{equation} $$

ただし、この解が実数であるためには $\omega_0^2 – 2\gamma^2 > 0$、すなわち $\gamma < \omega_0/\sqrt{2}$(減衰比で書けば $\zeta < 1/\sqrt{2} \approx 0.707$)である必要があります。減衰がこれよりも大きいと、振幅の極大は存在せず、$\Omega = 0$(静的な力)が最大応答を与えます。

注意すべき重要な点があります。共振角振動数 $\Omega_{\text{res}}$ は、固有角振動数 $\omega_0$ とも、減衰振動数 $\omega_d = \sqrt{\omega_0^2 – \gamma^2}$ とも異なります。3者の関係は次の通りです。

$$ \Omega_{\text{res}} < \omega_d < \omega_0 $$

減衰が小さい場合($\gamma \ll \omega_0$)にはこれらの差は無視でき、$\Omega_{\text{res}} \approx \omega_d \approx \omega_0$ と近似できます。

共振時の振幅

$\Omega = \Omega_{\text{res}}$ を振幅の式に代入して、共振時の最大振幅を求めます。

$\omega_0^2 – \Omega_{\text{res}}^2 = 2\gamma^2$ を代入すると、分母の根号の中身は次のようになります。

$$ (2\gamma^2)^2 + 4\gamma^2(\omega_0^2 – 2\gamma^2) = 4\gamma^4 + 4\gamma^2\omega_0^2 – 8\gamma^4 = 4\gamma^2\omega_0^2 – 4\gamma^4 = 4\gamma^2(\omega_0^2 – \gamma^2) $$

ここで $\omega_d^2 = \omega_0^2 – \gamma^2$ を用いると、

$$ X_{\max} = \frac{F_0/m}{2\gamma\omega_d} $$

減衰が小さい場合は $\omega_d \approx \omega_0$ なので、次のように近似できます。

$$ \begin{equation} X_{\max} \approx \frac{F_0}{2m\gamma\omega_0} = \frac{F_0}{c\omega_0} \end{equation} $$

この式から、共振時の振幅は減衰係数 $c$ に反比例することが分かります。減衰が小さいほど共振振幅は大きくなり、$c \to 0$ では $X_{\max} \to \infty$ と発散します。これがタコマナローズ橋のような構造物破壊の数学的背景です。

Q値(共振の鋭さ)

共振の「鋭さ」を定量的に表す指標として、Q値(Quality factor)が用いられます。Q値は次のように定義されます。

$$ \begin{equation} Q = \frac{\omega_0}{2\gamma} = \frac{1}{2\zeta} \end{equation} $$

Q値が大きいほど、共振ピークが鋭く、共振時の振幅が大きくなります。Q値の物理的な意味をいくつかの観点から見てみましょう。

エネルギーの観点: Q値は「1周期あたりに蓄えられるエネルギー」と「1周期あたりに失われるエネルギー」の比の $2\pi$ 倍として定義されることもあります。

$$ Q = 2\pi \times \frac{\text{蓄積エネルギー}}{\text{1周期あたりの損失エネルギー}} $$

Q値が100の系では、1周期あたり蓄積エネルギーのわずか約6.3%しか失われません。だからこそ共振時にエネルギーが蓄積されて大振幅になるのです。

帯域幅の観点: 共振曲線において、最大振幅の $1/\sqrt{2}$ 倍(電力で半分、すなわち -3dB)になる2つの周波数 $\Omega_1$ と $\Omega_2$ の間隔を帯域幅 $\Delta\Omega$ と呼びます。

$$ \begin{equation} Q \approx \frac{\omega_0}{\Delta\Omega} \end{equation} $$

Q値が高いほど帯域幅が狭く、特定の周波数のみに強く応答します。これはフーリエ変換の観点で見ると、系が周波数フィルタとして機能していることを意味します。

具体的な応用例を挙げると、以下のようになります。

典型的なQ値 用途
水晶振動子 10,000 〜 100,000 時計の周波数基準
バイオリンの弦 約 1,000 楽器の音色
ラジオのLC回路 100 〜 300 周波数選択
車のサスペンション 2 〜 5 乗り心地と安定性のバランス

Q値が高い系ほど「特定の周波数を選り好みする」性質が強く、Q値が低い系ほど「広い周波数範囲で均等に応答する」性質を持ちます。

位相遅れの振る舞い

振幅と同様に重要なのが、位相遅れ $\delta$ の周波数依存性です。

$$ \delta = \arctan\frac{2\gamma\Omega}{\omega_0^2 – \Omega^2} $$

位相遅れの挙動は、外力の周波数の3つの領域で質的に異なります。

  • 低周波数側($\Omega \ll \omega_0$): $\delta \approx 0$。外力と応答がほぼ同位相です。系がバネの復元力に支配される「バネ領域」であり、外力のゆっくりした変化に追従できます。
  • 共振付近($\Omega \approx \omega_0$): $\delta \approx \pi/2$(90度)。応答が外力から四分の一周期分遅れます。この条件で外力は常に速度と同じ向きに働き、最も効率的にエネルギーを注入できるのです。ブランコで押すタイミングが最も効果的な瞬間に相当します。
  • 高周波数側($\Omega \gg \omega_0$): $\delta \approx \pi$(180度)。応答が外力と逆位相になります。系の慣性が支配する「慣性領域」であり、外力の速い変化についていけません。

この低周波→共振→高周波にかけての位相遷移は、減衰が小さいほど急峻に起こります。逆に減衰が大きいと、位相遷移はなだらかです。

共振現象の理論を一通り整理しました。次は、ここまでの理論をPythonコードで可視化し、数式の予測を目で確認していきましょう。

Pythonでの可視化

ここでは4つの可視化を行います。まず、減衰比 $\zeta$ を変えた場合の自由振動を比較し、次に共振曲線(振幅-周波数応答)、位相-周波数応答、そして強制振動の過渡応答と定常応答を見ます。

減衰振動の3ケースの比較

最初に、$\zeta = 0.1$(不足減衰)、$\zeta = 0.5$(不足減衰)、$\zeta = 1.0$(臨界減衰)、$\zeta = 2.0$(過減衰)の4つのケースを比較します。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

# パラメータ設定
omega_0 = 2 * np.pi  # 固有角振動数 [rad/s]
t = np.linspace(0, 5, 2000)  # 時間 [s]

# 減衰比の4ケース
zeta_values = [0.1, 0.5, 1.0, 2.0]
labels = [
    r"Underdamped ($\zeta=0.1$)",
    r"Underdamped ($\zeta=0.5$)",
    r"Critically damped ($\zeta=1.0$)",
    r"Overdamped ($\zeta=2.0$)",
]
colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728"]

fig, ax = plt.subplots(figsize=(10, 6))

for zeta, label, color in zip(zeta_values, labels, colors):
    gamma = zeta * omega_0

    # 運動方程式: dx/dt = v, dv/dt = -2γv - ω₀²x
    def eom(state, t, g=gamma, w0=omega_0):
        x, v = state
        return [v, -2 * g * v - w0**2 * x]

    # 初期条件: x(0)=1, v(0)=0
    sol = odeint(eom, [1.0, 0.0], t)
    ax.plot(t, sol[:, 0], linewidth=2, label=label, color=color)

# 包絡線 (ζ=0.1 の場合)
gamma_env = 0.1 * omega_0
ax.plot(t, np.exp(-gamma_env * t), "k--", linewidth=1, alpha=0.5, label="Envelope")
ax.plot(t, -np.exp(-gamma_env * t), "k--", linewidth=1, alpha=0.5)

ax.axhline(y=0, color="k", linewidth=0.5)
ax.set_xlabel("Time [s]", fontsize=13)
ax.set_ylabel("Displacement x", fontsize=13)
ax.set_title("Comparison of Damped Oscillations", fontsize=15)
ax.legend(fontsize=10, loc="upper right")
ax.grid(True, alpha=0.3)
ax.set_xlim(0, 5)
ax.set_ylim(-1.1, 1.1)
plt.tight_layout()
plt.show()

このグラフからは、理論で予測した3つのケースの質的な違いが明確に確認できます。$\zeta = 0.1$ の不足減衰では、振動しながらゆっくりと振幅が減少し、破線で示した包絡線 $e^{-\gamma t}$ の内側に収まっている様子が見て取れます。$\zeta = 0.5$ でも振動は残りますが、振幅の減衰が速くなっています。$\zeta = 1.0$ の臨界減衰は振動せずに最速でゼロに収束し、$\zeta = 2.0$ の過減衰は臨界減衰よりもさらにゆっくりとゼロに近づいています。特に $t \approx 1$ 秒付近では、臨界減衰がほぼゼロに到達しているのに対し、過減衰はまだ有意な変位を残しており、「臨界減衰が最速」であるという理論的予測と一致しています。

共振曲線(振幅-周波数応答)

次に、外力の周波数を変えたときの定常振幅を描画します。複数の減衰比で比較することで、共振の鋭さとQ値の関係を視覚的に確認します。

import numpy as np
import matplotlib.pyplot as plt

omega_0 = 2 * np.pi  # 固有角振動数 [rad/s]
Omega = np.linspace(0.01, 3 * omega_0, 1000)  # 外力の角振動数
F0_m = 1.0  # F₀/m

# 静的変位 (参照用)
X_static = F0_m / omega_0**2

zeta_list = [0.05, 0.1, 0.2, 0.5, 1.0]
colors = ["#e41a1c", "#ff7f00", "#4daf4a", "#377eb8", "#984ea3"]

fig, ax = plt.subplots(figsize=(10, 6))

for zeta, color in zip(zeta_list, colors):
    gamma = zeta * omega_0
    # 振幅の公式
    X = F0_m / np.sqrt((omega_0**2 - Omega**2) ** 2 + (2 * gamma * Omega) ** 2)
    # 無次元化: 静的変位で割る
    ax.plot(
        Omega / omega_0,
        X / X_static,
        linewidth=2,
        label=rf"$\zeta={zeta}$ (Q={1/(2*zeta):.1f})",
        color=color,
    )

ax.axvline(x=1.0, color="gray", linestyle=":", linewidth=1, alpha=0.5)
ax.set_xlabel(r"$\Omega / \omega_0$", fontsize=13)
ax.set_ylabel(r"$X / X_{\mathrm{static}}$", fontsize=13)
ax.set_title("Resonance Curves (Amplitude-Frequency Response)", fontsize=15)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_xlim(0, 3)
ax.set_ylim(0, 12)
plt.tight_layout()
plt.show()

このグラフは、共振現象の本質を端的に示しています。$\zeta = 0.05$(Q = 10)の曲線は $\Omega/\omega_0 \approx 1$ 付近に非常に鋭いピークを持ち、無次元振幅は静的変位の約10倍に達しています。これはQ値が10であることと整合します(共振時の振幅増倍率はおおよそQ値に等しくなります)。$\zeta$ が大きくなるにつれてピークは低くなり、帯域幅は広がります。$\zeta = 1.0$(Q = 0.5)ではピークが完全に消え、振幅は $\Omega/\omega_0$ の増加とともに単調に減少しています。これは先ほど理論的に示した「$\zeta > 1/\sqrt{2}$ で共振ピークが消える」という予測と一致しています。

また、全ての曲線が $\Omega/\omega_0 \gg 1$ の高周波領域でゼロに漸近していることが確認できます。これは高周波の外力に対して系が追従できないことを示しており、力学系がローパスフィルタとして機能することの証拠です。

位相-周波数応答

振幅応答と対をなす重要な情報が位相応答です。

import numpy as np
import matplotlib.pyplot as plt

omega_0 = 2 * np.pi
Omega = np.linspace(0.01, 3 * omega_0, 1000)

zeta_list = [0.05, 0.1, 0.2, 0.5, 1.0]
colors = ["#e41a1c", "#ff7f00", "#4daf4a", "#377eb8", "#984ea3"]

fig, ax = plt.subplots(figsize=(10, 6))

for zeta, color in zip(zeta_list, colors):
    gamma = zeta * omega_0
    # 位相遅れの計算 (arctan2 で正しい象限を得る)
    delta = np.arctan2(2 * gamma * Omega, omega_0**2 - Omega**2)
    ax.plot(
        Omega / omega_0,
        np.degrees(delta),
        linewidth=2,
        label=rf"$\zeta={zeta}$",
        color=color,
    )

ax.axhline(y=90, color="gray", linestyle=":", linewidth=1, alpha=0.5)
ax.axvline(x=1.0, color="gray", linestyle=":", linewidth=1, alpha=0.5)
ax.set_xlabel(r"$\Omega / \omega_0$", fontsize=13)
ax.set_ylabel(r"Phase lag $\delta$ [deg]", fontsize=13)
ax.set_title("Phase-Frequency Response", fontsize=15)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_xlim(0, 3)
ax.set_ylim(0, 180)
plt.tight_layout()
plt.show()

位相-周波数応答のグラフから、いくつかの重要な特徴が読み取れます。まず、全ての減衰比において $\Omega = \omega_0$ で位相遅れがちょうど90度になっていることが確認できます。これは減衰比に依存しない普遍的な性質であり、$\delta = \arctan[2\gamma\omega_0 / (\omega_0^2 – \omega_0^2)]$ の分母がゼロになって $\delta = 90°$ となることから数式的にも確認できます。次に、$\zeta = 0.05$ では0度から180度への遷移が非常に急峻で、まるでステップ関数のように見えます。$\zeta = 1.0$ ではなだらかな曲線を描いています。位相の急峻な遷移は、共振曲線の鋭いピークと表裏一体の関係にあります。この位相応答のグラフは、伝達関数のボード線図(Bode plot)の位相プロットに他なりません。

強制振動の過渡応答と定常応答

最後に、強制振動の時間応答を数値的に解き、過渡応答と定常応答の関係を視覚的に確認します。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

omega_0 = 2 * np.pi  # 固有角振動数
zeta = 0.1
gamma = zeta * omega_0
Omega_force = omega_0 * 0.95  # 共振に近い外力周波数
F0 = 1.0  # 外力の振幅
t = np.linspace(0, 15, 3000)

# 強制振動の運動方程式
def forced_eom(state, t, g=gamma, w0=omega_0, Om=Omega_force, f0=F0):
    x, v = state
    return [v, -2 * g * v - w0**2 * x + f0 * np.cos(Om * t)]

# 初期条件: 静止状態から出発
sol = odeint(forced_eom, [0.0, 0.0], t)

# 定常解の振幅と位相
X_ss = F0 / np.sqrt((omega_0**2 - Omega_force**2) ** 2 + (2 * gamma * Omega_force) ** 2)
delta_ss = np.arctan2(2 * gamma * Omega_force, omega_0**2 - Omega_force**2)
x_steady = X_ss * np.cos(Omega_force * t - delta_ss)

fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)

# 上段: 全体の応答と定常解の比較
axes[0].plot(t, sol[:, 0], "b-", linewidth=1.2, label="Full response (transient + steady)")
axes[0].plot(t, x_steady, "r--", linewidth=1.5, label="Steady-state only", alpha=0.8)
axes[0].set_ylabel("Displacement x", fontsize=13)
axes[0].set_title(
    rf"Forced Oscillation ($\zeta={zeta}$, $\Omega/\omega_0={Omega_force/omega_0:.2f}$)",
    fontsize=15,
)
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3)

# 下段: 過渡成分 (全体 - 定常) を抽出
x_transient = sol[:, 0] - x_steady
axes[1].plot(t, x_transient, "g-", linewidth=1.2, label="Transient component")
axes[1].plot(t, np.exp(-gamma * t) * np.max(np.abs(x_transient[:100])), "k--",
             linewidth=1, alpha=0.5, label=r"$e^{-\gamma t}$ envelope")
axes[1].plot(t, -np.exp(-gamma * t) * np.max(np.abs(x_transient[:100])), "k--",
             linewidth=1, alpha=0.5)
axes[1].set_xlabel("Time [s]", fontsize=13)
axes[1].set_ylabel("Displacement x", fontsize=13)
axes[1].set_title("Transient Component", fontsize=15)
axes[1].legend(fontsize=10)
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

上段のグラフでは、青い実線(全体の応答)が最初のうちは赤い破線(定常解)から大きくずれていますが、時間が経つにつれて徐々に定常解に収束していく様子が見て取れます。初期の「うねり」は、固有振動数 $\omega_0$ と外力の振動数 $\Omega$ の差によるうなり(beat)に似た現象であり、2つの振動数が近いほどうなりの周期が長くなります。

下段のグラフは過渡成分(全体の応答から定常解を差し引いたもの)を示しています。過渡成分は $e^{-\gamma t}$ の包絡線(黒い破線)に従って指数的に減衰しており、$t \approx 5$ 秒以降ではほぼゼロになっています。これは「過渡応答は減衰によって消え、最終的には定常応答のみが残る」という理論的予測を明確に裏付けています。時定数 $\tau = 1/\gamma \approx 0.25$ 秒なので、$5\tau$ 程度(約1.3秒)経てば過渡成分はほぼ消えるはずですが、外力が共振に近い周波数であるため、うなりの効果で見かけ上の減衰がやや遅くなっています。

Q値と帯域幅の可視化

Q値の概念をさらに具体的にするために、共振曲線上で帯域幅を明示したグラフを作成します。

import numpy as np
import matplotlib.pyplot as plt

omega_0 = 2 * np.pi
Omega = np.linspace(0.01, 2.5 * omega_0, 2000)
F0_m = 1.0
X_static = F0_m / omega_0**2

zeta = 0.1
gamma = zeta * omega_0
Q = 1 / (2 * zeta)

# 振幅の計算
X = F0_m / np.sqrt((omega_0**2 - Omega**2) ** 2 + (2 * gamma * Omega) ** 2)
X_norm = X / X_static

# 共振周波数と最大振幅
Omega_res = np.sqrt(omega_0**2 - 2 * gamma**2)
X_max = np.max(X_norm)

# -3dB (1/√2) レベル
level_3dB = X_max / np.sqrt(2)

# 帯域幅の近似: Ω₁, Ω₂ を数値的に求める
idx_peak = np.argmax(X_norm)
# ピークの左側
left_half = X_norm[:idx_peak]
idx_left = np.argmin(np.abs(left_half - level_3dB))
# ピークの右側
right_half = X_norm[idx_peak:]
idx_right = idx_peak + np.argmin(np.abs(right_half - level_3dB))

Omega_1 = Omega[idx_left]
Omega_2 = Omega[idx_right]
bandwidth = Omega_2 - Omega_1

fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(Omega / omega_0, X_norm, "b-", linewidth=2, label=rf"$\zeta={zeta}$ (Q={Q:.1f})")

# ピーク
ax.plot(Omega_res / omega_0, X_max, "ro", markersize=8, zorder=5, label="Resonance peak")

# -3dBライン
ax.axhline(y=level_3dB, color="gray", linestyle="--", linewidth=1, alpha=0.7,
           label=rf"$-3\,\mathrm{{dB}}$ level ($X_{{\max}}/\sqrt{{2}}$)")

# 帯域幅の矢印
ax.annotate("", xy=(Omega_1 / omega_0, level_3dB - 0.3),
            xytext=(Omega_2 / omega_0, level_3dB - 0.3),
            arrowprops=dict(arrowstyle="<->", color="red", lw=2))
ax.text((Omega_1 + Omega_2) / (2 * omega_0), level_3dB - 0.8,
        rf"$\Delta\Omega / \omega_0 \approx {bandwidth/omega_0:.3f}$"
        + f"\n(Q = {Q:.1f})",
        ha="center", fontsize=12, color="red")

ax.set_xlabel(r"$\Omega / \omega_0$", fontsize=13)
ax.set_ylabel(r"$X / X_{\mathrm{static}}$", fontsize=13)
ax.set_title(r"Q-factor and Bandwidth ($\zeta = 0.1$)", fontsize=15)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_xlim(0.5, 1.5)
ax.set_ylim(0, 6)
plt.tight_layout()
plt.show()

このグラフでは、$\zeta = 0.1$(Q = 5)の場合の共振曲線を拡大して描画しています。赤い点が共振ピーク、灰色の破線が $-3\,\text{dB}$ レベル(最大振幅の $1/\sqrt{2}$ 倍)、そして赤い矢印が帯域幅 $\Delta\Omega$ を示しています。帯域幅は共振周波数をQ値で割った値 $\Delta\Omega \approx \omega_0/Q$ にほぼ等しくなっており、Q値の定義と整合しています。この帯域幅の概念は、ラジオの同調回路やバンドパスフィルタの設計において、通過させる周波数範囲を決定する核心的な指標です。

3つの外力周波数での強制振動の比較

共振の効果をより鮮明に見るため、$\Omega/\omega_0 = 0.5$(低周波)、$\Omega/\omega_0 = 1.0$(共振付近)、$\Omega/\omega_0 = 2.0$(高周波)の3つのケースを並べて比較します。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

omega_0 = 2 * np.pi
zeta = 0.1
gamma = zeta * omega_0
F0 = 1.0
t = np.linspace(0, 10, 3000)

Omega_ratios = [0.5, 1.0, 2.0]
titles = [
    r"Low frequency ($\Omega/\omega_0 = 0.5$)",
    r"Near resonance ($\Omega/\omega_0 = 1.0$)",
    r"High frequency ($\Omega/\omega_0 = 2.0$)",
]

fig, axes = plt.subplots(3, 1, figsize=(12, 10), sharex=True)

for ax, ratio, title in zip(axes, Omega_ratios, titles):
    Om = ratio * omega_0

    def eom_forced(state, t, g=gamma, w0=omega_0, omega=Om, f0=F0):
        x, v = state
        return [v, -2 * g * v - w0**2 * x + f0 * np.cos(omega * t)]

    sol = odeint(eom_forced, [0.0, 0.0], t)

    # 定常振幅の理論値
    X_ss = F0 / np.sqrt((omega_0**2 - Om**2) ** 2 + (2 * gamma * Om) ** 2)

    ax.plot(t, sol[:, 0], "b-", linewidth=1.2)
    ax.axhline(y=X_ss, color="r", linestyle="--", linewidth=1, alpha=0.6,
               label=rf"$X_{{ss}} = {X_ss:.4f}$")
    ax.axhline(y=-X_ss, color="r", linestyle="--", linewidth=1, alpha=0.6)
    ax.set_ylabel("x", fontsize=12)
    ax.set_title(title, fontsize=13)
    ax.legend(fontsize=10, loc="upper right")
    ax.grid(True, alpha=0.3)

axes[-1].set_xlabel("Time [s]", fontsize=13)
plt.tight_layout()
plt.show()

3つのパネルを比較すると、共振の効果が一目瞭然です。上段の低周波($\Omega/\omega_0 = 0.5$)では、定常振幅は小さく穏やかな振動です。中段の共振付近($\Omega/\omega_0 = 1.0$)では、振幅が劇的に増大しており、定常振幅の赤い破線が上下のパネルと比べてはるかに大きな値を示しています。さらに、過渡応答の期間が長く、振幅が定常値に達するまでに多くの周期を要していることがわかります。これはQ値が高い系の特徴であり、エネルギーが蓄積されるのに時間がかかることを意味しています。下段の高周波($\Omega/\omega_0 = 2.0$)では、振幅が非常に小さく、系が高速な外力に追従できていないことがわかります。これは振幅の公式で $\Omega \gg \omega_0$ のとき分母が $\Omega^2$ に比例して大きくなることと一致しています。

エネルギーの視点からの理解

ここまで変位に注目してきましたが、エネルギー保存則の観点から減衰振動と強制振動を見ると、さらに深い理解が得られます。

減衰振動のエネルギー散逸

減衰振動では、運動エネルギー $T = \frac{1}{2}m\dot{x}^2$ とポテンシャルエネルギー $U = \frac{1}{2}kx^2$ の和が単調に減少します。不足減衰の場合、全力学的エネルギー $E = T + U$ は次のように時間変化します。

$$ E(t) = \frac{1}{2}kA^2 e^{-2\gamma t} $$

エネルギーの減少率は次の通りです。

$$ \frac{dE}{dt} = -c\dot{x}^2 \leq 0 $$

右辺は常にゼロ以下であり、減衰力が仕事をすることで力学的エネルギーが散逸(主に熱に変換)されていることを表しています。散逸のレートは速度の2乗に比例するため、振動の速い時点でエネルギーが最も速く失われます。

強制振動のエネルギー収支

定常振動では、外力が注入するエネルギーと減衰力が散逸するエネルギーが1周期の平均で釣り合っています。

外力が1周期あたりに注入するパワーの時間平均は次のように計算できます。

$$ \langle P_{\text{in}} \rangle = \frac{1}{T}\int_0^T F(t)\dot{x}_p(t) \, dt $$

$F(t) = F_0\cos\Omega t$、$\dot{x}_p = -X\Omega\sin(\Omega t – \delta)$ を代入して三角関数の積を整理すると、次のようになります。

$$ \langle P_{\text{in}} \rangle = \frac{1}{2}F_0 X\Omega\sin\delta $$

この式から、エネルギー注入が最大になるのは $\sin\delta = 1$、すなわち $\delta = \pi/2$ のときです。これは共振条件 $\Omega \approx \omega_0$ にほぼ対応します。つまり共振とは、外力が最も効率的にエネルギーを注入できる条件に他ならないのです。

ブランコの例に立ち返ると、ブランコが前に進むとき(速度の方向)に押す(力の方向を揃える)と最も効果的、という日常的な直感と完全に一致しています。

エネルギーの観点からも振動現象の全体像が見えてきました。最後に、本記事の内容を整理しましょう。

RLC回路との対応

減衰振動と強制振動の理論は、電気回路にもそのまま適用できます。電気回路との対応を知っておくと、振動現象の普遍性がより深く理解できます。

抵抗 $R$、インダクタ $L$、キャパシタ $C$ を直列に接続し、交流電源 $V(t) = V_0\cos\Omega t$ を加えた回路を考えます。キルヒホッフの電圧則から、回路方程式は次のようになります。

$$ L\ddot{q} + R\dot{q} + \frac{1}{C}q = V_0\cos\Omega t $$

ここで $q$ は電荷です。力学の運動方程式と比較すると、以下の対応関係が成り立ちます。

力学系 電気回路
質量 $m$ インダクタンス $L$
減衰係数 $c$ 抵抗 $R$
バネ定数 $k$ $1/C$(キャパシタンスの逆数)
変位 $x$ 電荷 $q$
速度 $\dot{x}$ 電流 $I = \dot{q}$
外力 $F_0$ 電圧 $V_0$

したがって、力学の減衰比に対応する量は次の通りです。

$$ \zeta_{\text{elec}} = \frac{R}{2}\sqrt{\frac{C}{L}} $$

RLC回路の共振周波数は $\omega_0 = 1/\sqrt{LC}$ であり、Q値は $Q = \frac{1}{R}\sqrt{L/C}$ です。ラジオの同調回路は、まさにこのRLC共振を利用して特定の周波数の電波だけを選択的に受信しています。

このように、減衰振動と強制振動の数学的構造は力学に限定されず、電気回路、音響学、光学共振器など、あらゆる2次系に共通する普遍的なフレームワークです。一度この理論を理解すれば、全く異なる物理系にも応用できる点が、この理論の真の価値です。

実践的な設計指針

ここまでの理論を踏まえ、実際の工学設計で減衰比をどのように選ぶべきかの指針をまとめます。

振動を素早く抑えたい場合

地震計、精密天秤、ショックアブソーバーなどでは、外乱に対して速やかに静止してほしい系です。この場合、臨界減衰($\zeta = 1$)が理想的に思えますが、実際にはやや不足減衰($\zeta = 0.6 \sim 0.8$)に設定することが多いです。なぜなら、わずかなオーバーシュートを許容する代わりに、整定時間(応答が最終値の一定範囲内に収まるまでの時間)を短くできるからです。

特定の周波数を選択したい場合

バンドパスフィルタ、楽器、通信機器の同調回路では、高いQ値(小さな $\zeta$)が求められます。Q値が高いほど目的の周波数を選択的に増幅でき、ノイズを除去できます。ただし、Q値が高すぎると過渡応答が長くなり、信号の立ち上がりが遅くなるトレードオフがあります。

広い周波数範囲で均一な応答が欲しい場合

マイクロフォン、加速度計、振動計測器などでは、計測対象の周波数範囲全体で均一な感度が必要です。この場合は $\zeta \approx 0.7$($Q \approx 0.7$)が適切で、共振ピークを持たない平坦な周波数応答が得られます。

まとめ

本記事では、減衰振動と強制振動の理論を、直感的な理解と数学的な導出の両面から解説しました。

  • 減衰振動: 運動方程式 $\ddot{x} + 2\gamma\dot{x} + \omega_0^2 x = 0$ の解は、減衰比 $\zeta = \gamma/\omega_0$ によって3つのケースに分類されます。不足減衰($\zeta < 1$)では振動しながら指数的に減衰し、臨界減衰($\zeta = 1$)では振動せずに最速で収束し、過減衰($\zeta > 1$)ではゆっくりと収束します。
  • 強制振動: 外力 $F_0\cos\Omega t$ に対する定常応答の振幅は $X = (F_0/m) / \sqrt{(\omega_0^2 – \Omega^2)^2 + (2\gamma\Omega)^2}$ で与えられ、全体の応答は過渡成分と定常成分の和で表されます。
  • 共振: $\Omega \approx \omega_0$ で振幅が最大化し、その鋭さはQ値 $Q = 1/(2\zeta)$ で特徴づけられます。Q値が高いほどピークが鋭く、帯域幅が狭くなります。
  • 位相: 外力に対する応答の位相遅れは、低周波で0度、共振周波数で90度、高周波で180度に遷移し、この遷移の急峻さはQ値に比例します。
  • 普遍性: 同じ数学的構造が力学系とRLC電気回路に共通して現れ、減衰比とQ値は分野を超えた統一的な設計パラメータとして機能します。

減衰振動と強制振動の理論は、制御工学やフィルタ設計の基礎をなすものです。次のステップとして、以下の記事も参考にしてください。