線形な系と系の時間発展
系の状態を、出力を、入力をとする。
はスカラーでもいいし、ベクトルに取ることもできる。
系に適当な線形化をして、以下の方程式で時間発展を追うことができるする。
はそれぞれ適当な次元の行列。
このような系を制御する。
つまり、任意の時間に任意の状態に到達するようなを与えることができるだろうか?
状態フィードバックコントローラ
と取ります。
を状態フィードバックゲインという。
このとき、時間発展の方程式は
となる。
ここで簡単のため、目標の状態はとする。
もしが目標の場合、を状態に取り直しておつりの項をどうにかすることを考えよう。
物理ではおなじみの行列の指数関数
を使うと、の時間発展は形式的に以下のように書ける。
はコントローラの設計次第で自分で選ぶことができるので
今はが対角化できるように取れているとする。
を対角成分が左上から順番にとなっているn次の対角行列とする。
はいま、ある行列を使って
と書けている。「指数関数」の定義より
なので
の両辺のを右からかけて
を新たにとすれば(線形変換しただけ)
ここで、は対角行列となっている。
「指数関数」の定義式に代入すれば直ちに
となっていることがわかる。
系の時間発展は結局、の固有値をうまく配置すればいいことになる。
固有値は全部実部が負にとりたいし所望の緩和時間後に目標値に(限りなく近く)なってほしいし、虚部はなるべく小さくしたい。
一つでも固有値が正だと系は発散してしまうので、そうならないように状態フィードバックゲインを調整しなくてはならない。
Matlab/Octaveでの実装
都合のいい状態フィードバックゲインを選んでくれる関数があります
あなたが神か・・・