線形システム・非線形システムとは?時変・時不変の違いも解説!

制御工学入門

このページでは、線形システム・非線形システムの違いと、時変システム・時不変システムの違いについて解説します。また、それぞれのシステムの具体例と、実用シーンでの使われ方についても解説します。

このページのまとめ
  • 数式モデルが「係数×入出力(の微分)」の項だけで表されるものは線形システム、それ以外は非線形システム
  • 係数が定数であるものは時不変システム、係数が時間に依存するものは時変システム
  • 線形システムは扱いやすい、非線形システムは扱いにくい
  • 時不変システムは扱いやすい、時変システムは扱いにくい
モバイル端末の方へ
数式が画面からはみ出している場合は、式を横スクロールするか、横持ちしてご覧ください
スポンサーリンク

線形システムと非線形システム

数式モデルが「係数×入出力(の微分)」の項だけで表されるシステムを線形システム、それ以外のシステムを非線形システムと呼びます。入力を$u$、出力を$y$としたときの例を次に示します。

$$ \begin{array}{lllllllllll} a_2 \ddot{y} &+ &a_1 \dot{y} &+ &a_0 y &= & b_1 \dot{u} &+ &b_0 u & : & 係数×入出力(の微分)なので線形\\ a_2 \ddot{y} &+ &a_1 \dot{y} &+ &a_0 \color{red}{\sin (y) }&=& b_1 \dot{u} &+& b_0 u & : & \sin関数があるので非線形 \\ a_2 \ddot{y} &+& a_1 \color{red}{\dot{y}^2} &+& a_0 y &=& b_1 \dot{u} &+ &b_0 u & : & 2乗があるので非線形 \\a_2 \ddot{y} &+& a_1 \dot{y}^2&+& \color{red}{a_0 ^2} y &=& b_1 \dot{u} &+ &b_0 u & : & 係数は2乗しても係数のままなので線形 \end{array} $$

線形システムは、式がシンプルで扱いやすいのが特徴です。入出力数が増えたり、微分の回数が増えたり、連立方程式になっても、線形でさえあれば厳密な解を求めることができます

例えば下の式は、入力が2つ($u_1,u_2$)、出力が3つ($y_1,y_2,y_3$)の3階連立微分方程式です。複雑に見えますが、線形なので厳密解がしっかりと求まります。すごいですね!

