ODE 相平面解析ツール 戻る
解析ツール

常微分方程式・相平面解析シミュレーター

方向場・ヌルクライン・RK4位相軌跡・ヤコビアン安定性解析をリアルタイム可視化。振り子・捕食者-被食者・ファン・デル・ポールなど主要モデルを収録。

システム選択
dx/dt = y
dy/dt = −sin(x) − 0.5y
パラメータ
減衰係数 b
パラメータ 2
初期条件 (x₀, y₀)
x₀ =
y₀ =
表示範囲 ±R
平衡点情報

一時停止中はスライダーを動かすと結果が即座に更新されます。

積分中ライブ数値(RK4で軌跡をトレース)
0.00
時刻 t
0.00
x(t)
0.00
y(t)
0.00
速度 |dx/dt, dy/dt|
計算結果
平衡点の数
固有値 λ₁
安定性
軌跡タイプ
相平面(方向場・軌跡・ヌルクライン)
位相
時間変化

安定性分類(ヤコビアン固有値)

平衡点 $(x^ , y^ )$ での線形化:$J = \begin{pmatrix}\partial f/\partial x & \partial f/\partial y \\ \partial g/\partial x & \partial g/\partial y\end{pmatrix}$

$\text{tr}(J) \lt 0,\ \det(J) \gt 0 \Rightarrow$ 安定 | $\det(J) \lt 0 \Rightarrow$ 鞍点

RK4:$k_1=hf(t_n,y_n),\ k_2=hf(t_n+h/2,y_n+k_1/2),\ldots$

理論・主要公式

$$\dot{x}=f(x,y),\qquad \dot{y}=g(x,y)$$

2次元自律系。平衡点は $f=g=0$ を満たす点。

$$J=\begin{pmatrix}\partial f/\partial x & \partial f/\partial y\\ \partial g/\partial x & \partial g/\partial y\end{pmatrix},\quad \lambda_{1,2}=\frac{\mathrm{tr}J\pm\sqrt{\mathrm{tr}J^2-4\det J}}{2}$$

ヤコビアン固有値 $\lambda$ の実部符号で安定性を分類(両負→安定、両正→不安定、異符号→鞍点)。

常微分方程式・相平面解析とは

🙋
「相平面」って何ですか?普通のグラフとどう違うんですか?
🎓
大まかに言うと、2つの状態の「関係性」を一つの図で見る方法だね。例えば振り子なら、位置$x$と速度$y$の2つの状態を、横軸と縦軸にとって、その変化の流れを矢印(方向場)で描くんだ。このシミュレーターの上の「表示範囲±R」のスライダーを動かすと、見える世界が広がるよ。非線形の複雑な動きが、一目で分かることが多いんだ。
🙋
「平衡点」や「ヌルクライン」って、図の上でどういう意味があるんですか?
🎓
ヌルクライン($f(x,y)=0$や$g(x,y)=0$の線)は、状態が横方向や縦方向に動かなくなる「境界線」だ。そして、その線が交わった点が平衡点で、系が最終的に落ち着く(かもしれない)状態だ。例えば「振り子」モデルで「減衰係数b」を0にすると中心点(振動し続ける)、正の値にすると安定点(振動が収まる)になる。パラメータを変えながら、平衡点の種類がどう変わるか観察してみて。
🙋
「安定」とか「不安定」って、実務ではどう判断するんですか?数式を解かなくても分かるんですか?
🎓
そのためにこのシミュレーターは強力なんだよ。平衡点の近くで、方向場の矢印がその点に吸い込まれるように集まってれば「安定」、吹き飛ばすように外に向かってれば「不安定」だ。数式的にはヤコビアン行列の固有値を計算するけど、シミュレーター上で初期値を平衡点の近くに置いて「軌跡を描画」ボタンを押せば、収束するか発散するかが視覚的にすぐ分かる。現場でもまずはこうした可視化で感覚をつかむことが多いね。

物理モデルと主要な数式

相平面解析の対象は、時間$t$に陽に依存しない2次元自律系(Autonomous System)です。状態の時間変化は以下の連立常微分方程式で記述されます。

$$ \begin{aligned}\frac{dx}{dt}&= f(x, y) \\ \frac{dy}{dt}&= g(x, y) \end{aligned}$$

$x, y$: 系の状態変数(例:位置と速度、捕食者と被食者の個体数)。
$f, g$: 状態$(x,y)$によって決まる変化率を表す関数(多くの場合非線形)。
時間$t$でパラメータ化された解$(x(t), y(t))$を$(x,y)$平面上に描いた曲線を「軌跡」または「軌道」と呼びます。

平衡点$(x^ , y^ )$($f(x^ , y^ )=0$かつ$g(x^ , y^ )=0$を満たす点)近傍の振る舞いを調べるために線形化を行い、その安定性はヤコビアン(Jacobi)行列$J$の固有値によって分類できます。

$$ J = \begin{pmatrix}\dfrac{\partial f}{\partial x}& \dfrac{\partial f}{\partial y}\\[8pt] \dfrac{\partial g}{\partial x}& \dfrac{\partial g}{\partial y}\end{pmatrix}_{(x^, y^)}$$

