KroneckerModelDecomposition[ssm]
yields the Kronecker decomposition of a descriptor state-space model ssm.
KroneckerModelDecomposition
KroneckerModelDecomposition[ssm]
yields the Kronecker decomposition of a descriptor state-space model ssm.
Details and Options
- The Kronecker decomposition is also known as the Weierstrass decomposition.
- The result is a list {{p,q},kssm}, where p and q are transformation matrices, and kssm is the Kronecker form of ssm.
- The decomposition decouples a descriptor state-space model into slow and fast subsystems.
- The slow subsystem has the same form as a standard state-space model with state equation:
-

continuous time 
discrete time - The fast subsystem is governed by the following state equations where e2 is nilpotent:
-

continuous time 
discrete time - The output of the system in Kronecker form is:
-

continuous time 
discrete time - The matrices a1 and e2 are both taken to be in Jordan form.
- StateSpaceTransform[ssm,{p,q}] has the form StateSpaceModel[{
,
,
,
,
}], with
and
, where
and a2 are identity matrices with the dimensions of the slow and fast subsystems, and
is a nilpotent matrix.
Examples
open all close allBasic Examples (1)
Scope (4)
The Kronecker decomposition of a system with two fast states and two slow states:
KroneckerModelDecomposition[StateSpaceModel[{{{0, 1, 0, 0}, {1, 0, 0, 0}, {-1, 0, 0, 1}, {0, -1, 2, -1}},
{{0}, {0}, {0}, {-1}}, {{0, 0, 1, 0}}, {{0}}, {{1, 0, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 0},
{0, 0, 0, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]The Kronecker decomposition of a discrete-time system:
KroneckerModelDecomposition[StateSpaceModel[{{{0.1, -0.125}, {0.125, 0.25}}, {{0.5}, {-0.5}}, {{2, -2}}, {{0}},
{{1, 1}, {0, 0}}}, SamplingPeriod -> 0.5, SystemsModelLabels -> None]]KroneckerModelDecomposition[StateSpaceModel[{x1[t] == x2[t] + 3u[t], x2[t] == 1 / 2 x1[t]}, {x1[t], x2[t]}, {u[t]}, x2[t], t]]KroneckerModelDecomposition[StateSpaceModel[{{{1, 0, 2}, {2, -1, 0}, {0, 6, 6}}, {{0}, {1}, {1}}, {{5, 0, 1}}, {{0}},
{{2, -1, 0}, {0, 0, 0}, {0, 1, 1}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]Applications (2)
KroneckerModelDecomposition decouples the fast and slow subsystems:
ssm = StateSpaceModel[{{{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 1}, {0, 0, -5, 6}}, {{0}, {1}, {0}, {1}},
{{-1, 3, -9, 3}}, {{0}}, {{0, 1, 0, 0}, {0, 0, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}}},
SamplingPeriod -> None, SystemsModelLabels -> None];
kssm = Last[KroneckerModelDecomposition[ssm]]The number of 1s on the diagonal of the descriptor matrix gives the number of slow states:
e = Normal[kssm][[5]];
nslow = Total[Diagonal[e]]Separate the slow and fast systems using SystemsModelExtract and SystemsModelDelete:
e = Normal[kssm][[5]];
nslow = Total[Diagonal[e]]{SystemsModelExtract[kssm, All, All, 1 ;; nslow],
SystemsModelDelete[kssm, None, None, 1 ;; nslow]}An RLC circuit modeled as a descriptor state space:
ss = StateSpaceModel[{L i'[t] == Subscript[v, l][t], Subscript[v, c]'[t] == 1 / C i[t], R i[t] == Subscript[v, r][t],
Subscript[v, l][t] + Subscript[v, c][t] + Subscript[v, r][t] == Subscript[v, s][t]}, {i[t], Subscript[v, l][t], Subscript[v, c][t], Subscript[v, r][t]}, {Subscript[v, s][t]}, {i[t]}, t]Simplify@Last[KroneckerModelDecomposition[ss]]Properties & Relations (6)
The Kronecker decomposition and the original system are restricted equivalent systems:
ssm = StateSpaceModel[{{{2, 2, -1}, {-1, 0, 0}, {-1, 0, 1}}, {{-1}, {0}, {1}}, {{0, 0, 1}}, {{0}},
{{0, -1, 3}, {0, 0, -1}, {0, 0, -1}}}, SamplingPeriod -> None, SystemsModelLabels -> None];
kssm = Last[KroneckerModelDecomposition[ssm]]{SystemsModelOrder[ssm], SystemsModelOrder[kssm]}They have the same controllability and observability properties:
{ControllableModelQ[ssm], ControllableModelQ[kssm]}{ObservableModelQ[ssm], ObservableModelQ[kssm]}They have the same transfer functions:
{TransferFunctionModel[ssm], TransferFunctionModel[kssm]}Nonsingular systems give an identity matrix for the descriptor matrix:
Last@KroneckerModelDecomposition[StateSpaceModel[{{{-2., 1, 3}, {1, 0, -1}, {2, 0, 1}}, {{1}, {-1}, {0}}, {{1, 0, 0}}, {{0}},
{{1, 0, 3}, {2, 4, 1}, {-1., 0, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]Find the Kronecker decomposition of a singular descriptor state-space model:
ssm = StateSpaceModel[{{{1, 3, 0}, {2, -1, 1}, {6, 0, 6}}, {{0}, {1}, {1}}, {{8, -6, 6}}, {{0}},
{{2, -1, 1}, {0, 0, 0}, {1, 0, 1}}}, SamplingPeriod -> None, SystemsModelLabels -> None];
{{p, q}, kssm} = Chop@KroneckerModelDecomposition[ssm];The matrix pair {p,q} relates the original system to the Kronecker form:
Chop@{kssm, StateSpaceTransform[ssm, {p, q}]}The inverse matrices perform the opposite transformation:
Chop@{ssm, StateSpaceTransform[kssm, Inverse /@ {p, q}]}The slow and fast subsystems model the proper and improper parts of a transfer function:
{proper, improper} = {TransferFunctionModel[{{{1}}, 3 + s}, s], TransferFunctionModel[{{{(1 + s)*(2 + s)}}, 1}, s]};StateSpaceModel /@ {proper, improper}Last[KroneckerModelDecomposition@StateSpaceModel[SystemsModelParallelConnect[proper, improper]]]The state matrix in the slow subsystem is in Jordan form:
ssm = StateSpaceModel[{{{-2, -6, 1}, {0, 4, -2}, {-15, 0, 5}}, {{0}, {1/2}, {-1/2}}, {{7, 2, -2}}, {{0}},
{{1, 2, 0}, {0, -2, 1}, {3, 0, -1}}}, SamplingPeriod -> None, SystemsModelLabels -> None];
{a, e} = Normal[ssm][[{1, -1}]];Last@KroneckerModelDecomposition[ssm]Last[JordanDecomposition[Inverse[e].a]]//MatrixFormThe descriptor matrix in the fast subsystem is in Jordan form with all zero eigenvalues:
ssm = StateSpaceModel[{{{-2, -3, 0}, {0, 4, -5}, {-6, 3, 5}}, {{1}, {-3/2}, {1/2}}, {{1, 0, 2}}, {{0}},
{{0, 1, 0}, {0, 0, 0}, {0, 3, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];
{a, e} = Normal[ssm][[{1, -1}]];Last@KroneckerModelDecomposition[ssm]Last[JordanDecomposition[e.Inverse[a]]]//MatrixFormRelated Guides
History
Text
Wolfram Research (2012), KroneckerModelDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/KroneckerModelDecomposition.html.
CMS
Wolfram Language. 2012. "KroneckerModelDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/KroneckerModelDecomposition.html.
APA
Wolfram Language. (2012). KroneckerModelDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/KroneckerModelDecomposition.html
BibTeX
@misc{reference.wolfram_2026_kroneckermodeldecomposition, author="Wolfram Research", title="{KroneckerModelDecomposition}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/KroneckerModelDecomposition.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_kroneckermodeldecomposition, organization={Wolfram Research}, title={KroneckerModelDecomposition}, year={2012}, url={https://reference.wolfram.com/language/ref/KroneckerModelDecomposition.html}, note=[Accessed: 13-June-2026]}