系 sys の可観測な部分系を与える
ObservableDecomposition[sys,{z1,…}]
新しい座標 ziを指定する.
ObservableDecomposition
系 sys の可観測な部分系を与える
ObservableDecomposition[sys,{z1,…}]
新しい座標 ziを指定する.
詳細とオプション
- ObservableDecompositionは{p,osys}を与える.ただし,p は変換,osys は可観測な部分系である.
- 系 sys は標準またはディスクリプタのStateSpaceModelあるいはAffineStateSpaceModelでよい.
- 可観測の部分系はStateSpaceTransform[sys,p]で与えられる.
- ObservableDecompositionはMethodオプションを取る.次は指定可能な設定値である.
-
Automatic 自動的にメソッドを選択する "Matrix" 可観測行列を使う "Distribution" 可観測分布を使う
例題
すべて開く すべて閉じる例 (1)
ObservableDecomposition[StateSpaceModel[{{{Subscript[a, 1], 0, 0}, {0, Subscript[a, 2], 0},
{0, 0, Subscript[a, 3]}}, {{Subscript[b, 1]},
{Subscript[b, 2]}, {Subscript[b, 3]}},
{{Subscript[c, 1], 0, Subscript[c, 3]}},
{{Subscript[d, 11]}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]スコープ (4)
ssm = StateSpaceModel[{{{0, 0, -2}, {1, 0, -3}, {0, 1, -1}}, {{3}, {-2}, {1}}, {{0, 0, 1}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];
ObservableDecomposition[ssm]ssm = StateSpaceModel[{{{3, 6, 4}, {9, 6, 10}, {-7, -7, -9}}, {{1/3, 2/3}, {2/3, 1/3}, {-1/6, 1/3}},
{{1, 2, 3}, {3, 3, 6}}, {{0, 0}, {0, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];MatrixForm /@ ObservableDecomposition[N@ssm]ObservableDecomposition[StateSpaceModel[{{{Subscript[a, 1], 0, 0}, {0, Subscript[a, 2], 0},
{0, 0, Subscript[a, 3]}}, {{0, 0}, {Subscript[b, 1], 0},
{0, Subscript[b, 2]}}, {{0, Subscript[c, 1], 0},
{0, 0, Subscript[c, 3]}},
{{Subscript[d, 11], Subscript[d, 12]},
{Subscript[d, 21], Subscript[d, 22]}},
{{Subscript[e, 1], 0, 0}, {0, Subscript[e, 2], 0}, {0, 0, 0}}},
SamplingPeriod -> None, SystemsModelLabels -> None]]ObservableDecomposition[AffineStateSpaceModel[{{-Subscript[x, 2], Subscript[x, 1]*
Subscript[x, 2], Subscript[x, 3]},
{{1 + Subscript[x, 2]}, {0}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{Subscript[, 1]}, {Automatic}, Automatic, SamplingPeriod -> None]]ObservableDecomposition[AffineStateSpaceModel[{{-Subscript[x, 2], Subscript[x, 1]*
Subscript[x, 2], Subscript[x, 3]},
{{1 + Subscript[x, 2]}, {0}, {0}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
{Subscript[, 1]}, {Automatic}, Automatic, SamplingPeriod -> None], {Subscript[z, 1], Subscript[z, 2], Subscript[z, 3]}]アプリケーション (7)
線形系 (4)
ssm = StateSpaceModel[{{{Subscript[a, 1], 0, 0}, {0, Subscript[a, 2], 0},
{0, 0, Subscript[a, 3]}}, {{0, 0}, {Subscript[b, 1], 0},
{0, Subscript[b, 2]}}, {{Subscript[c, 1], 0, 0},
{0, 0, Subscript[c, 3]}},
{{Subscript[d, 11], Subscript[d, 12]},
{Subscript[d, 21], Subscript[d, 22]}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];ObservableDecompositionは,可観測部分系のみを取り出す:
{p, ossm} = ObservableDecomposition[ssm];ossmKalman可観測分解は可観測部分系を最初に置き,残りはそのままにする:
po = NullSpace[p]; (* Orthogonal space *)
StateSpaceTransform[ssm, ArrayFlatten[{{p, po}}]]{p, ossm} = ObservableDecomposition[StateSpaceModel[{{{Subscript[a, 1], 0, 0}, {0, Subscript[a, 2], 0},
{0, 0, Subscript[a, 3]}}, {{0, 0}, {Subscript[b, 1], 0},
{0, Subscript[b, 2]}}, {{Subscript[c, 1], 0, 0},
{0, 0, Subscript[c, 3]}},
{{Subscript[d, 11], Subscript[d, 12]},
{Subscript[d, 21], Subscript[d, 22]}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]];Dimensions[p]//Last以下の系の可観測部分空間を求め,どの状態軌道が出力のみを観測した場合から見分けられるかを示す:
ssm = StateSpaceModel[{{{-6, -2, -3}, {3, -1, 3}, {2, 2, -1}}, {{1}, {0}, {-2}}, {{0, 1, -1}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];ObservableModelQ[ssm]{p, osys} = ObservableDecomposition[ssm];ospace = ParametricPlot3D[p.{u, v}, {u, -1, 1}, {v, -1, 1}, Mesh -> None, PlotStyle -> Opacity[0.7]]初期値が可観測部分空間の1点に投影している軌道のシミュレーションを行う:
w = First@NullSpace[p];
x0 = Table[p.{0.5, 0.5} + λ w, {λ, -0.4, 0.4, 0.2}];
sr = Table[StateResponse[{ssm, x}, Sin[2t], {t, 0, 10}], {x, x0}];Show[ParametricPlot3D[Evaluate[sr], {t, 0, 10}], ospace, ParametricPlot3D[Evaluate[p.{0.5, 0.5} + λ w], {λ, -0.5, 0.5}]]or = Table[OutputResponse[{ssm, x}, Sin[2t], {t, 0, 10}], {x, x0}];Plot[or, {t, 0, 10}]
質量
の位置のみが測定されるので,この系は完全に可観測な訳ではない:
pars = {Subscript[k, 1] -> 75, Subscript[k, 2] -> 100, Subscript[m, 1] -> 1, Subscript[m, 2] -> 0.5};ssm = 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[m, 2], 0, 0, 0}, {0, 0, 0, 0, 0, 1},
{0, 0, 0, 0, -Subscript[k, 2]/Subscript[m, 2], 0}},
{{0, 0}, {Subscript[m, 1]^(-1), 0}, {0, 0}, {0, 0}, {0, 0},
{0, Subscript[m, 2]^(-1)}}, {{1, 0, 0, 0, 0, 0}}, {{0, 0}}},
SamplingPeriod -> None, SystemsModelLabels ->
{None, None, {Subscript[x, 1], Subscript[v, 1],
Subscript[x, 2], Subscript[v, 2*x],
Subscript[y, 2], Subscript[v, 2*y]}}] /. pars;ObservableModelQ[ssm]変換行列
の0の行に関連する状態は,観測することができない:
{p, osys} = ObservableDecomposition[ssm];Position[p, {_ ? PossibleZeroQ..}]推定器を設計し,最初の4状態の任意の組合せを推定することができる:
ℓ = EstimatorGains[osys, {-1, -2, -3 + I, -3 - I}]StateOutputEstimator[osys, ℓ];est = SystemsModelSeriesConnect[%, TransferFunctionModel[{PadRight[p[[3]], 5]}]]inps = {UnitStep[t] - UnitStep[t - 2], UnitStep[t - 1] - UnitStep[t - 3]};
ics = {0.01, 0, 0.1, 0, 0.05, 0};x2 = StateResponse[{ssm, ics}, inps, {t, 0, 8}][[3]];
Plot[x2, {t, 0, 8}]x2e = OutputResponse[est, Join[inps, OutputResponse[{ssm, ics}, inps, {t, 0, 8}]], {t, 0, 8}];Plot[{x2, x2e}, {t, 0, 8}, PlotLegends -> {"actual", "estimated"}, PlotRange -> All]Affine Systems (3)
assm = AffineStateSpaceModel[{{Subscript[x, 1], -Subscript[x, 1] +
Subscript[x, 2] + Subscript[x, 1]*Subscript[x, 2],
-Subscript[x, 1] - Subscript[x, 3]},
{{0}, {1}, {1 + Subscript[x, 1]}}, {Subscript[x, 2]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]},
Automatic, {Automatic}, Automatic, SamplingPeriod -> None];ObservableDecompositionは,可観測な部分系のみを取り出す:
{{p1, p2}, osys} = ObservableDecomposition[assm];osys三角形か観測分解は可観測な部分系を最初に置き,残りをそのままに保つ:
StateSpaceTransform[assm, {p1, Flatten[p2]}]assm = AffineStateSpaceModel[{{E^Subscript[x, 2]*Subscript[x, 2] +
Subscript[x, 1]*Subscript[x, 3], Subscript[x, 3],
(-Subscript[x, 2])*Subscript[x, 3] + Subscript[x, 4],
(-Subscript[x, 2]^2)*Subscript[x, 3] +
Subscript[x, 3]^2 + Subscript[x, 2]*Subscript[x, 4]},
{{Subscript[x, 1]}, {1}, {0}, {Subscript[x, 3]}},
{Subscript[x, 3]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]},
Automatic, {Automatic}, Automatic, SamplingPeriod -> None];ObservableModelQ[assm]{{Subscript[p, 1], Subscript[p, 2]}, ossm} = ObservableDecomposition[assm];ossmLength[First[Subscript[p, 2]]]asys = AffineStateSpaceModel[{{E^Subscript[x, 2]*Subscript[x, 2] +
Subscript[x, 1]*Subscript[x, 3], Subscript[x, 3],
(-Subscript[x, 2])*Subscript[x, 3] + Subscript[x, 4],
(-Subscript[x, 2]^2)*Subscript[x, 3] +
Subscript[x, 3]^2 + Subscript[x, 2]*Subscript[x, 4]},
{{Subscript[x, 1]}, {1}, {0}, {Subscript[x, 3]}},
{Subscript[x, 3]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]},
Automatic, {Automatic}, Automatic, SamplingPeriod -> None];この系は観測できない.ゆえに,部分空間のみが出力から可観測である:
ObservableModelQ[asys]{{Subscript[p, 1], {Subscript[p, 21], Subscript[p, 22]}}, osys} = ObservableDecomposition[asys];isubspace[{x1_, x2_, x3_, x4_}] := Last /@ Subscript[p, 21] /. {Subscript[x, 1] -> x1, Subscript[x, 2] -> x2, Subscript[x, 3] -> x3, Subscript[x, 4] -> x4}isubspace[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}]Subscript[pt, 1] = {1, 3, 1, 2};
Subscript[pt, 2] = {1, 1, 1, 0};isubspace /@ {Subscript[pt, 1], Subscript[pt, 2]}Table[OutputResponse[{asys, pt}, UnitStep[t], {t, 0, 1}], {pt, {Subscript[pt, 1], Subscript[pt, 2]}}];Table[Plot[or, {t, 0, 1}], {or, Flatten[%, 1]}]特性と関係 (2)
変換行列 p は,StateSpaceTransformを使って可観測部分系を選ぶ:
ssm = StateSpaceModel[{{{Subscript[a, 1], 0, 0}, {0, Subscript[a, 2], 0},
{0, 0, Subscript[a, 3]}}, {{0, 0}, {Subscript[b, 1], 0},
{0, Subscript[b, 2]}}, {{Subscript[c, 1], 0, 0},
{0, 0, Subscript[c, 3]}},
{{Subscript[d, 11], Subscript[d, 12]},
{Subscript[d, 21], Subscript[d, 22]}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];{p, osys} = ObservableDecomposition[ssm];
tsys = StateSpaceTransform[ssm, {p, p}];{osys, tsys}assm = AffineStateSpaceModel[{{-Subscript[x, 4], 0, -Subscript[x, 1],
Subscript[x, 2]}, {{1}, {0}, {1 + Subscript[x, 2]}, {0}},
{Subscript[x, 1], Subscript[x, 2]}, {{0}, {0}}},
{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3],
Subscript[x, 4]}, {Subscript[, 1]}, {Automatic, Automatic}, Automatic,
SamplingPeriod -> None];{p, osys} = ObservableDecomposition[assm];
tsys = StateSpaceTransform[assm, p];{osys, tsys}関連するガイド
-
▪
- 非線形制御系 ▪
- 状態空間モデルの解析
テキスト
Wolfram Research (2010), ObservableDecomposition, Wolfram言語関数, https://reference.wolfram.com/language/ref/ObservableDecomposition.html (2014年に更新).
CMS
Wolfram Language. 2010. "ObservableDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/ObservableDecomposition.html.
APA
Wolfram Language. (2010). ObservableDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ObservableDecomposition.html
BibTeX
@misc{reference.wolfram_2026_observabledecomposition, author="Wolfram Research", title="{ObservableDecomposition}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/ObservableDecomposition.html}", note=[Accessed: 04-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_observabledecomposition, organization={Wolfram Research}, title={ObservableDecomposition}, year={2014}, url={https://reference.wolfram.com/language/ref/ObservableDecomposition.html}, note=[Accessed: 04-August-2026]}