({{, (RefLink[SystemsModelVectorRelativeOrders, paclet:ref/SystemsModelVectorRelativeOrders])[sys]
gives the vector-relative orders of the systems model sys.}})

OpenersNotesSection(Spacer1)Details and Options

(RefLink[SystemsModelVectorRelativeOrders, paclet:ref/SystemsModelVectorRelativeOrders]) is also known as vector-relative degrees.

The relative order of an output (Subscript[y, i]) of sys is essentially the number of times it must be differentiated for the input u of sys to appear explicitly.

Output (Subscript[y, i]) has relative order (Subscript[n, i]) if after (Subscript[n, i]) differentiations of the output, (Subscript[y, i]^(((Subscript[n, i]))))=α(x)+(Subscript[β, i])(x).u.

The vector-relative orders are the list of the relative orders {(Subscript[n, 1]),…,(Subscript[n, m])} for each output.

The matrix β(x)=={(Subscript[β, 1])(x),…,(Subscript[β, m])(x)} is called the decoupling matrix and needs to have rank m.

The system sys can be a (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel]), (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]), or (RefLink[AffineStateSpaceModel, paclet:ref/AffineStateSpaceModel]).

The following options can be given:

OpenersPrimaryExamplesSection(Spacer1)Examples  (17)

OpenersExampleSection0(Spacer1)Basic Examples  (1)

Compute the vector-relative orders of a system:

SystemsModelVectorRelativeOrders[(AffineStateSpaceModelFull[-(Subscript[x, 2]), (Subscript[x, 1]) (Subscript[x, 3]), (Subscript[x, 1]), 0, 1, 1, 0, 0, (Subscript[x, 3]), (Subscript[x, 2]), (Subscript[x, 3]), 0, 0, 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1]),(Subscript[\[FormalU], 2])}Automatic, ])]

OpenersExampleSection1(Spacer1)Scope  (4)

The vector-relative order of a single-output system:

SystemsModelVectorRelativeOrders[(AffineStateSpaceModelFull[-(Subscript[x, 2]), (Subscript[x, 1]) (Subscript[x, 2]), 0, 0, Cos[(Subscript[x, 1])], 1, (Subscript[x, 1]), 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), \[Null], \[Null], {(Subscript[\[FormalU], 1]),(Subscript[\[FormalU], 2])}Automatic, ])]

The vector-relative orders of a multiple-output system:

SystemsModelVectorRelativeOrders[(AffineStateSpaceModelFull[Sin[(Subscript[x, 1])], -(Subscript[x, 1]), (Subscript[x, 1]) (Subscript[x, 2]) (Subscript[x, 3]), 0, 0, 1, 0, 0, (E^(Subscript[x, 1])), (Subscript[x, 2]), (Subscript[x, 3]), 0, 0, 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1]),(Subscript[\[FormalU], 2])}Automatic, ])]

The vector-relative orders of a (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]):

SystemsModelVectorRelativeOrders[(StateSpaceModelFull[2, 2, 0, 0, 1, 0, 1, 2, 2, 2, 0, 1, 2, 3, 2, -2, 0, 0, 3, 2, -3, -3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, , , ])]

The vector-relative order of a (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel]):

SystemsModelVectorRelativeOrders[(TransferFunctionModelFull[(1/(1+10 s)), ((-4+s)/(s (1+10 s))), , , ])]

OpenersExampleSection3(Spacer1)Applications  (2)

Determine the number of states in the feedback-linearized and residual system:

asys=(AffineStateSpaceModelFull[-(Subscript[x, 1]^3)+(Subscript[x, 1]) (Subscript[x, 2]), (Subscript[x, 1]), -(Subscript[x, 3]), (Subscript[x, 1]^2)+(Subscript[x, 2]), 0, 2+2 (Subscript[x, 3]), 1, 0, (Subscript[x, 4]), 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), (Subscript[x, 4]), \[Null], \[Null], {u}Automatic, ]);
vro=SystemsModelVectorRelativeOrders[asys]

The number of states in the linear subsystem:

Total[vro]

The linearized subsystem:

ℱ=FeedbackLinearize[asys];
ℱ["LinearSystem"]

The number of states in the residual subsystem:

SystemsModelOrder[asys]-Total[vro]

The residual subsystem:

ℱ["ResidualSystem"]

In (RefLink[AsymptoticOutputTracker, paclet:ref/AsymptoticOutputTracker]), the decay rates are assigned based on relative orders:

