« View all new features in
Mathematica
9
◄
previous

next
►
New in
Mathematica
9
›
Enhanced Control Systems
Descriptor Systems
Just like timedelay systems, descriptor systems are also fully integrated into
Mathematica
.
Obtain a descriptor statespace model from a differentialalgebraic equation.
In[1]:=
X
StateSpaceModel[{Subscript[x, 1]'[t] == Subscript[x, 1][t] + u[t], Subscript[x, 2][t]  0.4 Subscript[x, 1][t] == 0}, {Subscript[x, 1][ t], Subscript[x, 2][t]}, {u[t]}, Subscript[x, 1][t], t]
Out[1]=
A descriptor statespace model constructed from the state, input, output, transmission, and descriptor matrices.
In[2]:=
X
StateSpaceModel[{\!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"1", "0"}, { RowBox[{"", "2"}], RowBox[{"", "1"}]} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\), ({ {1}, {2} }), \!\(\* TagBox[ RowBox[{"(", "", GridBox[{ { RowBox[{"", "1"}], "0"} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\), \!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"0.5"} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\), ({ {1, 0}, {0, 0} })}]
Out[2]=
A descriptor statespace model from an improper transferfunction model.
In[3]:=
X
StateSpaceModel[ TransferFunctionModel[Unevaluated[{{(s^2 + 4)/(s + 1)}}], s, SamplingPeriod >None, SystemsModelLabels > None]]
Out[3]=
Construct a discretetime descriptor system by specifying a sampling period.
In[4]:=
X
StateSpaceModel[{\!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"a"} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\), \!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"b"} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\), \!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"c"} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\), \!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"d"} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\), \!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"e"} }, GridBoxAlignment>{ "Columns" > {{Center}}, "ColumnsIndexed" > {}, "Rows" > {{Baseline}}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}, GridBoxSpacings>{"Columns" > { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" > {}, "Rows" > { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" > {}, "Items" > {}, "ItemsIndexed" > {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\)}, SamplingPeriod > \[Tau]]
Out[4]=
Tight integration allows workflows for descriptor systems to match those of standard or proper systems.
In[5]:=
X
ControllableModelQ[ StateSpaceModel[{{{1, 0}, {0, 2}}, {{1}, {1}}, {{0, 1}}, {{0}}, {{1, 0}, {0, 0}}}, SamplingPeriod >None, SystemsModelLabels > None]]
Out[5]=
If the descriptor matrix is nonsingular, the system can be converted to a standard statespace representation.
In[6]:=
X
StateSpaceModel[ StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}}, {{e}}}, SamplingPeriod >None, SystemsModelLabels > None], DescriptorStateSpace > False]
Out[6]=