InternallyBalancedDecomposition[ssm]
yields the internally balanced decomposition of the state-space model ssm.
InternallyBalancedDecomposition
InternallyBalancedDecomposition[ssm]
yields the internally balanced decomposition of the state-space model ssm.
Details and Options
- For a standard StateSpaceModel the result is a list {p,bssm}, where p is the similarity transformation matrix and bssm is the internally balanced form of ssm.
- For a descriptor StateSpaceModel the result is a list {{p, q},bssm}, where p and q are a pair of transformation matrices.
- InternallyBalancedDecomposition accepts a Method option with the following settings:
-
Automatic automatically choose method "Eigensystem" use eigenvalue decomposition "SingularValues" use singular value decomposition - The methods "Eigensystem" and "SingularValues" call Eigensystem and SingularValueDecomposition, respectively. In each case, the additional options relevant to the corresponding function can be specified as Method->{"name",opt1-> val1,opt2-> val2,…}.
Examples
open all close allBasic Examples (1)
The internally balanced realization of a state-space model:
InternallyBalancedDecomposition[StateSpaceModel[{{{0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}, {-50, -79, -33, -5}},
{{0}, {0}, {0}, {1}}, {{50.5, 15.25, 1.5, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]Scope (3)
The internally balanced realization of a SISO system:
ssm = StateSpaceModel[{{{-1, -2, 1}, {0, -2, 1}, {-1, 0, -1}}, {{2}, {-1}, {1}}, {{1, 0, 0}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];{p, ib} = InternallyBalancedDecomposition[N@ssm]The two realizations are different forms of the same model:
TransferFunctionModel /@ {ssm, ib}//SimplifyThe balanced realization of a MIMO system:
InternallyBalancedDecomposition[StateSpaceModel[{{{-0.2, 0}, {0, -0.4}}, {{1, 0}, {0, 1}}, {{0.012, 0.004}, {-0.05, -0.004}},
{{-0.08, 0}, {0, 0.02}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]The balanced realization of a descriptor system:
Chop@InternallyBalancedDecomposition[StateSpaceModel[{{{1, 0, 0}, {0, 1, 0}, {0, 0, -5.}}, {{0}, {1.}, {1.}}, {{-1., 11., 64.}}, {{0}},
{{0, 1, 0}, {0., 0., 0}, {0, 0, 1}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]Applications (1)
In a balanced realization, each state is just as controllable as it is observable:
ssm = StateSpaceModel[{{{0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}, {-50, -79, -33, -5}},
{{0}, {0}, {0}, {1}}, {{50.5, 15.25, 1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];ib = Last@InternallyBalancedDecomposition@ssm;MatrixForm /@ Chop@Through@{ControllabilityGramian, ObservabilityGramian}@ibGet an approximation to the model by truncating the least controllable and observable mode:
Subscript[ssm, Truncated] = SystemsModelDelete[ib, None, None, 4]Get submatrices of the balanced model:
{aa, bb, cc, dd} = Normal@ib;
{{Subscript[a, 11], Subscript[a, 12]}, {Subscript[a, 21], Subscript[a, 22]}} = Partition[aa, {3, 3}, 3, 1, {}] /. {} :> Sequence[];
{Subscript[b, 1], Subscript[b, 2]} = Partition[bb, 3, 3, 1, {}];
{{Subscript[c, 1], Subscript[c, 2]}} = Partition[cc, {3, 3}, 3, 1, {}] /. {} :> Sequence[];Get an approximation by residualizing the least controllable and observable mode:
Subscript[ssm, Residualized] = With[{a22Inv = Inverse[Subscript[a, 22]]}, StateSpaceModel[{Subscript[a, 11] - Subscript[a, 12].a22Inv.Subscript[a, 21], Subscript[b, 1] - Subscript[a, 12].a22Inv.Subscript[b, 2], Subscript[c, 1] - Subscript[c, 2].a22Inv.Subscript[a, 21], dd - Subscript[c, 2].a22Inv.Subscript[b, 2]}]]The truncated model better approximates the system during the transients, and the residualized model better approximates the system at steady state:
outputs = Table[OutputResponse[sys, UnitStep[t], {t, 7}], {sys, {ssm, Subscript[ssm, Truncated], Subscript[ssm, Residualized]}}];res = Plot[outputs, {t, 0, 7}, PlotLegends -> {"Original", "Truncated", "Residualized"}]{Show[res, PlotRange -> {{0, 0.36}, {-0.04, 0.1}}, AxesOrigin -> {0, -0.0384288}], Show[res, PlotRange -> {{6, 7}, {0.8, 1.05}}, AxesOrigin -> {6, 0.8}]}Properties & Relations (2)
The ControllabilityGramian and ObservabilityGramian are equal for a balanced system:
ssm = N@StateSpaceModel[{{{-1., -3.}, {1., -2.}}, {{1.}, {1.}}, {{2., 3.}}, {{0.}}},
SamplingPeriod -> None, SystemsModelLabels -> None];{p, bssm} = N@InternallyBalancedDecomposition[ssm];MatrixForm /@ {ControllabilityGramian[bssm], ObservabilityGramian[bssm]}The diagonal entries are given by Hankel singular values for the original system:
Sqrt@SingularValueList[ControllabilityGramian[ssm].ObservabilityGramian[ssm]]The original and balanced realizations are related by a similarity transformation:
ssm = StateSpaceModel[{{{-13, -1.5, 4.5}, {-24.3, -5.5, 9.6}, {-32.1, -4.5, 11.2}},
{{3.1}, {10.6}, {11}}, {{1.2, 0.2, -0.5}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];{p, bssm} = InternallyBalancedDecomposition[ssm];Use StateSpaceTransform to transform the original system:
tssm = StateSpaceTransform[ssm, p];The system matrices from the balanced and transformed system are identical:
{ba, bb, bc, bd} = Normal@bssm;
{ta, tb, tc, td} = Normal@tssm;{Norm[ba - ta], Norm[bb - tb], Norm[bc - tc], Norm[bd - td]}Possible Issues (2)
The state-space model must be both completely controllable and observable:
InternallyBalancedDecomposition[StateSpaceModel[{{{-2, 0}, {0, -1}}, {{1}, {-1}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None]]The state-space model must be asymptotically stable:
ssm = StateSpaceModel[{{{0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 1}, {-2, 2, 0, -1, 0, 0},
{2, -4, 2, 0, -1, 0}, {0, 2, -2, 0, 0, -1}}, {{0, 0}, {0, 0}, {0, 0}, {1, 0}, {0, 0}, {0, 1}},
{{0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0}}, {{0, 0}, {0, 0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None];InternallyBalancedDecomposition[ssm]
Eigenvalues@First@Normal@ssmRelated Guides
Text
Wolfram Research (2010), InternallyBalancedDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/InternallyBalancedDecomposition.html (updated 2012).
CMS
Wolfram Language. 2010. "InternallyBalancedDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2012. https://reference.wolfram.com/language/ref/InternallyBalancedDecomposition.html.
APA
Wolfram Language. (2010). InternallyBalancedDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/InternallyBalancedDecomposition.html
BibTeX
@misc{reference.wolfram_2026_internallybalanceddecomposition, author="Wolfram Research", title="{InternallyBalancedDecomposition}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/InternallyBalancedDecomposition.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_internallybalanceddecomposition, organization={Wolfram Research}, title={InternallyBalancedDecomposition}, year={2012}, url={https://reference.wolfram.com/language/ref/InternallyBalancedDecomposition.html}, note=[Accessed: 13-June-2026]}