Math World Lab

微分方程式の基礎(振動・減衰)

ばね・質量・ダンパー系の運動方程式から学ぶ常微分方程式と、その数値解法(オイラー法)

この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
微分方程式とは、未知関数そのものとその導関数の関係を記述する方程式であり、質点の運動やばねの振動など「変化のルール」から未来の状態を予測するための数学的道具
2
質量 m・ばね定数 k・減衰係数 c を持つ系の運動方程式 mx′′+cx′+kx=0m x'' + c x' + k x = 0 は、減衰の強さによって「振動しながら減衰(不足減衰)」「振動せず戻る(過減衰)」「最速で戻る(臨界減衰)」の3種類の挙動に分かれる
3
厳密解が求まらない複雑な微分方程式でも、時間を微小なステップ hh に区切って一次近似を繰り返す「オイラー法」を使えばコンピュータで数値的に解くことができ、これはゲームエンジンの物理シミュレーションの基礎となっている

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

微分方程式とは、未知関数そのものとその導関数の関係を記述する方程式であり、質点の運動やばねの振動など「変化のルール」から未来の状態を予測するための数学的道具

身につく武器・思考力

質量 m・ばね定数 k・減衰係数 c を持つ系の運動方程式 $m x'' + c x' + k x = 0$ は、減衰の強さによって「振動しながら減衰(不足減衰)」「振動せず戻る(過減衰)」「最速で戻る(臨界減衰)」の3種類の挙動に分かれる

実社会・ITでの活躍現場

  • •物理エンジンのばねシミュレーションとUIの「バネのような」アニメーションイージング
  • •ITシステム・アルゴリズム実装における論理設計
  • •データ分析やシミュレーションにおける数理モデリング

Layer 1 — 直感・シミュレーター

質量 m・ばね定数 k・減衰係数 c のスライダーを動かして、変位 x(t) の時間変化グラフがどう形を変えるか観察しよう。減衰係数を 0 に近づけると永遠に振動し続け、大きくしすぎると振動せずゆっくり(あるいは急速に)静止位置に戻る「過減衰」に切り替わる。減衰比 ζ の値と挙動の分類(不足減衰・臨界減衰・過減衰)が連動して表示される。

固有角振動数 ω0=k/m\omega_0 = \sqrt{k/m} ≈ 2.45 rad/s、減衰比 ζ=c2mk\zeta = \dfrac{c}{2\sqrt{mk}} ≈ 0.204

判定: 不足減衰(振動しながら減衰)

運動方程式: mx′′+cx′+kx=0m x'' + c x' + k x = 0(セミインプリシット・オイラー法で数値的に解いています)

↑ 減衰係数 c を 0 に近づけると永遠に振動し続け(不足減衰)、大きくしすぎると振動せず一直線に静止位置へ戻る(過減衰)。 ζ = 1 の臨界減衰がその境目で最も速く収束する。

直感チェック!ミニクイズ

ばね-質量-ダンパー系 mx′′+cx′+kx=0m x'' + c x' + k x = 0 において、減衰比 ζ=c2mk\zeta = \dfrac{c}{2\sqrt{mk}} が ζ=0.3\zeta = 0.3(0<ζ<10 < \zeta < 1)のとき、系の挙動として正しいものはどれか?

Layer 2 — 定義・受験・証明

定義

未知関数 x(t)x(t) とその導関数 x′(t),x′′(t),…x'(t), x''(t), \ldots の関係を記述する方程式を「微分方程式(ODE: 常微分方程式)」と呼ぶ。 代表例として、質量 mm の物体がばね定数 kk のばねと減衰係数 cc のダンパー(抵抗)に接続された系の運動方程式(ニュートンの第二法則 F=maF=ma より)は次の2階線形常微分方程式で表される。

md2xdt2+cdxdt+kx=0m \frac{d^2 x}{dt^2} + c \frac{dx}{dt} + k x = 0

ここで x(t)x(t) は釣り合い位置からの変位である。

公式・数理モデル

mx′′+cx′+kx=0,ω0=km,ζ=c2mk,x(t)=e−ζω0t(Acos⁡(ωdt)+Bsin⁡(ωdt))m x'' + c x' + k x = 0, \quad \omega_0 = \sqrt{\dfrac{k}{m}}, \quad \zeta = \dfrac{c}{2\sqrt{mk}}, \quad x(t) = e^{-\zeta \omega_0 t}\left(A\cos(\omega_d t) + B \sin(\omega_d t)\right)

証明・導出

特性方程式による解法: 解の形を x(t)=eλtx(t) = e^{\lambda t} と仮定して方程式に代入すると、

mλ2eλt+cλeλt+keλt=0  ⟹  mλ2+cλ+k=0m \lambda^2 e^{\lambda t} + c \lambda e^{\lambda t} + k e^{\lambda t} = 0 \;\Longrightarrow\; m\lambda^2 + c\lambda + k = 0

という「特性方程式」が得られる。これは λ\lambda に関する2次方程式なので、判別式 D=c2−4mkD = c^2 - 4mk の符号によって解の性質が3通りに分かれる。

固有角振動数 ω0=k/m\omega_0 = \sqrt{k/m}(減衰がないときの振動数)と減衰比 ζ=c2mk\zeta = \dfrac{c}{2\sqrt{mk}} を導入すると、特性方程式の解は

λ=−ζω0±ω0ζ2−1\lambda = -\zeta\omega_0 \pm \omega_0\sqrt{\zeta^2 - 1}

となる。

