1

状態方程式(物理じゃないよ)を解く

87
0

導入

 今回は状態方程式を解きます.状態方程式ってのは,熱力学で登場するPV=nRTではなく
x˙=Ax+Bu
です.これは制御工学で登場します.

準備

 厳密に定式化すると以下のようになります.

状態方程式

 ベクトルx(t)Mn,1(R), u(t)Mr,1(R),行列AMn,n(R), BMn,r(R)に対して
x˙=Ax+Bu
状態方程式という.

制御工学(特に現代制御)では,x状態ベクトルu入力ベクトルと呼び,状態方程式からシステムの制御や解析を行います.たとえば,力学システムでは状態ベクトルをx=(位置, 速度)Tなどとおきます.
 また遷移行列を定義します.

遷移行列

 正方行列A,実数tに対して,遷移行列eAt
eAt:=n=01n!(At)n
と定義する.ただし(At)0は単位行列Iとする.

これは指数関数exx=0まわりのTaylor展開:ex=xk/(k!)に行列Atを代入することで得られる形になっています.この遷移行列は,以下のような指数関数と同じ性質が成り立ちます.

遷移行列の性質

 遷移行列eAtは指数関数と同様にddt(eAt)=AeAteA0=IeA(t1+t2)=eAt1eAt2{eAt}1=eAtが成り立つ.

定義に従って計算

 eAt=n=0Ann!tn=I+n=1Ann!tnより
ddt(eAt)=O+n=1An(n1)!tn1=An=0Ann!tn=AeAt,eA0=I+n=1Ann!0n=I,eA(t1+t2)=n=0Ann!(t1+t2)n=n=0Ann!k=0nn!k!(nk)!t1kt2nk=n=0k=0nAnk!(nk)!t1kt2nk=i=0j=0Ai+jt1it2ji!j!=(i=0Ait1ii!)(j=0Ajt2jj!)=eAt1eAt2,eAteAt=eA0=I.

導出

発見的導出

B=Oのとき

 状態方程式は
x˙=Ax
となります.この微分方程式の解空間Wは次元が1:dimW=1の線形空間になります.したがって具体的に解ξ(t)を見つければ,Wの一般解はx(t)=Cξ(t)となります(Cは定数).そこでx=eAtccxと同形状の定ベクトル)としてみると,これは状態方程式を満たします.これで具体的な解:ξ(t)=eAtcが見つかったので,初期条件:x(0)=x0(=Cc)として
x(t)=eAtx0
となります.

BOのとき

 状態方程式は
x˙=Ax+Bu
です.ここでx=0teA(tτ)Bu(τ)dτとおいてみます.すると
x˙=ddt(eAt0teAτBu(τ)dτ)=AeAt0teAτBu(τ)dτ+eAt(eAtBu(t))=Ax+Bu
となって,状態方程式の特殊解であることがわかります.よってX=x0teA(tτ)Bu(τ)dτとおくと,X
X˙=AX
を満たします.これは前節B=Oの場合と同じ微分方程式なのでX=eAtx0となります(ここでX(0)=x(0)=x0に注意).よって,状態方程式の解は
x(t)=eAtx0+0teA(tτ)Bu(τ)dτ.

解析的導出

 状態方程式は
x˙=Ax+Bu
です.両辺にeAtMn,n(R)を左から乗じるとeAtx˙=eAtAx+eAtBu.定義からeAtA=AeAtで,定理1と積の微分法から
ddt(eAtx)=eAtBu.
両辺を積分すると
0tddτ(eAτx(τ))dτ=0teAτBu(τ)dτeAtx(t)eA0x(0)=0teAτBu(τ)dτeAtx(t)=x0+0teAτBu(τ)dτ
両辺にeAtMn,n(R)を左から乗じて
x(t)=eAtx0+0teA(tτ)Bu(τ)dτ.

具体例で確認

 導出した公式をまとめると以下のようになります.

状態方程式の解

 状態方程式:x˙=Ax+Buの解は
x(t)=eAtx0+0teA(tτ)Bu(τ)dτ.