asys=(AffineStateSpaceModelFull[(Subscript[x, 2])[t]+(((Subscript[x, 2])[t])^2), (Subscript[x, 3])[t]-(Subscript[x, 1])[t] (Subscript[x, 4])[t]+(Subscript[x, 4])[t] (Subscript[x, 5])[t], (Subscript[x, 2])[t] (Subscript[x, 4])[t]+(Subscript[x, 1])[t] (Subscript[x, 5])[t]-(((Subscript[x, 5])[t])^2), (Subscript[x, 5])[t], (((Subscript[x, 2])[t])^2), 0, 1, 0, 0, Cos[(Subscript[x, 1])[t]-(Subscript[x, 5])[t]], 1, 0, 0, 0, 1, (Subscript[x, 1])[t]-(Subscript[x, 5])[t], (Subscript[x, 4])[t], 0, 0, 0, 0, {(Subscript[x, 1])[t],0.1`}, {(Subscript[x, 2])[t],0.3`}, {(Subscript[x, 3])[t],0}, {(Subscript[x, 4])[t],0.4`}, {(Subscript[x, 5])[t],1}, \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1])[t],(Subscript[\[FormalU], 2])[t]}t, ]);

SystemsModelVectorRelativeOrders[asys]

The first three poles correspond to the first output and the last two to the second:

ref={Sin[t],Cos[t]};
fb=AsymptoticOutputTracker[asys,ref,{-2,-3,-4,-10,-12}]

The first output has slower decay rates and hence takes longer to start following the reference input:

OutputResponse[SystemsModelStateFeedbackConnect[asys,fb],{0,0},{t,0,2.5}];

Plot[Evaluate[{%,ref}//Flatten],{t,0,2.5},PlotStyle->{Cyan,Pink, Directive[Dashed,Cyan], Directive[Dashed,Pink]},PlotRange->All]

OpenersExampleSection4(Spacer1)Properties & Relations  (7)

The length of the vector-relative orders is equal to the number of outputs:

asys=(AffineStateSpaceModelFull[-Sin[(Subscript[x, 1])] (Subscript[x, 2]), -(Subscript[x, 2]) (Subscript[x, 3]), 0, 0, 0, 1, 0, 0, 1, 0, 1+(Subscript[x, 2]), 1, 0, 1+(Subscript[x, 2]), 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1]),(Subscript[\[FormalU], 2]),(Subscript[\[FormalU], 3]),(Subscript[\[FormalU], 4])}Automatic, ]);

Use (RefLink[SystemsModelDimensions, paclet:ref/SystemsModelDimensions]) to get the number of outputs:

Length[SystemsModelVectorRelativeOrders[asys]]==Last[SystemsModelDimensions[asys]]

For scalar systems with no zero dynamics, the vector-relative order equals the order:

asys=(AffineStateSpaceModelFull[-(Subscript[x, 2]), -(Subscript[x, 3]), -(Subscript[x, 1]) (Subscript[x, 2]), 0, 0, 1-(Subscript[x, 1]), (Subscript[x, 1]), 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], {u}Automatic, ]);

Use (RefLink[SystemsModelOrder, paclet:ref/SystemsModelOrder]) to get the order of the system:

SystemsModelVectorRelativeOrders[asys]=={SystemsModelOrder[asys]}

If the vector-relative orders are finite, a linearizing feedback control can be computed:

SystemsModelVectorRelativeOrders[asys=(AffineStateSpaceModelFull[-(Subscript[x, 2]), (Subscript[x, 1]) (Subscript[x, 3]), -(Subscript[x, 1])+(Subscript[x, 3]), 1, 0, 0, 1, 0, 1+(Subscript[x, 3]), (Subscript[x, 1]), 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], {(Subscript[u, 1]),(Subscript[u, 2])}Automatic, ])]

Use (RefLink[FeedbackLinearize, paclet:ref/FeedbackLinearize]) to compute the linearizing feedback:

FeedbackLinearize[asys]

If the sum of vector-relative orders is equal to the order, there are no zero dynamics:

asys=(AffineStateSpaceModelFull[(Subscript[x, 3])+(((Subscript[x, 2]) (1+(Subscript[x, 3]^2)))/(1+(Subscript[x, 3]))), ((Subscript[x, 3])/(1+(Subscript[x, 3]))), (Subscript[x, 1]) (Subscript[x, 2]), ((2 (Subscript[x, 2]) (1+(Subscript[x, 2])))/(1+(Subscript[x, 3]))), -((1+(Subscript[x, 2]))/(1+(Subscript[x, 3]))), 1, (Subscript[x, 1])+(Subscript[x, 2]^2), 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], {u1}Automatic, ]);

Total[SystemsModelVectorRelativeOrders[asys]]==SystemsModelOrder[asys]

FeedbackLinearize[asys,Automatic,"ZeroDynamics"]

The relative orders give the lengths of the integrator chains of the feedback-linearized system:

asys=(AffineStateSpaceModelFull[0, -(Subscript[x, 2])-(Subscript[x, 3]), (Subscript[x, 2])+(Subscript[x, 3]), (Subscript[x, 1]), -(Subscript[x, 2]), (Subscript[x, 1]), 0, -(Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 1])+(Subscript[x, 2])+(Subscript[x, 3]), (Subscript[x, 1])+(Subscript[x, 3]), 0, 0, 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1]),(Subscript[\[FormalU], 2])}Automatic, ]);

Output 1 has a single integrator and output 2 has a double integrator:

SystemsModelVectorRelativeOrders[asys]

TransferFunctionModel[FeedbackLinearize[asys,Automatic,"LinearSystem"]]

The vector-relative orders are invariant wrt a coordinate transform:

asys=(AffineStateSpaceModelFull[3 (Subscript[x, 2]), (Subscript[x, 1]) (Subscript[x, 2]), -(Subscript[x, 3]^3), -1, 0, 1+(Subscript[x, 2]), 0, 0, 1+(Subscript[x, 2]), (Subscript[x, 1])+(Subscript[x, 2]), (Subscript[x, 3]), 0, 0, 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]), \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1]),(Subscript[\[FormalU], 2])}Automatic, ]);

asys1=StateSpaceTransform[asys,{{(Subscript[x, 1])->(Subscript[z, 1])+(Subscript[z, 3]) (Subscript[z, 2]),(Subscript[x, 2])->(Subscript[z, 2])-(Subscript[z, 1]),(Subscript[x, 3])->(Subscript[z, 3])},{(Subscript[z, 1]),(Subscript[z, 2]),(Subscript[z, 3])}}];

SystemsModelVectorRelativeOrders/@{asys,asys1}

The vector-relative orders correspond to the asymptotic orders of the transfer functions:

sys=(TransferFunctionModelFull[(1/(2+(\[FormalS]^3))), (2/(3+(\[FormalS]^3))), (1/(1+(\[FormalS]^2))), (1/(2+(\[FormalS]^2))), , , ]);

SystemsModelVectorRelativeOrders[sys]

Output 1 (first row) has asymptotic order 3, and output 2 (second row) has asymptotic order 2:

Series[sys[s],{s,∞,3}]//MatrixForm

OpenersExampleSection5(Spacer1)Possible Issues  (3)

For the decoupling matrix to be invertible, the outputs must be independent:

SystemsModelVectorRelativeOrders[(AffineStateSpaceModelFull[(Subscript[x, 1]), (Subscript[x, 1]) (Subscript[x, 2]), 1+(Subscript[x, 2]), 0, 1, -1, (Subscript[x, 1]), (Subscript[x, 1]), 0, 0, 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1]),(Subscript[\[FormalU], 2])}Automatic, ])]

There must be at least as many inputs as outputs:

SystemsModelVectorRelativeOrders[(AffineStateSpaceModelFull[-(Subscript[x, 2]), (Subscript[x, 1])+(Subscript[x, 2]), 1, 1+(Subscript[x, 1]), (Subscript[x, 1]), (Subscript[x, 2]), 0, 0, (Subscript[x, 1]), (Subscript[x, 2]), \[Null], \[Null], \[Null], {(Subscript[\[FormalU], 1])}Automatic, ])]

If an operating point is specified, the decoupling matrix is evaluated at that point:

SystemsModelVectorRelativeOrders[sys=(AffineStateSpaceModelFull[-(Subscript[x, 2]), (Subscript[x, 1])+(Subscript[x, 2]), 0, (Subscript[x, 1]), (Subscript[x, 1]), 0, {(Subscript[x, 1]),0}, {(Subscript[x, 2]),0}, \[Null], \[Null], {(Subscript[u, 1])}Automatic, ])]

Although the system is feedback linearizable, there is a singularity at the operating point:

FeedbackLinearize[sys,Automatic,"FeedbackCompensator"]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[SystemsModelOrder, paclet:ref/SystemsModelOrder])  ▪  (RefLink[FeedbackLinearize, paclet:ref/FeedbackLinearize])  ▪  (RefLink[AsymptoticOutputTracker, paclet:ref/AsymptoticOutputTracker])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Nonlinear Control Systems, paclet:guide/NonlinearControlSystems])}})}})