ControllableModelQ[sys]
ControllableModelQ[{sys,sub}]
部分系 sub が可制御であればTrueを返す.
ControllableModelQ
ControllableModelQ[sys]
ControllableModelQ[{sys,sub}]
部分系 sub が可制御であればTrueを返す.
詳細とオプション
- ControllableModelQは到達可能モデルとしても知られている.
- 任意の初期状態
と最終状態
について有限時間内に状態を
から
に向ける制御入力が存在する場合,その状態空間モデルは可制御であると言われる. - 系 sys は標準またはディスクリプタのStateSpaceModelあるいはAffineStateSpaceModelでよい.
- 次の部分系 sub を指定することができる. » »
-
All 系全体 "Fast" 速い部分系 "Slow" 遅い部分系 {λ1,…} 固有モード
の部分系 - "Fast"および"Slow"の部分系は,KroneckerModelDecompositionで説明されているように,主にディスクリプタ状態空間モデルに適用される.
- 固有モード λiについてはJordanModelDecompositionに説明がある.
- ControllableModelQには次の設定のMethodオプションが使える.
-
Automatic 適切な検定を自動的に選択する "Distribution" 可制御性分布の階数を使う "Gramian" 可制御性グラミアンの階数または正定性を使う "Matrix" 可制御性行列の階数を使う "PBH" Popov–Belevitch–Hautus階数検定を使う
例題
すべて開く すべて閉じる例 (2)
ControllableModelQ[StateSpaceModel[{{{Subscript[a, 1], 0}, {0, Subscript[a, 2]}},
{{Subscript[b, 1]}, {Subscript[b, 2]}}, {{1, 0}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None]]ControllableModelQ[StateSpaceModel[{{{Subscript[a, 1], 0}, {0, Subscript[a, 2]}},
{{Subscript[b, 1]}, {0}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]スコープ (6)
ControllableModelQ[StateSpaceModel[{{{-5., -2.}, {6., 2.}}, {{1.}, {-1.}}, {{1., 1.}}, {{0.}}},
SamplingPeriod -> None, SystemsModelLabels -> None]]ControllableModelQ[StateSpaceModel[{{{-5, -2}, {6, 2}}, {{1}, {-1}}, {{1, 1}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]ControllableModelQ[StateSpaceModel[{{{0, (-p)*z}, {1, -p - z}},
{{z}, {1}}, {{0, 1}}, {{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]ControllableModelQ[StateSpaceModel[{{{-1, 0}, {0, -3}}, {{1, 0}, {0, 1}}, {{1, -2}}, {{0, 2}}},
SamplingPeriod -> None, SystemsModelLabels -> None]]ControllableModelQ[StateSpaceModel[{{{0, 1}, {-0.4, -1}}, {{0}, {1}}, {{0.68, 1.7}}, {{0}}}, SamplingPeriod -> 0.1,
SystemsModelLabels -> None]]ssm = StateSpaceModel[{{{-1, 0, 1}, {-2, 2, 2}, {0, 0, 0}}, {{0}, {1}, {1}}, {{4, 0, -3}}, {{0}},
{{-2, 2, 2}, {0, 0, 0}, {1, 2, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];ControllableModelQ[ssm]可制御性は遅いモードの可制御性と速いモードの可制御性の両方について等価である(C−可制御性):
{ControllableModelQ[{ssm, "Slow"}], ControllableModelQ[{ssm, "Fast"}]}ssm = StateSpaceModel[{{{-28, 40, 50}, {2, -6, -4}, {-15, 24, 27}}, {{-8}, {1}, {-5}}, {{1, -4, 0}},
{{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];modes = Eigenvalues[First[Normal[ssm]]]Table[{λ, ControllableModelQ[{ssm, λ}]}, {λ, modes}]このことは,ジョルダン形(第3状態に影響を与える方法がない)にも見られる:
JordanModelDecomposition[ssm]//LastAffineStateSpaceModelの可制御性の検定を行う:
ControllableModelQ[AffineStateSpaceModel[{{Subscript[x, 2], 0}, {{0}, {Subscript[x, 1]}}},
{Subscript[x, 1], Subscript[x, 2]}, Automatic, {Automatic, Automatic},
Automatic, SamplingPeriod -> None]]作用点
が与えられた場合は,
からの可制御性の検定が行われる:
ControllableModelQ[AffineStateSpaceModel[{{Subscript[x, 1], Subscript[x, 2]},
{{Subscript[x, 1]}, {1}}}, {{Subscript[x, 1], 0},
{Subscript[x, 2], 0}}, Automatic, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None, SystemsModelLabels -> {None, {}, None}]]ControllableModelQ[AffineStateSpaceModel[{{Subscript[x, 1], Subscript[x, 2]},
{{Subscript[x, 1]}, {1}}}, {Subscript[x, 1],
Subscript[x, 2]}, Automatic, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None]]オプション (7)
Method (7)
デフォルトで,可制御性行列は厳密系と記号系の両方に使われる:
ssm = StateSpaceModel[{{{-1, 4}, {2, 3}}, {{1}, {0}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];ControllableModelQ[ssm, Method -> "Matrix"]ControllabilityMatrixが最大階数であればその系は可制御である:
cm = ControllabilityMatrix[ssm];MatrixRank[cm]ssm = StateSpaceModel[{{{0, 1., 0}, {0, 0, 1.}, {-1., -3., -5.}}, {{0}, {0}, {1.}}, {{1., 0, 0}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];ControllableModelQ[ssm, Method -> "Gramian"]ControllabilityGramianが最大階数であれば,その系は可制御である:
cg = ControllabilityGramian[ssm];MatrixRank[cg]可制御性グラミアンにとって,このことは,それ自身が正定であることと同義である:
PositiveDefiniteMatrixQ[cg]他の数値系にはPopov–Belevitch–Hautus階数検定が用いられる:
ssm = StateSpaceModel[{{{-0.8, 0.2}, {-0.2, 0}}, {{0.5}, {0.01}}, {{1, 0}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];ControllableModelQ[ssm, Method -> "PBH"]
がすべての
について最大階数であるので,この系は可制御である:
{a, b} = Normal[ssm][[{1, 2}]];MatrixRank /@ Table[ArrayFlatten[{{λ IdentityMatrix[2] - a, b}}], {λ, Eigenvalues[a]}]ControllableModelQ[AffineStateSpaceModel[{{0, Subscript[x, 1]}, {{1 + Subscript[x, 1]},
{0}}}, {Subscript[x, 1], Subscript[x, 2]}, Automatic,
{Automatic, Automatic}, Automatic, SamplingPeriod -> None], Method -> "Distribution"]線形系では,可制御性行列と可制御性分布に基づいた検定は等しい:
Table[ControllableModelQ[AffineStateSpaceModel[{{Subscript[x, 1] + Subscript[x, 2],
-Subscript[x, 1]}, {{1}, {0}}}, {Subscript[x, 1],
Subscript[x, 2]}, {Subscript[, 1]}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None], Method -> m], {m, {"Matrix", "Distribution"}}]asys = AffineStateSpaceModel[{{Subscript[x, 1] + Subscript[x, 2],
(-Subscript[x, 1])*Subscript[x, 2]},
{{Subscript[x, 2]}, {1}}}, {Subscript[x, 1],
Subscript[x, 2]}, Automatic, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None];lsys = StateSpaceModel[asys];{ControllableModelQ[asys], ControllableModelQ[lsys]}入力線形系の行列検定は,線形化された系に対して"Matrix"メソッドを使う:
ControllableModelQ[asys, Method -> "Matrix"]asys = AffineStateSpaceModel[{{-14*Subscript[x, 3], 0, -19*Subscript[x, 3]},
{{Subscript[x, 1] + 2*Subscript[x, 2] +
4*Subscript[x, 3]}, {2*Subscript[x, 2]},
{3*Subscript[x, 3]}}}, {Subscript[x, 1], Subscript[x, 2],
Subscript[x, 3]}, Automatic, {Automatic, Automatic, Automatic}, Automatic,
SamplingPeriod -> None];漂流ベクトル場が状態を動かすためにも使える場合は,系は弱可制御である:
ControllableModelQ[asys, Method -> {"Distribution", "DriftVectorField" -> True}]ControllableModelQ[asys]アプリケーション (5)
3個の物体すべての位置と速度を
にかかる力で制御することができる:
ControllableModelQ[StateSpaceModel[{{{0, 1, 0, 0, 0, 0},
{-(Subscript[k, 1] + Subscript[k, 2])/Subscript[m, 1], 0,
Subscript[k, 2]/Subscript[m, 1], 0, 0, 0}, {0, 0, 0, 1, 0, 0},
{Subscript[k, 2]/Subscript[m, 2], 0,
-(Subscript[k, 2] + Subscript[k, 3])/Subscript[m, 2], 0,
Subscript[k, 3]/Subscript[m, 2], 0}, {0, 0, 0, 0, 0, 1},
{0, 0, Subscript[k, 3]/Subscript[m, 3], 0,
-Subscript[k, 3]/Subscript[m, 3], 0}},
{{0}, {0}, {0}, {0}, {0}, {Subscript[m, 3]^(-1)}},
{{1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}}, {{0}, {0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]
ssm = StateSpaceModel[{{{-𝒞^(-1)/Subscript[R, 1], 0},
{0, (-L^(-1))*Subscript[R, 2]}},
{{1/(𝒞*Subscript[R, 1])}, {L^(-1)}}},
SamplingPeriod -> None, SystemsModelLabels -> None];ControllableModelQ[ssm]ControllableModelQ[ssm /. L -> Subscript[R, 1] Subscript[R, 2]𝒞]asys = AffineStateSpaceModel[{{0, 0, 0}, {{Cos[θ], 0}, {Sin[θ], 0}, {0, 1}}},
{x, y, θ}, Automatic, {Automatic, Automatic, Automatic},
Automatic, SamplingPeriod -> None];{ControllableModelQ[asys], ControllableModelQ[StateSpaceModel@asys]}
veh = AffineStateSpaceModel[{{0, 0, 0, 0}, {{Cos[θ + ϕ], 0},
{Sin[θ + ϕ], 0}, {Sin[θ], 0}, {0, 1}}},
{x, y, ϕ, θ}, Automatic,
{Automatic, Automatic, Automatic, Automatic}, Automatic, SamplingPeriod -> None];{ControllableModelQ[veh], ControllableModelQ[StateSpaceModel@veh]}sat[j1_, j2_, j3_] := AffineStateSpaceModel[{{((j2 - j3)*Subscript[ω, 2]*
Subscript[ω, 3])/j1,
((-j1 + j3)*Subscript[ω, 1]*
Subscript[ω, 3])/j2,
((j1 - j2)*Subscript[ω, 1]*
Subscript[ω, 2])/j3}, {{j1^(-1), 0, 0},
{0, j2^(-1), 0}, {0, 0, j3^(-1)}}},
{Subscript[ω, 1], Subscript[ω, 2], Subscript[ω, 3]},
{Subscript[τ, 1], Subscript[τ, 2], Subscript[τ, 3]},
{Automatic, Automatic, Automatic}, Automatic, SamplingPeriod -> None]主モーメントとアクチュエーターの組合せのさまざまな値についての可制御性:
controllableQ[j1_, j2_, j3_] := Table[{i, ControllableModelQ[SystemsModelExtract[sat[j1, j2, j3], i]]}, {i, Subsets[Range[3], {1, 3}]}]grid[res_, color_] := Grid[res, Background -> {None, {{color, None}}}, Frame -> True]
であれば,この系は任意の2つのアクチュエータで可制御になる:
Grid[controllableQ[Subscript[J, 1], Subscript[J, 2], Subscript[J, 3]], Frame -> All]
であれば,この系は,アクチュエータ1および2,あるいは任意の1つのアクチュエータでは可制御にならない:
Grid[controllableQ[Subscript[J, 1], Subscript[J, 1], Subscript[J, 3]], Frame -> All]
であれば,この系は3つすべてのアクチュエータによってのみ可制御である:
Grid[controllableQ[Subscript[J, 1], Subscript[J, 1], Subscript[J, 1]], Frame -> All]特性と関係 (7)
ControllableModelQ[StateSpaceModel[{{{Subscript[λ, 1], 0}, {0, Subscript[λ, 2]}},
{{Subscript[b, 1]}, {Subscript[b, 2]}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]ControllableModelQ[StateSpaceModel[{{{Subscript[λ, 1], 0}, {0, Subscript[λ, 2]}},
{{0}, {Subscript[b, 2]}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]
の場合は,第1状態を直接制御することはできない.しかし,第2状態から間接的に制御することは可能である:
ControllableModelQ[StateSpaceModel[{{{Subscript[λ, 1], 1}, {0, Subscript[λ, 1]}},
{{0}, {Subscript[b, 2]}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]
の場合は,第2状態は,直接制御することも第1状態から間接的に制御することもできない:
ControllableModelQ[StateSpaceModel[{{{Subscript[λ, 1], 1}, {0, Subscript[λ, 1]}},
{{Subscript[b, 1]}, {0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]JordanModelDecompositionを使って,上記の正準状態空間表現を計算する:
ssm = StateSpaceModel[{{{4, 1}, {-1, 2}}, {{-6}, {3}}, {{-4, -2}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];JordanModelDecomposition[ssm]//LastTable[{λ, ControllableModelQ[{ssm, λ}]}, {λ, {3}}]ディスクリプタ系については,KroneckerModelDecompositionは対角形の一般化である:
ssm = StateSpaceModel[{{{-5, -1, -3}, {-3, 1, -3}, {-6, -2, -2}}, {{2}, {1}, {2}}, {{1, 1, 1}}, {{0}},
{{3, 1, 2}, {4, 0, 2}, {1, 1, 1}}}, SamplingPeriod -> None, SystemsModelLabels -> None];kssm = Last[KroneckerModelDecomposition[ssm]]SystemsModelExtract[kssm, All, All, {1, 2}]ControllableModelQ[{ssm, "Slow"}]SystemsModelExtract[kssm, All, All, {3}]ControllableModelQ[{ssm, "Fast"}]StateSpaceModelのディスクリプタ行列が最大階数である場合には,速い部分系は存在しない:
ssm = StateSpaceModel[{{{-2, -2}, {8, 12}}, {{1}, {2}}, {{1, 1}}, {{0}}, {{1, 1}, {2, 3}}},
SamplingPeriod -> None, SystemsModelLabels -> None];したがって,系の完全な可制御性は,遅い部分系から評価することができる:
{ControllableModelQ[ssm], ControllableModelQ[{ssm, All}], ControllableModelQ[{ssm, "Slow"}]}可制御性は非特異StateSpaceTransformのもとでは不変である:
ssm = StateSpaceModel[{{{Subscript[λ, 1], 1}, {0, Subscript[λ, 1]}},
{{Subscript[b, 1]}, {0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];p = Array[Subscript[t, ##]&, {2, 2}];ControllableModelQ /@ {ssm, StateSpaceTransform[ssm, p]}ssm = StateSpaceModel[{{{3, 0}, {5, -2}}, {{-1}, {0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];ControllableModelQ[ssm]StateFeedbackGainsを使って状態フィードバックを計算する:
κ = StateFeedbackGains[ssm, {-4, -5}]SystemsModelStateFeedbackConnect[ssm, κ];ControllableModelQ[%]可制御性はその出力が可制御であることを意味しない(OutputControllableModelQ):
ssm = StateSpaceModel[{{{-1.75, 0.5}, {0.375, -1.25}}, {{0}, {4}}, {{0.125, 0.25}, {0.25, 0.5}},
{{0}, {0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];{ControllableModelQ[ssm], OutputControllableModelQ[ssm]}ssm = StateSpaceModel[{{{-1, 0, 0}, {0, -2, 0}, {0, 0, -4}}, {{1}, {0}, {-1}}, {{1, 0, 0}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];{ControllableModelQ[ssm], OutputControllableModelQ[ssm]}考えられる問題 (2)
漸近的に安定ではない系ではグラミアンメソッドは信頼できない:
ssm = StateSpaceModel[{{{-5/2, -1, -1/4}, {3/4, 1/2, -3/8}, {-6, -8, 0}}, {{0}, {1/2}, {6}},
{{1/4, 3/2, -1/8}}, {{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];Table[ControllableModelQ[ssm, Method -> m], {m, {"Gramian", "Matrix", "PBH"}}]
複素平面の右半平面に固有値が,連続時間系の不安定さに繋がっている:
Eigenvalues@First@Normal@ssm非零のドリフトがあるアフィン系については,分布は到達可能性のみを検定する:
asys = AffineStateSpaceModel[{{Subscript[x, 2]^2, 0}, {{0}, {Subscript[x, 1]}}},
{Subscript[x, 1], Subscript[x, 2]}, Automatic, {Automatic, Automatic},
Automatic, SamplingPeriod -> None];ControllableModelQ[asys]ic = RandomReal[{-2, 2}, 2];u[t_] := Interpolation[Transpose[{Range[0, 1, 0.1], RandomReal[{-1, 1}, 11]}], t]Table[StateResponse[{asys, ic}, u[t], {t, 0, 1}], {10}];ParametricPlot[%, {t, 0, 1}, PlotRange -> All, AspectRatio -> 1 / GoldenRatio]関連するガイド
-
▪
- 状態空間モデルの解析 ▪
- 非線形制御系
テキスト
Wolfram Research (2010), ControllableModelQ, Wolfram言語関数, https://reference.wolfram.com/language/ref/ControllableModelQ.html (2014年に更新).
CMS
Wolfram Language. 2010. "ControllableModelQ." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/ControllableModelQ.html.
APA
Wolfram Language. (2010). ControllableModelQ. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ControllableModelQ.html
BibTeX
@misc{reference.wolfram_2026_controllablemodelq, author="Wolfram Research", title="{ControllableModelQ}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/ControllableModelQ.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_controllablemodelq, organization={Wolfram Research}, title={ControllableModelQ}, year={2014}, url={https://reference.wolfram.com/language/ref/ControllableModelQ.html}, note=[Accessed: 16-September-2026]}