これを具体的な例で確認してみます.

単振動系

入力なし(u=0)のとき

 水平で摩擦のない床に質量mの物体がばね(ばね定数:k)によって壁と接続されているとします.物体の位置をばねの伸びXで表すとき,状態ベクトルをx=(位置,速度)T=(X, X˙)Tとおけば,状態方程式は
x˙=Ax,ただし,A=(01k/m0).
初期条件をx(0)=(X0, v0)T(=:x0)とすれば,公式からx=eAtx0.遷移行列eAtを計算すると,ω=kmとして
eAt=n=0t2n(2n)!A2n+n=0t2n+1(2n+1)!A2n+1=n=0t2n(2n)!(ω200ω2)n+n=0t2n+1(2n+1)!A(ω200ω2)n=n=0t2n(2n)!(ω2)nI+n=0t2n+1(2n+1)!(ω2)nA=((1)n(2n)!(ωt)2n1ω(1)n(2n+1)!(ωt)2n+1ω(1)n(2n+1)!(ωt)2n+1(1)n(2n)!(ωt)2n)=(cosωt1ωsinωtωsinωtcosωt)
よって
x=(XX˙)=eAtx0=(X0cosωt+v0ωsinωtωX0sinωt+v0cosωt).

入力あり(強制振動)のとき

 先ほどの系に入力として外力f=FsinΩtを与える場合を考えます.すると運動方程式はmX¨+kX=FsinΩtゆえ,状態ベクトル:x=(X, X˙)T,入力ベクトル:u=fとすれば状態方程式は
x˙=Ax+Bu,ただし,A=(01k/m0)=(01ω20),B=(01/m).
よって一般解は
x=eAtx0+0teA(tτ)Bu(τ)dτ.
第2項の積分は
0teA(tτ)Bu(τ)dτ=0t(cosω(tτ)1ωsinω(tτ)ωsinω(tτ)cosω(tτ))(0FmsinΩτ)dτ=Fm0t(1ωsinω(tτ)sinΩτcosω(tτ)sinΩτ)Tdτ=Fm0t(cos((ω+Ω)τωt)cos((Ωω)τ+ωt)2ωsin((ω+Ω)τωt)+sin((Ωω)τ+ωt)2)Tdτ=F2m(sinΩt+sinωtω(ω+Ω)sinΩtsinωtω(Ωω)cosΩt+cosωtω+Ω+cosΩt+cosωtΩω)T
であるから,一般解は
x(t)=(X0cosωt+v0ωsinωt+F2m(sinΩt+sinωtω(Ω+ω)sinΩtsinωtω(Ωω))ωX0sinωt+v0cosωtF2m(cosΩtcosωtΩ+ω+cosΩtcosωtΩω))=(X0cosωt+v0ωsinωt+Fmω(Ω2ω2)(ΩsinωtωsinΩt)ωX0sinωt+v0cosωt+FΩm(Ω2ω2)(cosωtcosΩt)).

ちなみに

 入力の角振動数Ωが固有振動数ωと一致するときはどうなるか調べてみます.x(t)の第1・2項は収束が明らかですが,第3項は微妙です.そこで
Fmω(Ω2ω2)(ΩsinωtωsinΩt)=FΩm(Ω+ω)×sinωtωsinΩtΩΩω
と変形し,後半sinωt/ωsinΩt/ΩΩωの収束値を調べてみます.この値のΩ=ωの場合の収束値は,微分係数の定義からg(x)=sin(tx)/x (x>0)とすればg(ω)=tcosωtω+sinωtω2です.よって
limΩωx(t)=X0cosωt+v0ωsinωt+F2mω2(sinωtωtcosωt)
となり,最後がtcosωtという時間発展に伴って振幅がどんどん増加する項になります.つまり入力の振動数が固有振動数と一致すると大きく振動するという結果が得られます.

投稿日:2024年12月14日
更新日:26日前
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

のんびりやります

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 導入
  2. 準備
  3. 導出
  4. 発見的導出
  5. 解析的導出
  6. 具体例で確認
  7. 単振動系