5.2 Partial Pole Assignment
If only a few openloop poles (say ) are "bad" and the rest are "good", then it makes sense to reassign only the "bad" eigenvalues to suitable ones, leaving the "good" ones unchanged. This is known as partial pole assignment. The partial pole assignment problem can also be solved by using the function StateFeedbackGains. The template, due to Saad (1988), uses the following steps.
1. Find the ordered real Schur decomposition of : , where is of order and its eigenvalues are "bad" ones.
2. Compute from .
3. Find a feedback matrix so that the eigenvalues of the matrix are the set , where , , are the desired "good" poles.
4. Compute .
Then the eigenvalues of are , where through are the openloop poles. This template basically follows the Schur method; however, here step 3 can be implemented using any pole assignment method.
Partial pole assignments.
By default, the "most unstable" poles are the ones that have the largest real parts in the continuoustime case and the poles with the largest magnitudes in the discretetime case. To guarantee a real feedback matrix, the poles should be reassigned in such a way that the closedloop poles appear in complex conjugate pairs.
In general, the pole assignment problem becomes highly illconditioned as the dimensions of the system increase, yielding a potentially inaccurate solution, even with a numerically stable algorithm (He, Laub, and Mehrmann (1995)). Thus, partial pole assignment, which requires the solution of a smaller problem, can be of practical value when the system size is large and only a few poles need to be changed.
Make sure the application is loaded.
In[1]:=
Load the collection of test examples.
In[2]:=
This displays the openloop poles of a special case of a multivariate servomechanism problem for a J100 jet engine.
In[3]:=
In[4]:=
Out[4]=
The two slowest poles, namely and , are now reassigned to and using the Schur method. This improves the settling time (see Section 5.3) of the system nearly 10fold.
In[5]:=
This computes the norm of the feedback matrix.
In[6]:=
Out[6]=
Here are the computed closedloop poles.
In[7]:=
Out[7]=
Make sure the function MultipleListPlot is available.
In[8]:=
This displays the closedloop poles of the servomechanism problem on the complex plane.
In[9]:=
