Regularization technique for Stabilization of polynomial by bringing unstable poles into unit circle

1 view (last 30 days)
I have been trying to stabilize a characteristic polynomial of a model in the z-domain. Therefore I've been trying to bring its poles inside the unit circle without affecting the dynamics of the system. First I thought of the polystab function, which didn't help because for some reason the couple of unstable poles I tried to stabilize ended up to a system with even more unstable poles. Are there any opinions/tips on the use of the polystab function? Or is there any function useful for "pulling" the unstable poles into the unit circle?
  5 Comments
Tianyu
Tianyu on 24 Oct 2024
If you estimated your ARX model using arx function in system identification toolbox, you can enforce the estimated model to be stable using "EnforceStability" in arxOptions
polystab seems indeed fulfill your purpose, i.e. stabilize the model without altering reponse. Can you please share the code so we can take a further look?
Mr. Pavl M.
Mr. Pavl M. on 2 Jan 2025
Edited: Mr. Pavl M. on 2 Jan 2025
%Can be any system to stabilize after improved SI:
A = [1 1; -3 -5];
B = [12; 1];
C = [1 -7];
D = 2;
ts = 0.01;
dsys = ss(A,B,C,D,ts)
dsys = A = x1 x2 x1 1 1 x2 -3 -5 B = u1 x1 12 x2 1 C = x1 x2 y1 1 -7 D = u1 y1 2 Sample time: 0.01 seconds Discrete-time state-space model.
%G = press_max*minreal(dsys)
G = minreal(dsys);
[b3, a3] = ss2tf(G.A,G.B,G.C,G.D)
b3 = 1×3
2.0000 13.0000 316.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
a3 = 1×3
1.0000 4.0000 -2.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
G3 = tf(b3, a3,ts) %discrete model
G3 = 2 z^2 + 13 z + 316 ------------------ z^2 + 4 z - 2 Sample time: 0.01 seconds Discrete-time transfer function.
%Not "very" conventional, but functions fully, entirely in number of cases:
hmin01 = polystab(b3)
hmin01 = 1×3
2.0000 0.0823 0.0127
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
hmin1 = hmin01/norm(hmin01)*norm(b3)
hmin1 = 1×3
316.0000 13.0000 2.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
hmin02 = polystab(a3)
hmin02 = 1×3
1.0000 -0.2247 -0.1010
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
hmin2 = hmin02/norm(hmin02)*norm(a3)
hmin2 = 1×3
4.4495 -1.0000 -0.4495
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
G4 = tf(hmin1,hmin2,ts) %discrete model
G4 = 316 z^2 + 13 z + 2 ---------------------- 4.449 z^2 - z - 0.4495 Sample time: 0.01 seconds Discrete-time transfer function.
figure
pzmap(G3)
figure
pzmap(G4)
Answer to your question is:
polystab TCE built - in function or alike is allright, okay also to find medium value use.
  1. There are confidently more accurate and precise id methods, besides ARX. Sorry, PTSD caused to me not from here, which times poles are how deep inside unit circle?There is good rationale here, we don't have catatonic, nor delusions so by ICD11 and DSM5 there were no schizo of us and there is no schizo now. So to stabilize good, fairly well to continue not downwards, which means not to undermine, not to diminish importance of the study and labour of the system responses and systems behaviour.
  2. Have you applied [K,prec] = place(A,B,p) ?, what is your desired poles radius,number of poles, ( constraint<r<1)?

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!