My Pole Placement is giving an error

8 visualizaciones (últimos 30 días)
Manali Kunte
Manali Kunte el 12 de Dic. de 2020
Respondida: Sam Chak el 16 de Jun. de 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 comentario
Keerthana Chiruvolu
Keerthana Chiruvolu el 16 de Dic. de 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.

Iniciar sesión para comentar.

Respuestas (2)

johannes
johannes el 15 de Jun. de 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 el 16 de Jun. de 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.

Categorías

Más información sobre Dynamic System Models en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by