1. 0≤ζ<10 \le \zeta < 1(不足減衰):ζ2−1<0\zeta^2 - 1 < 0 なので λ\lambda は複素数となり、減衰角振動数 ωd=ω01−ζ2\omega_d = \omega_0\sqrt{1-\zeta^2} を用いて一般解は x(t)=e−ζω0t(Acos⁡ωdt+Bsin⁡ωdt)x(t) = e^{-\zeta\omega_0 t}(A\cos\omega_d t + B\sin\omega_d t) となる。振幅 e−ζω0te^{-\zeta\omega_0 t} で包絡されながら振動する。 2. ζ=1\zeta = 1(臨界減衰):重解 λ=−ω0\lambda = -\omega_0 を持ち、一般解は x(t)=(A+Bt)e−ω0tx(t) = (A + Bt)e^{-\omega_0 t} となる。振動せず、最も速く釣り合い位置に収束する。 3. ζ>1\zeta > 1(過減衰):2つの異なる実数解 λ1,2\lambda_{1,2} を持ち、一般解は x(t)=Aeλ1t+Beλ2tx(t) = A e^{\lambda_1 t} + B e^{\lambda_2 t} となる。振動せず、ゆっくりと釣り合い位置に戻る。

押さえておきたいポイント

  • 固有角振動数 ω0=k/m\omega_0 = \sqrt{k/m} は「減衰も外力もないときにこの系が振動する速さ」を表す
  • 減衰比 ζ\zeta の値だけで挙動が完全に分類できる:ζ<1\zeta < 1 不足減衰、ζ=1\zeta = 1 臨界減衰、ζ>1\zeta > 1 過減衰
  • 厳密解が困難な非線形の微分方程式でも、時刻 tt の状態から微小時間 hh 後の状態を xn+1=xn+h⋅xn′x_{n+1} = x_n + h \cdot x'_n と近似的に更新する「オイラー法」を繰り返せば数値的に解を追跡できる
  • オイラー法は近似誤差が蓄積するため、ゲームエンジンや物理シミュレーションでは速度を先に更新する「セミインプリシット(半陰的)オイラー法」がよく使われ、エネルギーの発散を抑えて安定性を高めている
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

物理エンジンのばねシミュレーションとUIの「バネのような」アニメーションイージング

ゲームエンジンやモバイルUIの「弾むような」アニメーション(iOSのスプリングアニメーションなど)は、まさにばね-質量-ダンパー系の微分方程式を毎フレーム数値的に解くことで実現されている。厳密解の三角関数を使わず、セミインプリシット・オイラー法で位置と速度を逐次更新するのが実務上の定番手法。

1// ばね-質量-ダンパー系: m x'' + c x' + k x = 0 のシミュレーション
2interface SpringState {
3 position: number; // 変位 x
4 velocity: number; // 速度 x'
5}
6
7function stepSpring(
8 state: SpringState,
9 mass: number,
10 stiffness: number, // ばね定数 k
11 damping: number, // 減衰係数 c
12 dt: number // 時間刻み h
13): SpringState {
14 // 加速度 a = x'' = -(k x + c x') / m (F = ma より)
15 const acceleration =
16 (-stiffness * state.position - damping * state.velocity) / mass;
17
18 // セミインプリシット・オイラー法: 先に速度を更新し、その新しい速度で位置を更新する
19 // (通常のオイラー法より数値的に安定し、エネルギーが発散しにくい)
20 const newVelocity = state.velocity + acceleration * dt;
21 const newPosition = state.position + newVelocity * dt;
22
23 return { position: newPosition, velocity: newVelocity };
24}
25
26// 例: UIパネルを x=1 の位置からバネで x=0 (目標位置) へ滑らかに戻すアニメーション
27let state: SpringState = { position: 1, velocity: 0 };
28const mass = 1;
29const stiffness = 170; // 硬いバネ = 素早い収束
30const damping = 20; // 適度な減衰 = わずかにオーバーシュートして収束
31const dt = 1 / 60; // 60fps
32
33for (let frame = 0; frame < 90; frame++) {
34 state = stepSpring(state, mass, stiffness, damping, dt);
35 // 実際のアプリでは state.position をUI要素の座標に反映する
36}
37console.log(`90フレーム後の位置: ${state.position.toFixed(4)}`); // ほぼ 0 に収束

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高工学応用

天気予報の数学(数値予報の基礎)

微分方程式を細かい時間刻みで解き進める「数値シミュレーション」としての天気予報

VmaxE + S ⇄ ES → E + PMichaelis-Menten Kinetics
関連度高大学数学

化学反応速度論と連立微分方程式(ミカエリス・メンテン機構)

分子の衝突確率から導く質量作用の法則と、酵素触媒による代謝・飽和現象の数理解析

+30mVHodgkin-Huxley Spike
関連度高大学数学

ホジキン=ハクスレー方程式と神経回路の数学

ノーベル賞生理学 — ナトリウムとカリウムのイオン透過が生む脳のパルス電気信号

同じレベルで次に挑戦したいトピック

同レベル推薦大学数学

固有値・固有ベクトル

行列で変換しても「向きが変わらない」特別な方向

同レベル推薦大学数学

フーリエ変換と周波数分解

どんなに複雑な波も、単純なサイン波の重ね合わせに分解できる

同レベル推薦大学数学

ベイズの定理(条件付き確率と事前・事後確率)

新たな情報や証拠(エビデンス)を得て「確信度」を更新する確率論

工学・実社会での応用先でつながるトピック

工学・実践連携小学校・算数

比例と反比例

y=kxy = kx と y=kxy = \frac{k}{x}、グラフと表はどう違う?

工学・実践連携中学数学

二次関数と放物線

a, b, c を動かすと放物線の形と位置はどう変わる?

工学・実践連携中学数学

円の方程式(基礎)

中心と半径を動かして、円の方程式が「距離」そのものであることを確かめる

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。