I am impressed by StateTransformationLinearize
, and I feel terribly bad for not having noticed this function before.
How does it work?
Does it attempt to find a $C^r$-conjugate of the system? If so, how does it do this?
Why can't it handle Affine State Space Models with symbolic parameters?
I would like to know more about this witchcraft.
For instance, slight changes in the coefficients of the featured examples, lead to failures in finding the transformation. Perhaps if I would figure out how this straightening is done, I could grasp something more about its applicability.
Example
sys=AffineStateSpaceModel[{{4*Subscript[x, 1], 7*Subscript[x, 1]^2 + Subscript[x, 2]}, {{1}, {-1 + 2*Subscript[x, 1]}}, {Subscript[x, 2]}, {{0}}}, {Subscript[x, 1], Subscript[x, 2]},
{{Subscript[\[FormalU], 1], 0}}, {Automatic}, Automatic, SamplingPeriod -> None];
This is an example taken from the documentation. If you change the first coefficient, into a different number, i.e.:
sys=AffineStateSpaceModel[{{3*Subscript[x, 1], 7*Subscript[x, 1]^2 + Subscript[x, 2]}, {{1}, {-1 + 2*Subscript[x, 1]}}, {Subscript[x, 2]}, {{0}}}, {Subscript[x, 1], Subscript[x, 2]},
{{Subscript[\[FormalU], 1], 0}}, {Automatic}, Automatic, SamplingPeriod -> None];
It already fails to find the transformation:
test = StateTransformationLinearize[ sys, {{Subscript[z, 1], Subscript[z, 2]}, "InputState"}];
Outputting the following error msg:
ControlStateAndFeedbackLinearizationsDump
StateSpaceLinarize::nclin: -- Message text not found -- (input-state)
?*`*Linearize*
. The misspelling comes fromControl`StateAndFeedbackLinearizationsDump`ssLinearize0
$\endgroup$