5.2 Partial Pole Assignment
If only a few open-loop 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 open-loop 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 continuous-time case and the poles with the largest magnitudes in the discrete-time case. To guarantee a real feedback matrix, the poles should be reassigned in such a way that the closed-loop poles appear in complex conjugate pairs.
In general, the pole assignment problem becomes highly ill-conditioned 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.
Load the collection of test examples.
This displays the open-loop poles of a special case of a multivariate servomechanism problem for a J-100 jet engine.
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 10-fold.
This computes the norm of the feedback matrix.
Here are the computed closed-loop poles.
Make sure the function MultipleListPlot is available.
This displays the closed-loop poles of the servomechanism problem on the complex plane.