状態空間表現は、動的システムを一階の方程式の組として書き換える方法です。高階の微分方程式を1本扱う代わりに、次に何が起こるかを予測するために必要な情報を含む状態ベクトルを追跡します。

微分方程式を状態空間形に変換する方法を探しているなら、中心となる考え方はこれです。状態変数を選び、各変数の導関数の式を書き、モデルを一階のまま保ちます。

状態空間表現をひとことで定義すると

一般に、状態空間モデルは次のように書けます。

x(t)=f(x(t),u(t),t)x'(t) = f(x(t), u(t), t)

ここで x(t)x(t) は状態ベクトルで、システムに入力がある場合は u(t)u(t) がその入力です。システムが線形かつ時不変なら、同じ考え方は次の行列表現になります。

x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)x'(t) = Ax(t) + Bu(t), \qquad y(t) = Cx(t) + Du(t)

この行列表現は制御や微分方程式でよく使われますが、状態空間は線形の場合だけに限られるものではありません。

状態が意味するもの

状態とは、入力が分かっているときに将来の振る舞いを決めるために必要な、現在の量の集まりです。動いている物体では、位置だけでは通常十分ではありません。位置と速度を合わせると十分になることが多いです。

状態空間表現が役立つのはそのためです。時間発展の問題を、解析しやすく、シミュレーションしやすく、行列の方法にもつなげやすい標準的な一階の形に変えてくれます。

なぜこの形に書き換えるのか

多くのモデルは高階の微分方程式として始まります。状態空間形は、もとの力学を変えずにそれらを書き換えます。

これが重要なのは、一階システムは一つの共通した構造に収まるからです。モデルがその構造に入ると、初期条件、入力、出力、安定性を一貫した形で議論しやすくなります。

例題:2階微分方程式を状態空間に変換する

次から始めます。

y+3y+2y=u(t)y'' + 3y' + 2y = u(t)

ここで u(t)u(t) は入力です。システムの現在の状態を表す状態変数を選びます。

x1=y,x2=yx_1 = y, \qquad x_2 = y'

次に、各状態変数について一階の方程式を書きます。x1=yx_1 = y なので、

x1=x2x_1' = x_2

また、x2=yx_2 = y' なので x2=yx_2' = y'' です。元の方程式を変形すると、

y=3y2y+u(t)y'' = -3y' - 2y + u(t)

ここに y=x1y = x_1y=x2y' = x_2 を代入すると、

x2=2x13x2+u(t)x_2' = -2x_1 - 3x_2 + u(t)

したがって、状態方程式は

x1=x2x2=2x13x2+u(t)\begin{aligned} x_1' &= x_2 \\ x_2' &= -2x_1 - 3x_2 + u(t) \end{aligned}

となります。さらに、

x=(x1x2),x = \begin{pmatrix} x_1 \\ x_2 \end{pmatrix},

とおくと、ベクトル形式では

x=(0123)x+(01)u(t)x' = \begin{pmatrix} 0 & 1 \\ -2 & -3 \end{pmatrix} x + \begin{pmatrix} 0 \\ 1 \end{pmatrix} u(t)

となります。出力が元の量 yy なら、

y=(10)xy = \begin{pmatrix} 1 & 0 \end{pmatrix} x

です。

重要なのは、1本の2階方程式を2本の1階方程式に変換するところです。そこが状態空間表現の核心です。

この例で注目したいこと

状態変数は理由があって選ばれています。その選び方によって、モデルを一階システムとして書けるようになります。

また、出力 yy は状態ベクトル全体と同じではないことにも注意してください。この例では y=x1y = x_1 ですが、完全な状態は (x1,x2)(x_1, x_2) です。これらは重なることもありますが、自動的に同一になるわけではありません。

状態空間形に変換するときのよくあるミス

状態と出力を混同する

状態には、システムを時間発展させるために必要な内部変数が含まれます。出力は、観測したい量です。両者が重なることはありますが、自動的に同じものではありません。

表現が一意だと思い込む

通常は一意ではありません。十分な情報を含んでいれば、異なる状態変数の選び方でも同じ力学を表せます。

一階であるという条件を忘れる

状態空間モデルは、状態変数についての一階方程式として書かれます。もし状態変数の2階導関数がまだ残っているなら、書き換えはまだ終わっていません。

すべてのモデルを線形として扱う

AABBCCDD を使う行列表現は、選んだ状態変数に関して方程式が線形である場合にしか使えません。非線形システムでも状態空間は使いますが、その場合は定数行列ではなく関数で書きます。

状態空間表現はどこで使われるか

状態空間表現は、微分方程式、制御理論、信号処理、ロボティクス、物理で現れます。特に、システムが時間とともにどう変化するか、そして入力がその変化にどう影響するかを考えたいときに有用です。

モデルが線形なら、行列の方法が特に便利になります。たとえば、行列 AA の固有値は増大、減衰、振動を記述する手がかりになりますが、それはあくまでモデルに組み込まれた仮定のもとでの話です。

自分でもやってみよう

次を考えてみてください。

y+4y+5y=0y'' + 4y' + 5y = 0

そして x1=yx_1 = yx2=yx_2 = y' を選びます。これを一階システムに書き換え、そのあと行列 AA を求めてみましょう。理解できたら、入力項のある似た問題にも挑戦して、BB 行列がどう現れるかを確認してみてください。

問題の解き方でお困りですか?

問題をアップロードすると、検証済みのステップバイステップ解答が数秒で届きます。

GPAI Solver を開く →