Descriptor Systems
Just like time-delay systems, descriptor systems are also fully integrated into the Wolfram Language.
StateSpaceModel[{Subscript[x, 1]'[t] == Subscript[x, 1][t] + u[t], Subscript[x, 2][t] - 0.4Subscript[x, 1][t] == 0}, {Subscript[x, 1][t], Subscript[x, 2][t]}, {u[t]}, Subscript[x, 1][t], t]A descriptor state-space model constructed from the state, input, output, transmission and descriptor matrices:
StateSpaceModel[{(| | |
| -- | -- |
| 1 | 0 |
| -2 | -1 |), (| |
| - |
| 1 |
| 2 |), (-1 0), (0.5), (| | |
| - | - |
| 1 | 0 |
| 0 | 0 |)}]StateSpaceModel[TransferFunctionModel[Unevaluated[{{(s^2 + 4/s + 1)}}], s, SamplingPeriod -> None, SystemsModelLabels -> None]]StateSpaceModel[{(a), (b), (c), (d), (e)}, SamplingPeriod -> τ]Tight integration allows workflows for descriptor systems to match those of standard or proper systems:
ControllableModelQ[StateSpaceModel[{{{-1, 0}, {0, -2}}, {{1}, {1}}, {{0, 1}}, {{0}}, {{1, 0}, {0, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]]If the descriptor matrix is nonsingular, the system can be converted to a standard state-space representation:
StateSpaceModel[StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}}, {{e}}}, SamplingPeriod -> None, SystemsModelLabels -> None], DescriptorStateSpace -> False]