DualSystemsModel[ssm]
gives the dual of the state-space model ssm.
DualSystemsModel
DualSystemsModel[ssm]
gives the dual of the state-space model ssm.
Details
- The state-space model ssm can be a standard or descriptor StateSpaceModel.
- The original and dual systems for a standard StateSpaceModel[{a,b,c,d}]:
-




- The original and dual systems for a descriptor StateSpaceModel[{a,b,c,d,e}]:
-




Examples
open all close allBasic Examples (1)
Scope (3)
DualSystemsModel[StateSpaceModel[{{{-2, 0}, {-3, -4}}, {{1}, {-1}}, {{0.5, 1.5}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]All variables are considered as complex:
dualssm = DualSystemsModel[StateSpaceModel[{{{Subscript[a, 1], Subscript[a, 2]},
{Subscript[a, 3], Subscript[a, 4]}},
{{Subscript[b, 1]}, {Subscript[b, 2]}},
{{Subscript[c, 1], Subscript[c, 2]}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]Simplify, assuming all variables are real:
Simplify[dualssm, {Subscript[a, 1], Subscript[a, 2], Subscript[a, 3], Subscript[a, 4], Subscript[b, 1], Subscript[b, 2], Subscript[c, 1], Subscript[c, 2]}∈Reals]Specify only some variables to be real:
Simplify[dualssm, {Subscript[b, 1], Subscript[b, 2], Subscript[c, 1], Subscript[c, 2]}∈Reals]The dual of a descriptor system:
DualSystemsModel[StateSpaceModel[{{{1, 0, 0}, {0, 1, 0}, {0, 0, -1/2}}, {{0}, {1}, {1}}, {{-1, 1, 9/16}}, {{0}},
{{0, 1, 0}, {0, 0, 0}, {0, 0, 1}}}, SamplingPeriod -> 1, SystemsModelLabels -> None]]Properties & Relations (4)
The controllable and observable realizations have a dual relationship:
m = {{(s + Subscript[z, 11]/s + Subscript[p, 11]), (s + Subscript[z, 12]/s + Subscript[p, 12])}, {(s + Subscript[z, 21]/s + Subscript[p, 21]), (s + Subscript[z, 22]/s + Subscript[p, 22])}};Subscript[ssm, 1] = StateSpaceModel[TransferFunctionModel[m, s], StateSpaceRealization -> "Controllable"];Subscript[ssm, 2] = Simplify[DualSystemsModel@StateSpaceModel[TransferFunctionModel[m//Transpose, s], StateSpaceRealization -> "Observable"], Element[{Subscript[p, 11], Subscript[p, 12], Subscript[p, 21], Subscript[p, 22], Subscript[z, 11], Subscript[z, 12], Subscript[z, 21], Subscript[z, 22]}, Reals]];{Subscript[ssm, 1], Subscript[ssm, 2]}Normal[Subscript[ssm, 1]] === Expand[Normal[Subscript[ssm, 2]]]A similar relationship exists between the controllable companion and observable companion forms:
Subscript[ssm, 1] = StateSpaceModel[TransferFunctionModel[m, s], StateSpaceRealization -> "ControllableCompanion"];Subscript[ssm, 2] = Simplify[DualSystemsModel@StateSpaceModel[TransferFunctionModel[m//Transpose, s], StateSpaceRealization -> "ObservableCompanion"], Element[{Subscript[p, 11], Subscript[p, 12], Subscript[p, 21], Subscript[p, 22], Subscript[z, 11], Subscript[z, 12], Subscript[z, 21], Subscript[z, 22]}, Reals]];Expand[Normal[Subscript[ssm, 1]]] === Expand[Normal[Subscript[ssm, 2]]]An uncontrollable but observable model:
ssm = StateSpaceModel[{{{-1, 0, 0}, {0, -3, 1}, {0, 0, -3}}, {{1}, {3}, {0}}, {{1, 1, 0}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];
Through@{ControllableModelQ, ObservableModelQ}@ssmThe dual model is controllable but not observable:
With[{dualssm = DualSystemsModel[ssm]}, Through@{ControllableModelQ, ObservableModelQ}@dualssm]The controllability matrix of a system is the conjugate transpose of the observability matrix of the dual system and vice versa:
ssm = StateSpaceModel[{{{a[1, 1], a[1, 2]},
{a[2, 1], a[2, 2]}}, {{b[1, 1]}, {b[2, 1]}},
{{c[1, 1], c[1, 2]}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];
dualssm = DualSystemsModel[ssm];ControllabilityMatrix[ssm] == ObservabilityMatrix[dualssm]ObservabilityMatrix[ssm] == ControllabilityMatrix[dualssm]The estimator gains are the conjugate transpose of feedback gains of the dual model and vice versa:
ssm = StateSpaceModel[{{{0, 1, 0}, {0, 0, 1}, {-3, -2, -1}}, {{0}, {0}, {1}}, {{1, 0, 0}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];{StateFeedbackGains[ssm, {-2, -3, -4}], ConjugateTranspose[EstimatorGains[DualSystemsModel[ssm], {-2, -3, -4}]]}{EstimatorGains[ssm, {-2, -3, -4}], ConjugateTranspose[StateFeedbackGains[DualSystemsModel[ssm], {-2, -3, -4}]]}Related Guides
Text
Wolfram Research (2010), DualSystemsModel, Wolfram Language function, https://reference.wolfram.com/language/ref/DualSystemsModel.html (updated 2012).
CMS
Wolfram Language. 2010. "DualSystemsModel." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2012. https://reference.wolfram.com/language/ref/DualSystemsModel.html.
APA
Wolfram Language. (2010). DualSystemsModel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DualSystemsModel.html
BibTeX
@misc{reference.wolfram_2026_dualsystemsmodel, author="Wolfram Research", title="{DualSystemsModel}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/DualSystemsModel.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_dualsystemsmodel, organization={Wolfram Research}, title={DualSystemsModel}, year={2012}, url={https://reference.wolfram.com/language/ref/DualSystemsModel.html}, note=[Accessed: 12-June-2026]}