AsymptoticOutputTracker[sys,{f1,…},{p1,…}]
アフィン系 sys の出力に減衰率 pjで基準信号 fiを追跡させる状態フィードバック制御法則を与える.
AsymptoticOutputTracker[{sys,{out1,…},{in1,…}},…]
使用する出力 outiおよび制御入力 injを指定する.
AsymptoticOutputTracker
AsymptoticOutputTracker[sys,{f1,…},{p1,…}]
アフィン系 sys の出力に減衰率 pjで基準信号 fiを追跡させる状態フィードバック制御法則を与える.
AsymptoticOutputTracker[{sys,{out1,…},{in1,…}},…]
使用する出力 outiおよび制御入力 injを指定する.
詳細とオプション
- 系 sys はStateSpaceModelあるいはAffineStateSpaceModelでよい.
- 基準信号 fiは1変数の純関数でなければならない.
- 減衰率 piは閉ループ系の極の位置に対応し,極の数 piはTotal[SystemsModelVectorRelativeOrders[sys]]で与えられる.
- 出力{out1,…}および入力{in1,…}は部分指定であり,デフォルトではAllであると解釈される.
- 出力および基準信号の数は同じでなければならない.
- AsymptoticOutputTrackerはFeedbackLinearizeに基づく.任意の残差ダイナミクスは有効な結果について安定していなければならない. »
例題
すべて開く すべて閉じる例 (1)
ssm = StateSpaceModel[{{{-3}}, {{1}}, {{1}}, {{0}}}, {{x[t], 2}}, Automatic,
Automatic, t, SamplingPeriod -> None, SystemsModelLabels -> None];
ref = Sin[t];fb = AsymptoticOutputTracker[ssm, ref, {-5}]csys = SystemsModelStateFeedbackConnect[ssm, fb]y = OutputResponse[csys, {0}, {t, 0, 8}];Plot[{y, ref}, {t, 0, 8}, PlotLegends -> {"output", "reference"}]スコープ (4)
assm = AffineStateSpaceModel[{{Subscript[x, 2], Subscript[x, 1] +
Subscript[x, 2]}, {{0}, {1 + Subscript[x, 1]}},
{Subscript[x, 1]}, {{0}}}, {{Subscript[x, 1], 1},
{Subscript[x, 2], 0}}, Automatic, {Automatic}, t,
SamplingPeriod -> None];ref = Piecewise[{{1, 0 ≤ t ≤ 5}, {2, 5 < t ≤ 10}, {1, 10 < t ≤ 15}}, 0];Plot[ref, {t, 0, 20}, PlotStyle -> Thick]fb = AsymptoticOutputTracker[assm, ref, {-3, -4}]csys = SystemsModelStateFeedbackConnect[assm, fb];
y = OutputResponse[csys /. Indeterminate -> 0, {0}, {t, 0, 20}];Plot[y, {t, 0, 20}, PlotRange -> All, AxesOrigin -> {0, 0}]pts = Thread[{Range[0, 50, 5], RandomReal[{-10, 10}, 11]}];ref = Interpolation@pts;
Plot[ref[t], {t, 0, 50}]assm = AffineStateSpaceModel[{{Subscript[x, 1] + Subscript[x, 2],
Subscript[x, 1] - 2*Subscript[x, 2] -
Subscript[x, 1]*Subscript[x, 3],
Subscript[x, 1] + Subscript[x, 1]*Subscript[x, 2] -
4*Subscript[x, 3]}, {{0}, {1}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
Automatic, {Automatic}, t, SamplingPeriod -> None];fb = AsymptoticOutputTracker[assm, ref[t], {-4 + I, -4 - I}];csys = SystemsModelStateFeedbackConnect[assm, fb];
y = OutputResponse[csys, {0}, {t, 0, 50}];Plot[y, {t, 0, 50}, Epilog -> {PointSize[Medium], Point[pts]}]出力よりも入力が多い場合は,フィードバック入力のいくつかはゼロになる:
ssm = StateSpaceModel[{{{-1, 0}, {0, -2}}, {{1, 2}, {1, -1}}, {{1, 2}}, {{0, 0}}},
{{Subscript[x, 1][t], -1},
{Subscript[x, 2][t], 1}},
{Subscript[u, 1][t], Subscript[u, 2][t]},
Automatic, t, SamplingPeriod -> None, SystemsModelLabels -> None];
ref = Sin[t];fb1 = AsymptoticOutputTracker[ssm, ref, {-5, -8}]fb2 = AsymptoticOutputTracker[{ssm, All, 2}, ref, {-5, -8}]csys1 = SystemsModelStateFeedbackConnect[ssm, fb1]csys2 = SystemsModelStateFeedbackConnect[ssm, fb2, All, {2}]y1 = OutputResponse[csys1, {0}, {t, 0, 12}];
y2 = OutputResponse[csys2, {0}, {t, 0, 12}];Plot[{y1, y2}, {t, 0, 12}]ssm = StateSpaceModel[{{{0, 1, 0, 0}, {-2, -3, 0, 0}, {0, 0, 0, 1}, {0, 0, -2, -3}},
{{0, 0}, {1, 0}, {0, 0}, {0, 1}}, {{2, 1, 2, 2}, {1, 1, 2, 1}}, {{0, 0}, {0, 0}}}];
outs = {1};
inps = {2};ref = Sin[t];
fb = AsymptoticOutputTracker[{ssm, {1}, {2}}, ref, {-10, -11}]csys = SystemsModelStateFeedbackConnect[ssm, fb, All, {2}]or = OutputResponse[csys, {0, 0}, {t, 0, 10}][[1]]Plot[{or, ref}, {t, 0, 10}]アプリケーション (3)
片端にロードを持ち,指定された軌道を追跡する,柔軟なジョイントのための制御器を設計する:»
pars = {Subscript[J, m] -> 0.4, k -> 100, Subscript[J, l] -> 1, M -> 1.5, g -> 9.8, L -> 0.4};assm = AffineStateSpaceModel[{Subscript[J, l] Subscript[θ, l]''[t] + M g L Sin[Subscript[θ, l][t]] + k(Subscript[θ, l][t] - Subscript[θ, m][t]) == 0, Subscript[J, m] Subscript[θ, m]''[t] - k(Subscript[θ, l][t] - Subscript[θ, m][t]) == τ[t]}, {Subscript[θ, l][t], Subscript[θ, l]'[t], Subscript[θ, m][t], Subscript[θ, m]'[t]}, τ[t], {Subscript[θ, l][t]}, t]traj = 5 ° + -3 ° t^2 / 5 + 1° t^3 / 25;
Plot[traj, {t, 0, 10}]{Plot[Evaluate@D[traj, t], {t, 0, 10}], Plot[Evaluate@D[traj, {t, 2}], {t, 0, 10}]}cinps = AsymptoticOutputTracker[assm, #, {-7 + 2I, -7 - 2 I, -9, -10}]& /@ {traj, -15 °}//Flatten;csys = SystemsModelStateFeedbackConnect[assm, {Piecewise[{{cinps[[1]], 0 ≤ t ≤ 10}}, cinps[[2]]]}];ジョイントは,初期トランジェントの後で軌跡に従い,10秒後に
で止まる:
OutputResponse[{csys /. pars, {5 °, 0, 0, 0}}, {0}, {t, 0, 15}];Plot[Evaluate@{traj, %}, {t, 0, 15}]ステッピングモーターが,一次系の軌跡に従って,0.1秒でロードを位置1°に置くような制御法則を計算する.モーターのモデル:»
pars = {Subscript[K, m] -> 2 / 10, R -> 45 / 100, L -> 2 / 1000, J -> 65 / 10000, Subscript[n, p] -> 30, B -> 10 / 10000};asys = AffineStateSpaceModel[
{{(Sin[Subscript[n, p]*θ[t]]*
Subscript[K, m]*Subscript[n, p]*
ω[t] - R*Subscript[i, a][
t])/L,
((-Cos[Subscript[n, p]*θ[t]])*
Subscript[K, m]*Subscript[n, p]*
ω[t] - R*Subscript[i, b][
t])/L, ω[t],
((-B)*ω[t] +
Cos[Subscript[n, p]*θ[t]]*
Subscript[K, m]*Subscript[n, p]*
Subscript[i, a][t] -
Sin[Subscript[n, p]*θ[t]]*
Subscript[K, m]*Subscript[n, p]*
Subscript[i, b][t])/J},
{{L^(-1), 0}, {0, L^(-1)}, {0, 0}, {0, 0}},
{θ[t]}, {{0, 0}}},
{{Subscript[i, a][t], 0},
{Subscript[i, b][t], 0},
{θ[t], 0}, {ω[t], 0}},
{{vsa[t], 0}, {vsb[t], 0}}, {Automatic},
t, SamplingPeriod -> None] /. pars;ref = OutputResponse[TransferFunctionModel[{{{1}}, 1 + s/100}, s], UnitStep[t], {t, 0, 0.1}];
Plot[ref, {t, 0, 0.1}, PlotRange -> All]Short[fb = AsymptoticOutputTracker[asys, ref, {-300, -500, -600}]]SystemsModelStateFeedbackConnect[asys, fb];Plot[Evaluate@OutputResponse[%, {0, 0}, {t, 0, 0.1}], {t, 0, 0.1}, PlotRange -> All]代謝物
,
,
の割合が操作変数とみなされ,
,
,
,
が定数とみなされる生化学グリコーゲン経路.0.2,0.5,0.4における代謝物
,
,
の値を保つフィードバック法則を設計する:»
constants = {Subscript[x, 6][t] -> 3, Subscript[x, 7][t] -> 40, Subscript[x, 9][t] -> 2.86, Subscript[x, 10][t] -> 4};asys = AffineStateSpaceModel[
{{0.07788*Subscript[x, 4][t]^0.66*Subscript[x, 6][
t] - (1.0627*Subscript[x, 1][t]^1.53*
Subscript[x, 7][t])/Subscript[x, 2][t]^
0.59, (-0.00079*Subscript[x, 2][t]^3.97*
Subscript[x, 8][t])/Subscript[x, 3][t]^
3.06 + (0.585*Subscript[x, 1][t]^0.95*
Subscript[x, 5][t]^0.32*
Subscript[x, 7][t]^0.62*
Subscript[x, 10][t]^0.38)/
Subscript[x, 2][t]^0.41,
(0.00079*Subscript[x, 2][t]^3.97*Subscript[x, 8][
t])/Subscript[x, 3][t]^3.06 -
1.0588*Subscript[x, 3][t]^0.3*Subscript[x, 9][
t], 0, 0, 0}, {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {0, 1, 0},
{0, 0, 1}}, {Subscript[x, 1][t],
Subscript[x, 2][t], Subscript[x, 3][t]},
{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}}, {{Subscript[x, 1][t], 0.067},
{Subscript[x, 2][t], 0.465},
{Subscript[x, 3][t], 0.15},
{Subscript[x, 4][t], 10},
{Subscript[x, 5][t], 5}, {Subscript[x, 8][t],
136}}, Automatic, {Automatic, Automatic, Automatic}, t, SamplingPeriod -> None] /. constants;0.2,0.5,0.4における代謝物
,
,
の値を保つフィードバック法則:
fb = AsymptoticOutputTracker[asys, {0.2, 0.5, 0.4}, {-0.5 + I, -0.5 - I, -1 + I , -1 - I, -2, -2.5}];csys = SystemsModelStateFeedbackConnect[asys, fb];
Plot[Evaluate@OutputResponse[csys, {0, 0, 0}, {t, 0, 7}], {t, 0, 7}]fb /. Thread[{Subscript[x, 1][t], Subscript[x, 2][t], Subscript[x, 3][t], Subscript[x, 4][t], Subscript[x, 5][t], Subscript[x, 8][t]} -> StateResponse[csys, {0, 0, 0}, {t, 0, 7}]];GraphicsRow[Table[Plot[i, {t, 0, 7}, PlotRange -> All, ImageSize -> 145], {i, %}]]特性と関係 (2)
assm = AffineStateSpaceModel[{{-Subscript[x, 1][t],
-Subscript[x, 2][t] + Subscript[x, 2][t]^2,
0}, {{1 + Subscript[x, 1][t]}, {1}, {1}},
{Subscript[x, 3][t]}, {{0}}},
{Subscript[x, 1][t], Subscript[x, 2][t],
Subscript[x, 3][t]}, {u[t]}, {Automatic},
t, SamplingPeriod -> None];Total@SystemsModelVectorRelativeOrders[assm]AsymptoticOutputTracker[assm, Sin[t], {-2}]assm = AffineStateSpaceModel[{{Subscript[x, 2][t] +
Subscript[x, 2][t]^2, Subscript[x, 3][t] -
Subscript[x, 1][t]*Subscript[x, 4][t] +
Subscript[x, 4][t]*Subscript[x, 5][t],
Subscript[x, 2][t]*Subscript[x, 4][t] +
Subscript[x, 1][t]*Subscript[x, 5][t] -
Subscript[x, 5][t]^2, Subscript[x, 5][t],
Subscript[x, 2][t]^2},
{{0, 1}, {0, 0}, {Cos[Subscript[x, 1][t] -
Subscript[x, 5][t]], 1}, {0, 0}, {0, 1}},
{Subscript[x, 1][t] - Subscript[x, 5][t],
Subscript[x, 4][t]}, {{0, 0}, {0, 0}}},
{{Subscript[x, 1][t], 0.1},
{Subscript[x, 2][t], 0.3},
{Subscript[x, 3][t], 0}, {Subscript[x, 4][t],
0.4}, {Subscript[x, 5][t], 1}},
{Subscript[, 1][t], Subscript[, 2][t]}, {Automatic, Automatic},
t, SamplingPeriod -> None];SystemsModelVectorRelativeOrders[assm]ref = {Sin[t], Cos[t]};
fb = AsymptoticOutputTracker[assm, ref, {-2, -3, -4, -10, -12}]or = OutputResponse[SystemsModelStateFeedbackConnect[assm, fb], {0, 0}, {t, 0, 3}];Plot[{or, ref}, {t, 0, 3}, PlotLegends -> {"output 1", "output 2", "ref 1", "ref 2"}]考えられる問題 (1)
フィードバック法則が有効となるためには,任意の残差ダイナミクスが安定していなければならない:
asys = AffineStateSpaceModel[{{Subscript[x, 1] - Subscript[x, 2],
Subscript[x, 1] - Subscript[x, 2],
3*Subscript[x, 2] + Subscript[x, 3] +
(Subscript[x, 1] + Subscript[x, 2] + Subscript[x, 3])^
2}, {{0}, {-1 - Subscript[x, 1]*Subscript[x, 2]},
{1 + Subscript[x, 1]*Subscript[x, 2]}},
{Subscript[x, 1]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {v}, {Automatic},
Automatic, SamplingPeriod -> None];fb = AsymptoticOutputTracker[asys, 0.1, {-1.5, -0.5}]SystemsModelStateFeedbackConnect[asys, fb];StateResponse[%, 0, {t, 0, 15}];FeedbackLinearize[asys, Automatic, "ResidualSystem"];Eigenvalues@First@Normal@StateSpaceModel@%関連するガイド
-
▪
- 非線形制御系
テキスト
Wolfram Research (2014), AsymptoticOutputTracker, Wolfram言語関数, https://reference.wolfram.com/language/ref/AsymptoticOutputTracker.html.
CMS
Wolfram Language. 2014. "AsymptoticOutputTracker." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/AsymptoticOutputTracker.html.
APA
Wolfram Language. (2014). AsymptoticOutputTracker. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/AsymptoticOutputTracker.html
BibTeX
@misc{reference.wolfram_2026_asymptoticoutputtracker, author="Wolfram Research", title="{AsymptoticOutputTracker}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/AsymptoticOutputTracker.html}", note=[Accessed: 15-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_asymptoticoutputtracker, organization={Wolfram Research}, title={AsymptoticOutputTracker}, year={2014}, url={https://reference.wolfram.com/language/ref/AsymptoticOutputTracker.html}, note=[Accessed: 15-September-2026]}