$$ \left\{ \begin{array}{l} \dddot{y}_1 + \ddot{y}_1 + \dot{y}_2 + y_3 = \dot{u}_1 + u_2 \\ \dddot{y}_2 + \ddot{y}_2 + \dot{y}_3 + y_3 = \dot{u}_1 + u_1 \\ \dddot{y}_1 + \ddot{y}_3 + \dot{y}_3 + y_3 = \dot{u}_2 + u_2 \end{array}\right.$$

一方で非線形システムは、線形システム以外を全てカバーする広い対応範囲が特徴です。ただし式が複雑なので、基本的に厳密な解を求めることができません

時変システムと時不変システム

線形システム・非線形システムは、係数(より厳密には入出力と状態以外の変数)の形式によってさらに時変システム時不変システムに分けられます。

具体的には、係数が定数であるものは時不変システム、係数が時間に依存するものは時変システムと呼ばれます。係数が1つでも時間に依存すれば、それは時変システムです。

$$ \begin{array}{lllllllllll} a_2 \ddot{y} &+ &a_1 \dot{y} &+ &a_0 y &= & b_1 \dot{u} &+ &b_0 u & : & 係数が定数なので時不変 \\ a_2 \ddot{y} &+ &\color{red}{a_1(t)} \dot{y} &+ &a_0 y &= & b_1 \dot{u} &+ &b_0 u & : &係数が時間に依存するので時変\end{array} $$

線形システムは、時変であるか時不変であるかによって扱いやすさが結構変わります(時不変のほうが扱いやすい)。よってこれらを区別するために、それぞれを「線形時変システム」「線形時不変システム」と呼ぶこともあります。

一方で非線形システムはもともと複雑なので、時変であるか時不変であるかによって扱いやすさはそこまで変わりません。よって「非線形時変システム」「非線形時不変システム」と区別して呼ぶことはそんなにありません。(意味は通じますが)

それぞれの扱いやすさのイメージをざっくり図で表すと、次のようになります。

線形時不変・線形時変・非線形時不変・非線形時変システムの扱いやすさのイメージ

線形時不変システムの例

例として、次のような機械システムを考えます。

線形時不変システムの例としてのばねダンパ系

このシステムは、次のように線形時不変システムとしてモデリングできます。

$$ m\ddot{x} + c\dot{x} + kx = f $$

前述の通り、線形時不変システムは一番シンプルで扱いやすいので、まずこれを目指してモデリングが行われます。よって実用上は、線形システムのほとんどが時不変となります。なお、古典制御で扱うのは線形時不変システムのみです

ちなみに、線形時不変システムのなかでも特に扱いやすいものを「プロパーなシステム」としてさらに区別することもあります。詳しくは、こちらのページをご覧ください。

スポンサーリンク

線形時変システムの例

先ほど説明した通り、線形システムのほとんどは時不変システムとしてモデリングされるので、線形時変システムが登場する機会は少なめです。ここでは、どのようなときに線形時変システムが使われるのかを紹介します。

※少し詳細まで踏み込んだ説明をするため、線形システムと非線形システムの違いだけざっくり知りたい方は読み飛ばしても構いません。

線形時変な制御対象の例(ほとんどない)

先ほどの機械システムを再び考えます。今、システムが動作するにつれてばねが徐々に温まり、それに応じてばね定数$k$が初期値$k_0$から$k_f$へ変化するとします。このシステムの運動方程式は、例えば次のように線形時変システムとして表すことができます。

$$ \begin{array}{ll}m\ddot{x} + c\dot{x} + k(t)x = f &:機械システムのモデル\\ k(t) = (k_0 – k_f) e^{-t} + k_f &:ばね定数のモデル\end{array}$$

時間に依存するばね定数

ばね定数を時間の関数$k(t)$として、時間が経つにつれて(だいたい5秒かけて)変化するようにモデリングしているわけですね。このように、物理変数の変化を時間の関数として応急処置的にモデリングすることが稀にあります。

ただし、これはあくまで応急処置であり、本質的な(お行儀の良い)モデリングではないことに注意してください。

例えば今回の場合、ばね定数は本質的には時間に直接依存しているのではなく、温度に依存しています。当然、ばね定数は「5秒かけて変化するぜ!」と思って変化しているわけではありませんよね。動作条件が常に同じならこれでも良いですが、動作条件が変わればばね定数は10秒かけて変化するかもしれません。

このような場合は、ばね定数を温度$\theta$の関数$k(\theta)$とし、システムの温度変化を別途モデリングするほうが、本質的な(お行儀の良い)モデルとなります。

$$ \begin{array}{ll}m\ddot{x} + c\dot{x} + k(\theta)x = f &:機械システムのモデル\\ k(\theta) = a_1 \theta + a_0 &:ばね定数のモデル(例)\\ C\dot{\theta} + \frac{1}{R}\theta = q(\dot{x}) &:温度変化のモデル(例)\end{array}$$

こうすれば、様々な動作条件に対しても、ばね定数の変化を正しく表現できます。ただしこの場合は、温度変化のモデリングが新たに必要となりますし、式も複雑(上の場合は非線形)になってしまいます。

このようにそれぞれに利点・欠点があるので、どのようにモデリングするかはケースバイケースで柔軟に判断する必要があります。そこが設計者の腕の見せ所でもありますが、基本的には物理変数を直接時間の関数とすることはほとんどないと考えてよいでしょう。

線形時変な制御器の例(たまにある)

一方で制御器は人が勝手に設計するものなので、制御の係数を時間の関数とする(つまり線形時変システムとする)ことはたまにあります

例えば、制御を徐々に有効化/無効化する場合がこれにあたります。例として、次のような簡単な比例制御システムを考えましょう。

比例制御システムのブロック線図

$K$は定数の制御ゲインで、制御対象は線形システムであるとします。今、制御開始直後にシステムが大きく暴れてしまい、それが問題となっているとしましょう。

制御開始直後に暴れるシステムの例

もし制御をいきなりONにするのが暴れる原因であれば、制御を徐々に有効化させることが有効です。これは、次のような係数$w_{+}(t)$を制御器にかけることで実現できます。

$$ \begin{gather} u = w_{+}(t) K e \\ w_{+}(t) = 1 – e^{-t} \end{gather}$$

時変な係数を挿入した制御システム
時変な制御係数の例

$w_{+}(t)$によって、だいたい5秒かけて徐々に制御が有効化されていますね。このとき、制御器は入力$e$、出力$u$の線形時変システムであると解釈できます。当然、制御器と制御対象をまとめたシステム全体も、線形時変システムとなりますね。

また他の解決策として、制御開始時だけ別の線形制御$g(e)$を適用し、後は普通の比例制御に戻すことも考えられます。これは、次のような係数$w_{-}(t)$を用いることで実現できます。

$$ \begin{gather} u = \ubg{w_{+}(t) K e}{先ほどの制御} + \ubg{w_{-} (t)g(e)}{開始時の制御} \\ w_{-}(t) = e^{-t} \end{gather}$$

時変な係数を挿入した制御システムの例
時変な制御係数の例

$w_{-}(t)$により制御開始時に$g(e)$が働き、だいたい5秒かけてそれが無効化されるわけですね。

上記の例は「とりあえず最初の5秒だけ制御をこうしたい」という設計指針に基づいたものですので、係数を時間の関数とすることは本質的なアプローチであると考えられます(その設計指針自体が本質的かはともかく)。

同様の方法で制御の中盤・終盤の係数を調整することも考えられますが、これはほとんど行われません。ばね定数の例と同様に「何秒後に中盤・終盤となるか」は動作条件によって大きく変わるため、調整タイミングを時間で指定するのが困難になるからです。よって中盤・終盤を考える場合は、やはり時間ではなく入出力などの物理量に基づいて係数を調整するほうがよいでしょう。(もちろん制御開始時もそのようにしても構いません)

スポンサーリンク

非線形システムの例

単純な非線形システムの例としては、振り子が挙げられます。

非線形システムの例としての振り子

このシステムは、次のように非線形な運動方程式で表されます。

$$ml^2 \ddot{\theta} + c \dot{\theta} + mgl \ubg{\sin \theta }{非線形} = \tau$$

上式は、入出力以外の係数が全て定数なので時不変システムです。一方で、例えば振り子の質量が$m(t)$と時間に依存すれば、時変システムとなります。

前述の通り、非線形システムは厳密な解を求めることができないため、制御するには工夫が必要となります。非線形制御理論では、例えば次のようなアプローチが取られます。

  • コンピュータ計算により強引に解を求める(例:数値最適化)
  • 厳密解は分からなくとも、制御量だけは無理やり一定値に収束させる(例:リアプノフ関数を用いた制御)

またテイラー展開などを用いて、非線形システムを扱いやすい線形システムに近似することもよく行われます。これにより、精度は下がりますが厳密解が求まり、線形の制御理論を適用することが可能となります。

$$\begin{gather} \sin \theta \approx \theta と近似して、 \\ ml^2 \ddot{\theta}+ c \dot{\theta} + mgl \theta = \tau\end{gather}$$

以上、線形システム・非線形システムの違いと、時変システム・時不変システムの違いについての解説でした。式の形だけでなく、上で説明したような実用上の使い方もイメージしておくと便利ですので、頭の片隅に置いておいてくださいね。

このページのまとめ
  • 数式モデルが「係数×入出力(の微分)」の項だけで表されるものは線形システム、それ以外は非線形システム
  • 係数が定数であるものは時不変システム、係数が時間に依存するものは時変システム
  • 線形システムは扱いやすい、非線形システムは扱いにくい
  • 時不変システムは扱いやすい、時変システムは扱いにくい

コメント