My Pole Placement is giving an error

8 visualizzazioni (ultimi 30 giorni)
Manali Kunte
Manali Kunte il 12 Dic 2020
Risposto: Sam Chak il 16 Giu 2023
I have a system with Ax+Bu=dx/dt
A=[4X4] matrix
B=[4X2] matrix
J=[4X1] matrix
Because the rank of B is 2 (less than multiplicity I keep on getting an error in the place(A,B,J) command
Error:The "place" command cannot place poles with multiplicity greater than rank(B).
Is there any other command that I can use?
  1 Commento
Keerthana Chiruvolu
Keerthana Chiruvolu il 16 Dic 2020
Hi Manali,
I tried to reproduce the problem with A, B, J having the specified sizes and rank of B =2. There is no error. Can you please share the inputs A, B, J ?
For more information, refer the Pole Placement documentation page.

Accedi per commentare.

Risposte (2)

johannes
johannes il 15 Giu 2023
I now the question is old, but i ran in the same problem.
It is an issue with multiple poles at the same location. There must be EQULA OR LESS poles at the same location than the rank of B.
Example:
I had a system with 5th order, and i placed all poles at -10+0i, but my B Matrix was B=[0; 0; 0; 0; 1;];
The rank of my B Matrix is 1, but i try to place 5 poles at the same location. 5 is smaler than 1 so, the place function fails. You can avoid this by choosing poles which are slightly of like [10.1 10.2 10.3 10.4 10.5].
TLDR: If you run in this issue, you have probly multiple poles at the same place, space them out by 0.1 and you are fine.

Sam Chak
Sam Chak il 16 Giu 2023
For SISO systems (as in your example), it is possible to manually determine the gain matrix Ksuch that the multiple closed-loop system poles are placed at the same location.
A = [0 1 0 0 0;
0 0 1 0 0;
0 0 0 1 0;
0 0 0 0 1;
0 0 0 0 0];
B = [0;
0;
0;
0;
1];
K = [1 5 10 10 5]; % manually determined
eig(A - B*K)
ans =
-1.0008 + 0.0006i -1.0008 - 0.0006i -0.9997 + 0.0009i -0.9997 - 0.0009i -0.9990 + 0.0000i
Ideally, the answer should return "" because they are the solutions to the 5th-degree polynomial characteristic equation of
.
Due to the Abel–Ruffini theorem states that there is no solution in radicals to general polynomial equations of degree five or higher with arbitrary coefficients, the eig() function exploys the numerical method to determine the roots.
% check using roots
roots([1 5 10 10 5 1])
ans =
-1.0008 + 0.0006i -1.0008 - 0.0006i -0.9997 + 0.0009i -0.9997 - 0.0009i -0.9990 + 0.0000i
% Test
p = [-1, -1, -1, -1, -1];
K = place(A, B, p)
Error using place
The "place" command cannot place poles with multiplicity greater than rank(B).
The point is to show you that just because the place() algorithm is unable to solve when the repeated pole locations are chosen, it doesn't mean that such gain matrix K does not exist. Your proposed workaround is a feasible approach, and it is taught in the standard classroom.

Categorie

Scopri di più su Dynamic System Models in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by