FeedbackLinearize[asys]
状態変換およびフィードバックでAffineStateSpaceModel asys に入出力線形化を用いる.
FeedbackLinearize[asys,{z,v}]
新たな状態 z および新たな制御入力 v を指定する.
FeedbackLinearize[asys,{z,v},"prop"]
特性"prop"を計算する.
FeedbackLinearize
FeedbackLinearize[asys]
状態変換およびフィードバックでAffineStateSpaceModel asys に入出力線形化を用いる.
FeedbackLinearize[asys,{z,v}]
新たな状態 z および新たな制御入力 v を指定する.
FeedbackLinearize[asys,{z,v},"prop"]
特性"prop"を計算する.
詳細とオプション
- FeedbackLinearizeは,厳密線形化としても知られている.
- FeedbackLinearizeは,線形系 lsys についての線形制御設計の手法を使って非線形系 asys が制御できるように,非線形系 asys から線形系 lsys を構築する.
- FeedbackLinearizeはLinearizingTransformationDataオブジェクトを返す.このオブジェクトは,フィードバック線形化に基づいた分析と設計に必要な特性を抽出するために使うことができる
- 変換された系 tsys は,線形系 lsys からなり,残差系 rsys が含まれることもある.この残差系では,内部ダイナミクスは安定でなければならず,そうでなければ可観測ではない.
- 変換された系に関連した特性
-
"LinearSystem" 系のモデル lsys "ResidualSystem" 系のモデル rsys "TransformedSystem" 系のモデル tsys - lsys についての安定化制御器 cs を設計することで,残差系 rsys が安定であれば結果の閉ループ系も安定する.
- もとの非線形系 asys についての制御器を配備するためには,制御器 cs を変換してもとの変数を使う必要がある.
- 制御器および推定器のもとの座標への変換に関連する特性
-
{"OriginalSystemController",cs} もとの座標の制御器 cs {"OriginalSystemEstimator",es}
および
についての推定器{"ClosedLoopSystem",cs} もとの座標での閉ループ系 {"OriginalSystemFullController",cs} もとの座標での系のモデル cs - 制御器,推定器等の別のシミュレーションや実装を配備するために,フィードバック線形化についてのより詳細な特性を使うことができる.
- 系 asys
は,フィードバック補償器,前補償器,後補償器に接続されており,修正された系
を与える.ただし,
は修正入力,
は
からなる状態ベクトル(補償器状態が追加されることがある),
は修正出力である. - フィードバック補償器は,基本的に
で与えられる
と
との変換である.ただし,
は分離行列である. - 補償器の特性
-
"FeedbackCompensator"
から
の系のモデル"InverseFeedbackCompensator"
から
の系のモデル"InverseFeedbackTransformation" 規則
のリスト"DecouplingMatrix" 行列 
"PreCompensator"
から
の系のモデル"PostCompensator"
から
の系のモデル - 明示的な線形系 lsys および可能な残差系 rsys を得るためには,状態変換
を行う必要がある. - 状態変換およびゼロダイナミクスに関連する特性
-
"InverseStateTransformation" 規則
のリスト"ZeroDynamicsSystem" 系のモデル 
"ZeroDynamicsManifold" rsys 状態がそれについて進化した多様体 - FeedbackLinearizeは,次の設定のMethodオプションを取る.
-
Automatic 自動的にメソッドを決定する(デフォルト) "Identity" 恒等変換を伴うアイデンティティフィードバックを適用する "Burnovsky" Burnovsky形の lsys を返す
例題
すべて開く すべて閉じる例 (1)
フィードバック変換および非線形変換を使って系を厳密に線形化する:
ℱ = FeedbackLinearize[AffineStateSpaceModel[{{0, Subscript[x, 1] + Subscript[x, 2]^2,
Subscript[x, 1] - Subscript[x, 2]},
{{E^Subscript[x, 2]}, {E^Subscript[x, 2]}, {0}},
{Subscript[x, 3]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {u}, {Automatic},
Automatic, SamplingPeriod -> None], {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3]}, {v}}]ℱ["LinearSystem"]StateFeedbackGains[%, {-3 + 2I, -3 - 2I, -5}]ℱ[{"ClosedLoopSystem", %}]Plot[Evaluate@OutputResponse[%, UnitStep[t], {t, 0, 3}], {t, 0, 3}, PlotRange -> All]スコープ (21)
基本的な用法 (5)
ℱ = FeedbackLinearize[asys = AffineStateSpaceModel[{{Subscript[x, 2], Subscript[x, 1]^2},
{{0}, {1 + Subscript[x, 1]}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2]}, {u}, {Automatic},
Automatic, SamplingPeriod -> None]];lsys = ℱ["LinearSystem"]κ = StateFeedbackGains[lsys, {-3 + I, -3 - I}]csys = ℱ[{"ClosedLoopSystem", κ}]Plot[Evaluate@OutputResponse[csys, UnitStep[t], {t, 0, 10}], {t, 0, 10}, PlotRange -> All]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{-Subscript[x, 2], Subscript[x, 2]^2 +
Subscript[x, 3], Subscript[x, 1] + Subscript[x, 2]},
{{1}, {Subscript[x, 1]}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None]];rsys = ℱ["ResidualSystem"]Eigenvalues[First[Normal[StateSpaceModel[rsys]]]]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{-Subscript[x, 2], Subscript[x, 2]^2 +
Subscript[x, 3], Subscript[x, 1] + Subscript[x, 2]},
{{1}, {Subscript[x, 1]}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None], {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3]}, {v}}];ℱ["ResidualSystem"]FeedbackLinearize[AffineStateSpaceModel[{{-Subscript[x, 2], Subscript[x, 2]^2 +
Subscript[x, 3], Subscript[x, 1] + Subscript[x, 2]},
{{1}, {Subscript[x, 1]}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None], {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3]}, {v}}, "ResidualSystem"]FeedbackLinearize[AffineStateSpaceModel[{{Subscript[x, 1], Subscript[x, 3]^2,
Subscript[x, 1] + Subscript[x, 3]},
{{1}, {Subscript[x, 2]}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None], Automatic, {"LinearSystem", "ResidualSystem", "TransformedSystem"}]変換された系の特性 (1)
ℱ = FeedbackLinearize[AffineStateSpaceModel[{{Subscript[x, 1], Subscript[x, 3]^2,
Subscript[x, 1] + Subscript[x, 3]},
{{1}, {Subscript[x, 2]}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None]];lsys = ℱ["LinearSystem"]rsys = ℱ["ResidualSystem"]ℱ["TransformedSystem"]これは lsys および rsys から組み立てることもできる:
SystemsModelMerge[{lsys, rsys}];
SystemsModelExtract[%, All, SystemsModelOrder[lsys]]制御器と推定器の特性 (5)
ℱ = FeedbackLinearize[AffineStateSpaceModel[{{-Subscript[x, 1]^2 + Subscript[x, 2],
Subscript[x, 3], -Subscript[x, 1]}, {{0}, {0}, {1}},
{Subscript[x, 1]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {u}, {Automatic},
Automatic, SamplingPeriod -> None]];κ = StateFeedbackGains[ℱ["LinearSystem"], {-4, -5, -6}]ℱ[{"OriginalSystemController", κ}]asys = AffineStateSpaceModel[{{-Subscript[x, 1] + Subscript[x, 2],
-Subscript[x, 2] + Subscript[x, 3],
-Subscript[x, 1] - Subscript[x, 1]*Subscript[x, 2] -
Subscript[x, 3]}, {{0}, {0}, {1 + Subscript[x, 1]}},
{Subscript[x, 1]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {u}, {y},
Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys];l = EstimatorGains[ℱ["LinearSystem"], {-4, -5, -6}]ℓ = ℱ[{"OriginalSystemEstimator", l}]//SimplifyOutputResponse[SystemsModelDelete[ℓ, None, -1], Join[{UnitStep[t]}, OutputResponse[{asys, {0.1, 0, 0.2}}, UnitStep[t], {t, 0, 8}]], {t, 0, 8}];pe = Plot[%, {t, 0, 8}, PlotStyle -> Dashed, PlotLegends -> Range[3]]StateResponse[{asys, {0.1, 0, 0.2}}, UnitStep[t], {t, 0, 8}];
Show[Plot[%, {t, 0, 8}, PlotLegends -> Range[3]], pe, PlotRange -> All]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{-Subscript[x, 1]^2 + Subscript[x, 2],
Subscript[x, 3], -Subscript[x, 1]}, {{0}, {0}, {1}},
{Subscript[x, 1]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {u}, {Automatic},
Automatic, SamplingPeriod -> None]];κ = StateFeedbackGains[ℱ["LinearSystem"], {-4, -5, -6}]csys = ℱ[{"ClosedLoopSystem", κ}]//SimplifyPlot[Evaluate@OutputResponse[csys, UnitStep[t], {t, 0, 4}], {t, 0, 4}, PlotRange -> All]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{Subscript[x, 2] + Subscript[x, 3]^2,
Subscript[x, 1]^2 + Subscript[x, 3] +
4*Subscript[x, 1]*Subscript[x, 3]*(Subscript[x, 2] +
Subscript[x, 3]^2), -2*Subscript[x, 1]*
(Subscript[x, 2] + Subscript[x, 3]^2)},
{{0}, {-2*(-1 + Subscript[x, 1]*Subscript[x, 2])*
Subscript[x, 3]},
{-1 + Subscript[x, 1]*Subscript[x, 2]}},
{Subscript[x, 1]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {Subscript[u, 1]},
{Automatic}, Automatic, SamplingPeriod -> None]];lsys = ℱ["LinearSystem"]epoles = {-6, -10 + 2I, -10 - 2I};
egains = EstimatorGains[lsys, epoles]rpoles = {-2, -3 + I, -3 - I};
rgains = StateFeedbackGains[lsys, rpoles]lc = EstimatorRegulator[lsys, {egains, rgains}, "EstimatorRegulatorFeedbackModel"]ℱ[{"OriginalSystemController", lc}]csys = ℱ[{"ClosedLoopSystem", lc}]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{(1 + Subscript[x, 2])*Subscript[x, 3],
Subscript[x, 2], (-1 - Subscript[x, 1])*Subscript[x, 2]},
{{0}, {1 + Subscript[x, 2]}, {-Subscript[x, 3]}},
{Subscript[x, 1]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, Automatic, {Automatic}, Automatic,
SamplingPeriod -> None]];κ = StateFeedbackGains[ℱ["LinearSystem"], {-2, -3 + 2I, -3 - 2I}]
fnc = ℱ[{"OriginalSystemFullController", κ}]制御器全体についての入力は参照入力と状態フィードバックである:
inps = Join[{0}, StateResponse[{ℱ[{"ClosedLoopSystem", κ}], {1, 2, 1}}, 0, {t, 0, 5}]];Plot[inps, {t, 0, 5}, PlotRange -> All]Plot[Evaluate@OutputResponse[fnc, inps, {t, 0, 5}], {t, 0, 5}]補償器の特性 (5)
asys = AffineStateSpaceModel[{{(-Subscript[x, 1])*Subscript[x, 2],
-Subscript[x, 3], -Subscript[x, 3],
Subscript[x, 2] - Subscript[x, 1]*Subscript[x, 5],
Subscript[x, 2] - Subscript[x, 3]*Subscript[x, 5]},
{{1 + Subscript[x, 1], 0}, {0, 0},
{-1, 1 - Subscript[x, 1]*Subscript[x, 2]},
{0, 1 + Subscript[x, 3]}, {Subscript[x, 1], 0}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4], Subscript[x, 5]},
{Subscript[u, 1], Subscript[u, 2]}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None];ℱ = FeedbackLinearize[asys];
fb = ℱ["FeedbackCompensator"]csys = SystemsModelSeriesConnect[fb, asys]//SimplifyPlot[Evaluate@OutputResponse[csys, {Sin[t], 0}, {t, 0, 7}], {t, 0, 7}, AxesOrigin -> {0, -0.2}]Plot[Evaluate@OutputResponse[csys, {0, Sin[t]}, {t, 0, 7}], {t, 0, 7}, AxesOrigin -> {0, -1}]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{(-Subscript[x, 1])*Subscript[x, 2],
-Subscript[x, 3], -Subscript[x, 3],
Subscript[x, 2] - Subscript[x, 1]*Subscript[x, 5],
Subscript[x, 2] - Subscript[x, 3]*Subscript[x, 5]},
{{1 + Subscript[x, 1], 0}, {0, 0},
{-1, 1 - Subscript[x, 1]*Subscript[x, 2]},
{0, 1 + Subscript[x, 3]}, {Subscript[x, 1], 0}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4], Subscript[x, 5]},
{Subscript[u, 1], Subscript[u, 2]}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None]];ℱ["InverseFeedbackCompensator"]ℱ["InverseFeedbackTransformation"]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{(-Subscript[x, 1])*Subscript[x, 2],
-Subscript[x, 3], -Subscript[x, 3],
Subscript[x, 2] - Subscript[x, 1]*Subscript[x, 5],
Subscript[x, 2] - Subscript[x, 3]*Subscript[x, 5]},
{{1 + Subscript[x, 1], 0}, {0, 0},
{-1, 1 - Subscript[x, 1]*Subscript[x, 2]},
{0, 1 + Subscript[x, 3]}, {Subscript[x, 1], 0}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4], Subscript[x, 5]},
{Subscript[u, 1], Subscript[u, 2]}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None]];ℱ["DecouplingMatrix"]この行列は,任意の制御設計が有効になるためには可逆でなければならない:
MatrixRank[%]D[Last /@ ℱ["InverseFeedbackTransformation"], {{Subscript[u, 1], Subscript[u, 2]}}]可能であれば,分離行列を非特異行列にするために,前補償器が計算される:
ℱ = FeedbackLinearize[asys = AffineStateSpaceModel[{{0, Subscript[x, 4],
Subscript[x, 2]*Subscript[x, 3] + Subscript[x, 4], 0},
{{1, 0}, {Subscript[x, 3], 0}, {0, 0}, {0, 1}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, {Subscript[u, 1], Subscript[u, 2]},
{Automatic, Automatic}, Automatic, SamplingPeriod -> None]];comp = ℱ["PreCompensator"]系と直列の前補償器は,相対次数のよく定義されたベクトルになる:
SystemsModelVectorRelativeOrders[SystemsModelSeriesConnect[comp, asys]]SystemsModelVectorRelativeOrders[asys]asys = AffineStateSpaceModel[{{Subscript[x, 1]^3 + Subscript[x, 2],
Subscript[x, 3], 0}, {{0}, {0}, {1}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, Automatic,
{Automatic, Automatic, Automatic}, Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys]ℱ["PostCompensator"]Table[FeedbackLinearize[SystemsModelExtract[asys, All, i], Automatic, "LinearSystem"], {i, Range[3]}]ゼロダイナミクス (5)
ℱ = FeedbackLinearize[AffineStateSpaceModel[{{Subscript[x, 1], Subscript[x, 3]^2,
Subscript[x, 1] + Subscript[x, 3]},
{{1}, {Subscript[x, 2]}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None]];ℱ["ZeroDynamicsSystem"]SystemsModelDelete[ℱ["ResidualSystem"], All]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{Subscript[x, 1], Subscript[x, 3]^2,
Subscript[x, 1] + Subscript[x, 3]},
{{1}, {Subscript[x, 2]}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None]];ℱ["ZeroDynamicsManifold"]Range[SystemsModelOrder[ℱ["LinearSystem"]]];
Thread[(Last /@ ℱ["InverseStateTransformation"][[%]]) == 0]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{Subscript[x, 2] + Subscript[x, 1]*
Subscript[x, 3], Subscript[x, 3] -
Subscript[x, 1]*Subscript[x, 3]^2, 0},
{{0}, {-Subscript[x, 1]}, {1}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None]];ℱ["ResidualSystem"]残差ダイナミクスがないので,線形制御設計を使うことができる:
k = LQRegulatorGains[N@ℱ["LinearSystem"], {IdentityMatrix[3], {{8}}}]csys = ℱ[{"ClosedLoopSystem", k}];Plot[Evaluate@OutputResponse[csys, UnitStep[t], {t, 0, 15}], {t, 0, 15}, PlotRange -> All]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{-Subscript[x, 1], -Subscript[x, 2] +
Subscript[x, 2]^2, 0}, {{1 + Subscript[x, 1]}, {1}, {1}},
{Subscript[x, 3]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {u}, {Automatic},
Automatic, SamplingPeriod -> None]];ℱ["ResidualSystem"]残差ダイナミクスは安定しているので,フィードバック設計に基づいた線形法が有効である:
StateSpaceModel[%]線形フィードバック設計を使ってフィードバックの法則を求める:
k = StateFeedbackGains[ℱ["LinearSystem"], {-3}]csys = ℱ[{"ClosedLoopSystem", k}];Plot[Evaluate@OutputResponse[csys, UnitStep[t], {t, 0, 2}], {t, 0, 2}, PlotRange -> All]ℱ = FeedbackLinearize[AffineStateSpaceModel[{{Subscript[x, 1] + Subscript[x, 2],
Subscript[x, 3]^2, Subscript[x, 1] + Subscript[x, 3]},
{{1}, {Subscript[x, 2]}, {0}},
{Subscript[x, 1] - Subscript[x, 2]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None]];ℱ["ResidualSystem"]Eigenvalues@First@Normal@StateSpaceModel[%]このような非最小位相系に対しては,線形手法に基づいた設計は有効ではない:
k = StateFeedbackGains[ℱ["LinearSystem"], {-10}]設計されたフィードバックは,本質的に行儀の悪い系を安定化させることはできない:
csys = ℱ[{"ClosedLoopSystem", k}];Plot[Evaluate@OutputResponse[csys, UnitStep[t], {t, 0, 3}], {t, 0, 3}, PlotRange -> All]オプション (2)
Method (2)
線形系については,デフォルトで,恒等変換とアイデンティティフィードバックが使われる:
lsys = AffineStateSpaceModel[{{-Subscript[x, 1], -3*Subscript[x, 2],
-4*Subscript[x, 3]}, {{1}, {-1}, {1}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{{Subscript[, 1], 0}}, {Automatic}, Automatic, SamplingPeriod -> None];prop = {"InverseStateTransformation", "InverseFeedbackTransformation", "ResidualSystem", "LinearSystem"};FeedbackLinearize[lsys, Automatic, prop]FeedbackLinearize[lsys, Automatic, prop, Method -> "Burnovsky"]非線形系については,デフォルトで,結果はBurnovsky形になる:
asys = AffineStateSpaceModel[{{-1, Subscript[x, 1]*Subscript[x, 3],
Subscript[x, 2]}, {{Sin[Subscript[x, 2]]}, {1}, {0}},
{Subscript[x, 3]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3]}, {Subscript[, 1]}, {Automatic},
Automatic, SamplingPeriod -> None];FeedbackLinearize[asys, Automatic, {"ResidualSystem", "LinearSystem"}]残差ダイナミクスから入力を切り離すことができるかもしれない:
FeedbackLinearize[asys, Automatic, {"ResidualSystem", "LinearSystem"}, Method -> {"Burnovsky", "InputDecoupled" -> True}]アプリケーション (7)
電気機械系 (2)
厳密線形化を使って磁気浮上系を安定させる制御器を設計し,近似線形化による設計と比較する:
assm = AffineStateSpaceModel[IconizedObject[«eqns»], {{x[t], Subscript[x, 0]}, {x'[t], 0}, {i[t], Subscript[x, 0]Sqrt[(m g/c)]}}, {{v[t], r Subscript[x, 0]Sqrt[(m g/c)]}}, x[t], t] /. IconizedObject[«pars»]フィードバックのない系は不安定である.ここでは初期値{0.2,0.,0.1}を使う:
OutputResponse[{assm, {0.2, 0, 0.1}}, 0, {t, 0, 5}];
Plot[%, {t, 0, 5}]これには残差ダイナミクスがないので,完全にフィードバック線形化が可能である:
ℱ = FeedbackLinearize[assm, {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3]}, 𝒱}];ℱ["ResidualSystem"]κ1 = StateFeedbackGains[ℱ["LinearSystem"], {-1.5, -2 + I, -2 - I}]csys1 = ℱ[{"ClosedLoopSystem", κ1}];初期値{0.3,0.,0.31305}で系のシミュレーションを行う:
OutputResponse[{csys1, {0.3, 0, 0.31305}}, 0, {t, 0, 6}];p1 = Plot[%, {t, 0, 6}]ssm = StateSpaceModel[assm];κ2 = StateFeedbackGains[ssm, {-1.5, -2 + I, -2 - I}]csys2 = SystemsModelStateFeedbackConnect[assm, κ2];OutputResponse[{csys2, {0.3, 0, 0.31305}}, 0, {t, 0, 35}];p2 = Plot[%, {t, 0, 35}, PlotStyle -> Dashed]OutputResponse[{csys2, {0.3, 0, 0.31305}}, 0, {t, 0, 35}];Show[Plot[%, {t, 0, 35}, PlotStyle -> Dashed], p1]2個の直流ホイールモーターへの電圧を入力として使い,二輪倒立振子(例:セグウェイ)のための安定制御器を求める:
状態{θ,θ',ψ,ψ',ϕ,ϕ'}の系のAffineStateSpaceModel:
asys = AffineStateSpaceModel[{{Subscript[θ, d],
(4.905*Sin[ψ] - 245.25*Cos[ψ]*Sin[ψ] +
(83.809 + 50.2854*Cos[ψ])*Subscript[θ, d] +
Cos[ψ]*(-0.02499 + 1.25*Cos[ψ])*Sin[ψ]*
Subscript[ϕ, d]^2 -
83.8089*Subscript[ψ, d] - 50.2854*Cos[ψ]*
Subscript[ψ, d] - 1.6866*Sin[ψ]*
Subscript[ψ, d]^2)/(-1.7065 - 0.04*Cos[ψ] +
Cos[ψ]^2), Subscript[ψ, d],
(248.1923*Sin[ψ] + (-49.8831 - 50.2853*Cos[ψ])*
Subscript[θ, d] - 1.265*Cos[ψ]*Sin[ψ]*
Subscript[ϕ, d]^2 +
49.883*Subscript[ψ, d] + 50.2853*Cos[ψ]*
Subscript[ψ, d] - 0.02*Sin[ψ]*
Subscript[ψ, d]^2 + Cos[ψ]*Sin[ψ]*
Subscript[ψ, d]^2)/(-1.7065 - 0.04*Cos[ψ] +
Cos[ψ]^2), Subscript[ϕ, d],
(2*Subscript[ϕ, d]*(141.4276 + 2*Cos[ψ]*
Sin[ψ]*Subscript[ψ, d]))/
(-3.7992 + Cos[2*ψ])},
{{0, 0}, {(-78.8557 - 47.3134*Cos[ψ])/(-1.7065 - 0.04*Cos[ψ] +
Cos[ψ]^2), (-78.8557 - 47.3134*Cos[ψ])/
(-1.7065 - 0.04*Cos[ψ] + Cos[ψ]^2)}, {0, 0},
{(46.9349 + 47.3134*Cos[ψ])/(-1.7065 - 0.04*Cos[ψ] +
Cos[ψ]^2), (46.9349 + 47.3134*Cos[ψ])/
(-1.7065 - 0.04*Cos[ψ] + Cos[ψ]^2)}, {0, 0},
{53.3193/(-3.7992 + Cos[2*ψ]), -53.3193/(-3.7992 + Cos[2*ψ])}},
{θ, ϕ}, {{0, 0}, {0, 0}}},
{θ, Subscript[θ, d], ψ,
Subscript[ψ, d], ϕ,
Subscript[ϕ, d]}, {Subscript[v, l],
Subscript[v, r]}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None];ℱ = FeedbackLinearize[asys]Eigenvalues@First@Normal@StateSpaceModel@ℱ["ZeroDynamicsSystem"];
Chop[%, 10^-4]κ = StateFeedbackGains[ℱ["LinearSystem"]//N, {-4, -5, -6 + 3I , -6 - 3I}]csys = ℱ[{"ClosedLoopSystem", κ}];{θs, θsprime, ψs, ψsprime, ϕs, ϕsprime} = StateResponse[csys, (UnitStep[t] - UnitStep[t - 1]){2, 1}, {t, 0, 5}];Table[Plot[res, {t, 0, 5}, PlotRange -> All], {res, {ψs, ψsprime}}]Table[Plot[res, {t, 0, 5}, PlotRange -> All], {res, {θs, θsprime}}]Table[Plot[res, {t, 0, 5}, PlotRange -> All], {res, {ϕs, ϕsprime}}]機械系 (2)
柔軟構造の振動制御器を設計し,費やされる制御努力を計算する.減衰がない柔軟構造の2モードモデル:»
asys = AffineStateSpaceModel[{{Subscript[x, 2], 0, Subscript[x, 4],
(-ω^2)*ArcTan[Subscript[x, 3]]}, {{0}, {1}, {0}, {1}},
{Subscript[x, 1] - Subscript[x, 3]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, Automatic, {Automatic}, Automatic, SamplingPeriod -> None] /. ω -> 0.1;StateResponse[{asys, {1, 0, 1, 0}}, {0}, {t, 0, 200}];
Plot[#, {t, 0, 200}, PlotRange -> All]& /@ %[[{1, 3}]]ℱ = FeedbackLinearize[asys]κ = StateFeedbackGains[ℱ["LinearSystem"], {-0.25, -0.75, -1 + 2I, -1 - 2I}]sr = StateResponse[{ℱ[{"ClosedLoopSystem", κ}], {1, 0, 1, 0}}, {0}, {t, 0, 6}];Plot[#, {t, 0, 6}, PlotRange -> All]& /@ %[[{1, 3}]]OutputResponse[ℱ[{"OriginalSystemFullController", κ}], Join[{0}, sr], {t, 0, 6}];Plot[%, {t, 0, 6}, PlotRange -> All]軸流圧縮機の振動を押さえる制御器を設計する.スロットルを入力とした圧縮機のモデル:»
asys = AffineStateSpaceModel[
{{1.56 - ΔP + 1.5*(-1 + Subscript[m, c]) -
0.5*(-1 + Subscript[m, c])^3,
Subscript[m, c]/b},
{{0}, {(-b^(-1))*ΔP}}, {Subscript[m, c]},
{{0}}}, {{Subscript[m, c], 2.5413}, {ΔP, 2.0413}},
{{Subscript[u, 1], 1.244938}}, {Automatic}, Automatic, SamplingPeriod -> None];ParametricPlot[Evaluate@StateResponse[asys /. b -> 2, 0, {t, 0, 200}], {t, 50, 200}]ℱ = FeedbackLinearize[asys]StateFeedbackGains[ℱ["LinearSystem"], {-2 + I, -2 - I}]csys = ℱ[{"ClosedLoopSystem", %}]//SimplifyStateResponse[{csys, RandomReal[{0, 1}, 2]} /. b -> 2, 0, {t, 0, 10}];
Plot[%, {t, 0, 3}, PlotRange -> All]化学系 (1)
等温連続撹拌槽反応過程を改善する制御器を設計する:»
pars = {Subscript[c, B1] -> 20.05, Subscript[c, B2] -> 0.2, Subscript[k, 1] -> 0.4, Subscript[k, 2] -> 1};asys = AffineStateSpaceModel[{{(-Subscript[k, 1])*Sqrt[Subscript[x, 1]],
((-Subscript[k, 2])*Subscript[x, 2])/
(1 + Subscript[x, 2])^2},
{{1, 1}, {(Subscript[c, B1] - Subscript[x, 2])/
Subscript[x, 1], (Subscript[c, B2] -
Subscript[x, 2])/Subscript[x, 1]}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{{Subscript[x, 1], 25.05}, {Subscript[x, 2], 9}},
{{Subscript[u, 1], 1}, {Subscript[u, 2], 1}}, {Automatic, Automatic},
Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys]κ = StateFeedbackGains[ℱ["LinearSystem"], {-2 + 2I, -2 - 2I}]csys = ℱ[{"ClosedLoopSystem", κ}]StateResponse[AffineStateSpaceModel[csys /. pars, {Subscript[x, 1] -> 35, Subscript[x, 2] -> 2.5}], UnitStep[t]{1, 1}, {t, 0, 2}];
p = Plot[%, {t, 0, 2}, PlotRange -> All]StateResponse[AffineStateSpaceModel[asys /. pars, {Subscript[x, 1] -> 35, Subscript[x, 2] -> 2.5}], UnitStep[t]{1, 1}, {t, 0, 2}];Show[p, Plot[%, {t, 0, 2}, PlotRange -> All, PlotStyle -> Dashed]]rInp := Interpolation@Thread[{Range[0, 5, 0.5], RandomVariate[NormalDistribution[1, 1], 11]}]Table[StateResponse[AffineStateSpaceModel[csys /. pars, {Subscript[x, 1] -> 26, Subscript[x, 2] -> 8}], rInp[t]{1, 1}, {t, 0, 5}], {3}];
p1 = Plot[Evaluate[%], {t, 0, 5}]Table[StateResponse[AffineStateSpaceModel[asys /. pars, {Subscript[x, 1] -> 26, Subscript[x, 2] -> 8}], rInp[t]{1, 1}, {t, 0, 5}], {3}];
p2 = Plot[Evaluate[%], {t, 0, 5}, PlotStyle -> Dashed]Show[p2, p1, Plot[{25, 9}, {t, 0, 5}, IconizedObject[«plotOpts»]]]電気系 (2)
変化する負荷に依存する誘導電動機の速度応答を改善するための制御器を設計する:»
pars = {Subscript[n, p] -> 1, J -> 0.09, M -> 0.07, Subscript[L, r] -> 0.07, Subscript[R, r] -> 0.3};imotor = AffineStateSpaceModel[{{(-J^(-1))*Subscript[τ, L],
(-Subscript[L, r]^(-1))*Subscript[R, r]*
Subscript[ψ, d], ω*
Subscript[n, p]},
{{((-J^(-1))*M*Subscript[n, p]*
Subscript[ψ, d])/Subscript[L, r], 0},
{0, (M*Subscript[R, r])/
Subscript[L, r]},
{(M*(Subscript[R, r]/Subscript[ψ,
d]))/Subscript[L, r], 0}},
{ω, ρ}, {{0, 0}, {0, 0}}},
{{ω, 100}, {Subscript[ψ, d], -0.2739},
{ρ, 0.2}}, {{Subscript[i, q], 91.2871},
{Subscript[i, d], -3.9123}}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None] /. pars;シミュレーションは,角速度に対するトルクの効果を示している:
Table[Tooltip[StateResponse[{imotor, {100, -0.2, 0.1}}, {91.2871, -3.9123}, {t, 0, 6}][[1]], Subscript[τ, L]], {Subscript[τ, L], {0, 10, 15, 20, 25, 30, 35, 36}}];Plot[Evaluate[%], {t, 0, 6}, PlotRange -> {All, {0, 300}}, PlotStyle -> Dashed]imotorq = SystemsModelSeriesConnect[StateSpaceModel[{{{0}}, {{1, 0}}, {{1}, {0}}, {{0, 0}, {0, 1}}}, {{Subscript[i, q], 91.2871}}, {{Subscript[v, 1], 0}, {Subscript[v, 2], -3.9123}}, SamplingPeriod -> None, SystemsModelLabels -> None], imotor]ℱ = FeedbackLinearize[imotorq]κ = StateFeedbackGains[ℱ["LinearSystem"]//N, {-3 - I , -3 + I, -4, -5}]csys = ℱ[{"ClosedLoopSystem", κ}]//Simplify//Chopさまざまなトルク値について,閉ループ系のシミュレーションを行う:
Table[Tooltip[StateResponse[{csys, {91 , 80, -0.2, 0.1}}, {0, 0}, {t, 0, 3}][[2]], Subscript[τ, L]], {Subscript[τ, L], {0, 10, 15, 20, 25, 30, 35, 36}}];Plot[Evaluate[%], {t, 0, 3}, PlotRange -> All]asys = AffineStateSpaceModel[{{-0.21798365122615806*Subscript[i, md] +
37.19969202258031*Subscript[v, DC] +
Subscript[i, mq]*(-13.623978201634879 -
0.6811989100817439*Subscript[ω, m]) -
204.35967302452318*Subscript[ω, m],
-0.32*Subscript[i, mq] + 362.13068117068144*
Subscript[v, DC] - 1805.8534058534062*
Subscript[ω, m] + Subscript[i, md]*
(29.36 + 1.4679999999999997*Subscript[ω, m]),
-5.606732673267327*^-6*(-259.0002590002591 + 1.*Subscript[i, md])*
(300. + Subscript[i, mq]) -
8.712871287128714/(20. + Subscript[ω, m]),
-5.960464477539063*^-8 - 136522.86972286974*Subscript[i, md] -
905326.7029267036*Subscript[i, mq] -
21569.290876560284*Subscript[i, nd] -
2.7408892835212727*^6*Subscript[i, nq],
-2.9152542372881354*Subscript[i, nd] -
1.*Ω*Subscript[i, nq] +
73.11624025952639*Subscript[v, DC],
1.*Ω*Subscript[i, nd] -
2.9152542372881354*Subscript[i, nq] +
9291.150113631433*Subscript[v, DC]},
{{272.47956403269757 + 2.7247956403269757*Subscript[v, DC], 0, 0, 0},
{0, 400. + 4.*Subscript[v, DC], 0, 0}, {0, 0, 0, 0},
{-10000.*(-1684.641284641285 + Subscript[i, md]),
-10000*(300 + Subscript[i, mq]),
-10000.*(-46404.73361900462 + Subscript[i, nd]),
-10000*(350 + Subscript[i, nq])},
{0, 0, 3389.8305084745766 + 33.898305084745765*Subscript[v, DC], 0},
{0, 0, 0, 3389.8305084745766 + 33.898305084745765*Subscript[v, DC]}},
{Subscript[ω, m], Subscript[i, md],
Subscript[i, nq], Subscript[v, DC]},
{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}},
{Subscript[i, md], Subscript[i, mq],
Subscript[ω, m], Subscript[v, DC],
Subscript[i, nd], Subscript[i, nq]},
{Subscript[U, md], Subscript[U, mq],
Subscript[U, nd], Subscript[U, nq]},
{Automatic, Automatic, Automatic, Automatic}, Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys]StateSpaceModel@ℱ["ZeroDynamicsSystem"];
Eigenvalues@First@Normal[%] /. Ω -> 0lsys = TransferFunctionModel@ℱ["LinearSystem"]線形化と分離が行われた各ループで所望の閉ループ伝達関数を与える制御器:
ctr = TransferFunctionModel[Unevaluated[{{((12 + 16.55 s)/7.2 + s), 0, 0, 0}, {0, 4, 0, 0}, {0, 0, 5, 0}, {0, 0, 0, 6}}], s, SamplingPeriod -> None, SystemsModelLabels -> None];csysl = SystemsModelFeedbackConnect[lsys, ctr]//TransferFunctionCancelcsys = ℱ[{"ClosedLoopSystem", ctr}];
Eigenvalues@First@Normal@StateSpaceModel[csys] /. Ω -> 0y = OutputResponse[{csys /. Ω -> 0}, UnitStep[t], {t, 0, 5}];Plot[y[[1]], {t, 0, 5}]yl = OutputResponse[csysl, UnitStep[t], {t, 0, 5}];
Plot[yl[[1]], {t, 0, 5}]Table[{Plot[y[[i]], {t, 0, 5}], Plot[yl[[i]], {t, 0, 5}]}, {i, {2, 3, 4}}]特性と関係 (9)
asys = AffineStateSpaceModel[{{Subscript[x, 2] + Subscript[x, 2]^2,
Subscript[x, 3] - Subscript[x, 1]*Subscript[x, 4] +
Subscript[x, 4]*Subscript[x, 5],
-Subscript[x, 2]^2 + Subscript[x, 2]*Subscript[x, 4] +
Subscript[x, 1]*Subscript[x, 5], Subscript[x, 5],
Subscript[x, 2]^2}, {{0, 1}, {0, 0},
{Cos[Subscript[x, 1] - Subscript[x, 5]], 1}, {0, 0}, {0, 1}},
{Subscript[x, 1] - Subscript[x, 5], Subscript[x, 4]},
{{0, 0}, {0, 0}}}, {Subscript[x, 1], Subscript[x, 2],
Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]},
{Subscript[, 1], Subscript[, 2]}, {Automatic, Automatic}, Automatic, SamplingPeriod -> None];lsys = FeedbackLinearize[asys, Automatic, "LinearSystem"];{lsys, TransferFunctionModel[lsys]}SystemsModelVectorRelativeOrders[asys]lsys = FeedbackLinearize[AffineStateSpaceModel[{{4*Subscript[x, 1]^3 + Subscript[x, 2],
Subscript[x, 3], 0}, {{0}, {0}, {1}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{Subscript[, 1]}, {Automatic}, Automatic, SamplingPeriod -> None], Automatic, "LinearSystem"]{ControllableModelQ[lsys], ObservableModelQ[lsys]}asys = AffineStateSpaceModel[{{Subscript[x, 1]*Subscript[x, 2],
-Subscript[x, 2], Subscript[x, 1]*Subscript[x, 4],
Subscript[x, 2]}, {{Subscript[x, 1], 1},
{1 + Subscript[x, 3], 0}, {0, 1}, {Subscript[x, 2],
-1 + Subscript[x, 1]}}, {Subscript[x, 1],
Subscript[x, 3]}, {{0, 0}, {0, 0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]},
{Subscript[u, 1], Subscript[u, 2]}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None];ℱ = FeedbackLinearize[asys];{SystemsModelOrder[ℱ["LinearSystem"]], Total@SystemsModelVectorRelativeOrders[asys]}線形系 lsys の次数が4未満なので,残差ダイナミクスが存在する:
ℱ["ResidualSystem"]tfm = TransferFunctionModel[
{{{(s + Subscript[z, 1])*(s +
Subscript[z, 2])}}, s^4 + Subscript[a, 0] +
s*Subscript[a, 1] + s^2*Subscript[a, 2] +
s^3*Subscript[a, 3]}, s, SamplingPeriod -> None,
SystemsModelLabels -> None];zdynamics = FeedbackLinearize[AffineStateSpaceModel[tfm], Automatic, "ZeroDynamicsSystem", Method -> "Burnovsky"];Eigenvalues@First@Normal@StateSpaceModel@zdynamicsasys = AffineStateSpaceModel[{{Cos[Subscript[x, 1]], Subscript[x, 1]*
Subscript[x, 2], -Subscript[x, 2], Subscript[x, 3]},
{{1 + Subscript[x, 4], 0}, {0, 1 + Subscript[x, 1]}, {0, 0},
{Subscript[x, 2], Subscript[x, 3]}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, {Subscript[u, 1], Subscript[u, 2]},
{Automatic, Automatic}, Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys, {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3], Subscript[z, 4]}, {Subscript[v, 1], Subscript[v, 2]}}];zdresp = OutputResponse[{ℱ["ZeroDynamicsSystem"], {1, 1}}, {}, {t, 0, 200}]xtrans = First@Solve[Equal@@@ℱ["InverseStateTransformation"], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}]Last /@ ℱ["InverseFeedbackTransformation"] /. xtrans /. Thread[{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3], Subscript[z, 4]} -> Join[{0, 0}, zdresp]];inp = {Subscript[u, 1], Subscript[u, 2]} /. Solve[% == 0, {Subscript[u, 1], Subscript[u, 2]}]//FlattenOutputResponse[{asys, {0, 0, 1, 1}}, inp, {t, 0, 200}];
{Plot[inp, {t, 0, 200}, PlotRange -> All], Plot[Chop[%], {t, 0, 200}, PlotRange -> All]}残差系 rsys を伴う線形系 lsys は変換された系を与える:
asys = AffineStateSpaceModel[{{Cos[Subscript[x, 1]], Subscript[x, 1]*
Subscript[x, 2], -Subscript[x, 2], Subscript[x, 3]},
{{1 + Subscript[x, 4], 0}, {0, 1 + Subscript[x, 1]}, {0, 0},
{Subscript[x, 2], Subscript[x, 3]}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, {Subscript[u, 1], Subscript[u, 2]},
{Automatic, Automatic}, Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys, {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3], Subscript[z, 4]}, {Subscript[v, 1], Subscript[v, 2]}}];変換された系 tsys では lsys と rsys が並列である:
tsys = SystemsModelMerge[{ℱ["LinearSystem"], SystemsModelDelete[ℱ["ResidualSystem"], None, All]}]ℱ["TransformedSystem"]フィードバック変換および座標変換を使って,もとの系から変換された系を得る:
asys = AffineStateSpaceModel[{{Cos[Subscript[x, 1]], Subscript[x, 1]*
Subscript[x, 2], -Subscript[x, 2], Subscript[x, 3]},
{{1 + Subscript[x, 4], 0}, {0, 1 + Subscript[x, 1]}, {0, 0},
{Subscript[x, 2], Subscript[x, 3]}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, {Subscript[u, 1], Subscript[u, 2]},
{Automatic, Automatic}, Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys, {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3], Subscript[z, 4]}, {Subscript[v, 1], Subscript[v, 2]}}];fb = ℱ["FeedbackCompensator"];SystemsModelSeriesConnect[fb, asys];
StateSpaceTransform[%, {{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}, ℱ["InverseStateTransformation"]}]これは,変換を適用し,次にフィードバックを適用することでも得られる:
fb /. First[Solve[Equal@@@ℱ["InverseStateTransformation"], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}]];StateSpaceTransform[asys, {{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}, ℱ["InverseStateTransformation"]}];SystemsModelSeriesConnect[%%, %]asys = AffineStateSpaceModel[{{Cos[Subscript[x, 1]], Subscript[x, 1]*
Subscript[x, 2], -Subscript[x, 2], Subscript[x, 3]},
{{1 + Subscript[x, 4], 0}, {0, 1 + Subscript[x, 1]}, {0, 0},
{Subscript[x, 2], Subscript[x, 3]}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, {Subscript[u, 1], Subscript[u, 2]},
{Automatic, Automatic}, Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys, {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3], Subscript[z, 4]}, {Subscript[v, 1], Subscript[v, 2]}}];tsys = ℱ["TransformedSystem"];ifb = ℱ["InverseFeedbackCompensator"]ztrans = ℱ["InverseStateTransformation"];StateSpaceTransform[SystemsModelSeriesConnect[ifb, tsys], {ztrans, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}}]SystemsModelSeriesConnect[ifb, StateSpaceTransform[tsys, {ztrans, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}}]]NonlinearStateSpaceModel[asys]ゼロダイナミクスは,すべての入力を削除することで残差ダイナミクスから得られる:
asys = AffineStateSpaceModel[{{Cos[Subscript[x, 1]], Subscript[x, 1]*
Subscript[x, 2], -Subscript[x, 2], Subscript[x, 3]},
{{1 + Subscript[x, 4], 0}, {0, 1 + Subscript[x, 1]}, {0, 0},
{Subscript[x, 2], Subscript[x, 3]}},
{Subscript[x, 1], Subscript[x, 2]}, {{0, 0}, {0, 0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, {Subscript[u, 1], Subscript[u, 2]},
{Automatic, Automatic}, Automatic, SamplingPeriod -> None];ℱ = FeedbackLinearize[asys, {{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3], Subscript[z, 4]}, {Subscript[v, 1], Subscript[v, 2]}}];{ℱ["ZeroDynamics"], SystemsModelDelete[ℱ["ResidualSystem"], All]}考えられる問題 (1)
非アイデンティティーフォードバックは,指定された推定器と実際の推定器の極の不一致の原因となる:
asys = AffineStateSpaceModel[{{Subscript[x, 2],
-5.880000000000002*Sin[Subscript[x, 1]] - 100*Subscript[x, 1] -
Subscript[x, 2] + 100*Subscript[x, 3] + Subscript[x, 4],
Subscript[x, 4], 2.5*(100*Subscript[x, 1] +
Subscript[x, 2] - 100*Subscript[x, 3] -
Subscript[x, 4])}, {{0}, {0}, {0}, {2.5}}, {Subscript[x, 1]},
{{0}}}, {Subscript[x, 1], Subscript[x, 2],
Subscript[x, 3], Subscript[x, 4]}, Automatic, {Automatic}, Automatic,
SamplingPeriod -> None];ℱ = FeedbackLinearize[asys];ℱ["InverseFeedbackTransformation"]ℱ[{"OriginalSystemEstimator", EstimatorGains[ℱ["LinearSystem"], {-1, -2, -3}]}];Eigenvalues@First@Normal@StateSpaceModel[%]ℱ[{"OriginalSystemEstimator", EstimatorGains[ℱ["LinearSystem"], 70{-1, -2, -3}]}];Eigenvalues@First@Normal@StateSpaceModel[%]関連するガイド
-
▪
- 非線形制御系
テキスト
Wolfram Research (2014), FeedbackLinearize, Wolfram言語関数, https://reference.wolfram.com/language/ref/FeedbackLinearize.html.
CMS
Wolfram Language. 2014. "FeedbackLinearize." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FeedbackLinearize.html.
APA
Wolfram Language. (2014). FeedbackLinearize. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FeedbackLinearize.html
BibTeX
@misc{reference.wolfram_2026_feedbacklinearize, author="Wolfram Research", title="{FeedbackLinearize}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/FeedbackLinearize.html}", note=[Accessed: 07-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_feedbacklinearize, organization={Wolfram Research}, title={FeedbackLinearize}, year={2014}, url={https://reference.wolfram.com/language/ref/FeedbackLinearize.html}, note=[Accessed: 07-September-2026]}