固有値$\lambda_1, \lambda_2$の実部$\mathrm{Re}(\lambda)$に注目します。
安定ノード/焦点: $\mathrm{Re}(\lambda_1), \mathrm{Re}(\lambda_2) \lt 0$ (全ての軌跡が平衡点に収束)。
不安定ノード/焦点: $\mathrm{Re}(\lambda_1), \mathrm{Re}(\lambda_2) \gt 0$ (平衡点から遠ざかる)。
鞍点: $\mathrm{Re}(\lambda_1) \cdot \mathrm{Re}(\lambda_2) \lt 0$ (一部の方向では収束、他では発散、常に不安定)。
中心: $\mathrm{Re}(\lambda_1) = \mathrm{Re}(\lambda_2) = 0$ (線形近似では中立安定、周囲を周期軌道)。

よくある質問

画面上の(x,y)平面をクリックするか、入力フィールドに数値を直接入力して設定します。クリックした点が初期状態となり、そこからRK4法で軌跡が計算・描画されます。複数の初期条件を指定して比較することも可能です。
ヌルクラインはdx/dt=0またはdy/dt=0となる曲線です。これらの交点が平衡点(固定点)です。ヌルクラインを可視化することで、系の流れの方向や平衡点の位置を直感的に把握でき、安定性解析の前段階として重要です。
平衡点でのヤコビ行列の固有値を計算し、実部の符号で安定性を判定します。両方の実部が負なら安定(吸引子)、正なら不安定(反発子)、符号が異なるなら鞍点です。虚部があれば螺旋状に近づく/離れる挙動を示します。
はい、カスタムモードでf(x,y)とg(x,y)を自由に定義できます。数式は一般的な演算子(+, -, *, /, ^)と関数(sin, cos, exp, logなど)が使用可能です。パラメータもスライダーで調整できるため、様々な非線形系を探索できます。

実世界での応用

制御工学・ロボティクス:倒立振り子やドローンの姿勢制御など、非線形システムのコントローラ設計において、平衡点(目標状態)の安定性と収束領域を相平面で解析します。リミットサイクル(安定な周期軌道)の検出は、望ましい周期動作の設計に役立ちます。

生態学・人口動態:ロトカ・ボルテラ方程式は、被食者と捕食者の個体数変動をモデル化した古典的な例です。相平面で平衡点(共存平衡)の安定性を調べることで、個体数が周期的に変動し続ける条件や、一方が絶滅する条件を予測できます。

疫学・SIRモデル:感染症の流行過程を、感受性者(S)、感染者(I)、回復者(R)の3集団の動態としてモデル化します。相平面(例えばS-I平面)を用いることで、流行のピークや終息条件、基本再生産数$R_0$の影響を視覚的に理解できます。

構造工学・非線形振動:橋梁や建築物の風致振動、機械部材の大きな変形を伴う振動では、線形理論では説明できない現象(ジャンプ、サブハーモニック振動など)が起きます。これをダフィング振子やファン・デル・ポール振子などのモデルで表現し、相平面解析で安定性や分岐を調べます。

よくある誤解と注意点

まず、「相平面は単なる軌跡のプロットではない」という点を押さえましょう。軌跡は初期値から始まる一本の線ですが、相平面解析の真価は、方向場(矢印)全体を見て「流れ」を把握することにあります。一つの軌跡だけを見て「この系は振動する」と早合点するのは危険。例えば減衰振動でも、初期エネルギーが大きければ一見複雑な動きをしますが、方向場全体を見れば、すべての矢印が最終的に一点(安定平衡点)に吸い込まれていく様子がわかります。

次に、パラメータ設定の「スケール」。例えば「振り子」モデルで、減衰係数bを0.1から1.0に変えると、挙動が劇的に変わります。しかし、表示範囲Rがデフォルトの±5のままだと、矢印が全て平衡点周辺に密集してしまい、流れが見えなくなることがあります。パラメータを変えたら、「表示範囲±R」スライダーで視野を広げたり狭めたりするのがコツです。実務でも、適切なスケーリングは必須です。

最後に、「リアルタイムシミュレーションは万能ではない」という落とし穴。このツールは数値計算で軌跡を描いています。非常に鋭敏な系(例えばサドル点の不安定多様体付近)では、ほんの少しの数値誤差で軌跡が全く異なる方向に行ってしまうことがあります。シミュレーション結果を盲信せず、「この結果は本当に信頼できるか?」と常に理論(ヌルクラインの形状、平衡点の線形化予測)と照らし合わせる習慣をつけましょう。

使い方ガイド

  1. システムを選択してください。振り子(dx/dt=y, dy/dt=-sin(x)-0.5y)、ロトカ-ボルテラ(dx/dt=2x-0.5xy, dy/dt=-y+0.1xy)、またはSIRモデル(dS/dt=-βSI, dI/dt=βSI-γI)など
  2. パラメータ欄(param1, param2)に係数値を入力します。例えば減衰係数c=0.3、捕食率α=0.04など具体値を設定
  3. 初期条件(ic_x, ic_y)に相平面上の出発点を指定し、「シミュレーション実行」で方向場・ヌルクライン・軌跡を描画
  4. 固有値λ₁、λ₂から安定性(ノード・スパイラル・鞍点)を判定し、軌跡タイプ(安定焦点・限界周期など)を可視化

具体的な計算例

減衰振り子システム: d²x/dt²+0.5(dx/dt)+sin(x)=0を相平面変換(x₁=x, x₂=dx/dt)すると、dx₁/dt=x₂, dx₂/dt=-sin(x₁)-0.5x₂となります。初期条件(x₁=2.5, x₂=0)から計算すると、平衡点(0,0)の固有値はλ=(-0.25±0.968i)で安定焦点となり、軌跡は時間t=15秒で収束します。相平面グラフではスパイラル状の軌跡が原点へ吸収されることが確認でき、減衰時間定数τ≈4秒に相当します。

実務での注意点