My Pole Placement is giving an error

조회 수: 10 (최근 30일)
Manali Kunte
Manali Kunte 2020년 12월 12일
답변: Sam Chak 2023년 6월 16일
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
Keerthana Chiruvolu
Keerthana Chiruvolu 2020년 12월 16일
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.

댓글을 달려면 로그인하십시오.

답변 (2개)

johannes
johannes 2023년 6월 15일
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 2023년 6월 16일
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.

카테고리

Help CenterFile Exchange에서 Dynamic System Models에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by