DynamicSystems[Linearize] - ある点におけるシステムの線形モデルの作成
|
使い方
|
|
Linearize( eqs, u, y, linpoint, opts)
|
|
パラメータ
|
|
eqs
|
-
|
方程式または式の equation, expression, または set もしくは list;線形化する方程式。式 expr を指定する場合、方程式 と解釈されます。
|
u
|
-
|
list または set;入力変数
|
y
|
-
|
list または set;出力変数
|
linpoint
|
-
|
list(equation) または set(equation);線形化が実行される付近の点
|
opts
|
-
|
(オプション) option = value 形式の方程式;Linearize コマンドのオプションを指定します
|
|
|
|
|
オプション
|
|
与えられた方程式を上記の明示的な非線形形式に簡単化する必要がある(true)か、または、システムは既にこの形式であり、この手順は省略可能である(false)かを指定します。デフォルトは true です。
•
|
functions = list of lists
|
システム内にあるユーザが定義した関数。各関数は、 [name, input argument type list, output type, Maple function] の形式リスト内に記述されています。
•
|
outputoption = statespace または equation
|
線形化されたシステムを 状態空間系オブジェクト(state-space system object) (statespace) として返すか、微分(differential) もしくは 代数方程式系オブジェクト(algebraic equation system object) (equation)として返すかを指定します。デフォルトは statespace です。
outputoption = statespace の場合、線形化されたシステムが状態空間オブジェクトで完全に表されるかどうかの確認を実行します。checkpoint オプションは、この確認を無効化し(false)、元の変数に関して状態空間オブジェクトが返されます。デフォルトでは、常に確認が実行される checkpoint = true に設定されています。
•
|
equilibriumtolerance = positive
|
linpoint が平衡点かどうか確認するときに使用される の値を指定します。 である場合、 により与えられる linpoint は平衡点とみなされます。 が複数のコンポーネントで構成されている場合、各コンポーネントの絶対値がテストされます。デフォルトでは、 です。
生成される DynamicSystems オブジェクトの入力変数の基本名。デフォルトの値は DynamicSystems[SystemOptions] で指定します。
生成される DynamicSystems オブジェクトの出力変数の基本名。デフォルトの値は DynamicSystems[SystemOptions] で指定します。
生成される DynamicSystems オブジェクトの状態変数の基本名。デフォルトは DynamicSystems[SystemOptions] で指定します。
システムを線形化する時間を指定します。この値は、時変システムや時間に左右される条件を伴う区分関数に必要です。 デフォルト値は 0 です。
|
|
アプリケーションと例題
|
|
例 1:基本の使用法
>
|
sys1 := [diff(x[1](t), t) = x[2](t)^2 - 4,
diff(x[2](t), t) = x[1](t) - 1 + u(t),
y(t) = x[1](t)+x[2](t)];
|
| (5.1) |
>
|
eq_point1 := EquilibriumPoint(sys1, [u(t)], constraints = [x[1](t) > 0], initialpoint = [u(t) = 0, x[1](t) = 2, x[2](t) = 4]);
|
| (5.2) |
>
|
lin_point1 := [op(eq_point1[1]), op(eq_point1[3])];
|
| (5.3) |
>
|
lin_model1a := Linearize(sys1, [u(t)], [y(t)], lin_point1);
|
| (5.4) |
線形化点 は厳密にゼロの値になりません。線形モデルを計算して、より厳しい許容値を求めます。
>
|
lin_model1b := Linearize(sys1, [u(t)], [y(t)], lin_point1, 'equilibriumtolerance' = 1e-10);
|
| (5.5) |
同じ許容値の設定で checkpoint オプションを無効化します。
>
|
lin_model1c := Linearize(sys1, [u(t)], [y(t)], lin_point1, 'equilibriumtolerance' = 1e-10, 'checkpoint' = false);
|
| (5.6) |
例 2:ユーザが定義した関数の使用
>
|
sys2 := {piecewise(x[1](t)<0, x[1](t), x[2](t) + x[1](t)^2) * piecewise(u(t)<0, cos(y(t)), sin(y(t))) = sin(x[1](t)^2) + 5 * y(t) + diff(x[1](t), t, t), y(t) - x[1](t)^2 + u(t)*x[1](t), diff(x[2](t), t) = f(x[1](t), u(t))};
|
| (5.7) |
>
|
user_function := [f, [float, float], float,
proc(x, y)
if y>0 then
return cos(x)*2+y;
end if:
return sin(x) - 2*y+1;
end proc];
|
| (5.8) |
>
|
eq_point2 := EquilibriumPoint(sys2, [u(t)], functions = [user_function], initialpoint = [x[1](t) = 1, x[2](t) = 1]);
|
| (5.9) |
>
|
lin_point2 := [op(eq_point2[1]), op(eq_point2[3])];
|
| (5.10) |
平衡点において導関数の値より一次高い許容値を選択し、平衡する点の条件が確実に満たされるようにします。
>
|
epsilon := 10 * max(map(abs@rhs, eq_point2[2]));
|
| (5.11) |
>
|
lin_model2a := Linearize(sys2, [u(t)], [y(t)], lin_point2, functions = [user_function], 'equilibriumtolerance' = epsilon);
|
| (5.12) |
statevariable, inputvariable, および outputvariable オプションの例
>
|
lin_model2b := Linearize(sys2, [u(t)], [y(t)], lin_point2, functions = [user_function], 'equilibriumtolerance' = epsilon, statevariable = XX, inputvariable = UU, outputvariable = YY);
|
| (5.13) |
例 3:移動中のカート上の倒立振り子
変数
|
垂直位置からの振り子の反時計回りの角変位
|
|
振り子の角速度
|
|
カートの位置
|
|
カートの角速度
|
|
カートに加えられる水平力
|
|
|
パラメータ
|
振り子の半分の長さ
|
|
振り子の質量
|
|
カートの質量
|
|
重力定数(9.8 )
|
|
|
>
|
sys3 := [diff(x(t), t) = y(t), diff(theta(t), t) = phi(t), diff(y(t), t) = -(-3*cos(theta(t))*sin(theta(t))*g-2*u(t)+2*m*L*sin(theta(t))*phi(t)^2)/(-3*cos(theta(t))*m+2*M+2*m), diff(phi(t), t) = -3*(-sin(theta(t))*g*M-sin(theta(t))*g*m-m*u(t)+m^2*L*sin(theta(t))*phi(t)^2)/((-3*cos(theta(t))*m+2*M+2*m)*m*L)];
|
| (5.14) |
線形化点を以下のように求めます。
>
|
lin_point3 := [phi(t)=0, x(t)=0, y(t)=0, theta(t)=0, u(t) = 0];
|
| (5.15) |
>
|
lin_model3 := Linearize(sys3, [u(t)], [phi(t), x(t), y(t), theta(t)], lin_point3);
|
| (5.16) |
lin_model3[1] で与えられる状態空間オブジェクトは、線形制御理論を使用した安定化制御装置の作成に使用することができます。
|
|