# Determining optimal coefficients for Horwitz matrix or characteristic equation

4 visualizzazioni (ultimi 30 giorni)
Commentato: Sam Chak il 13 Apr 2023
How to find kp and kv so that H becomes Horwitz?
H =
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]
[ -(2000*kp)/1477, -(1000*kp)/1477, -(2000*kv)/1477, -(1000*kv)/1477]
[ (1000*kp)/1477, -(1000*kp)/1477, (1000*kv)/1477, -(1000*kv)/1477]
Also, the coefficients of the characteristic equation are as follows in order from large to small
[ 1, (3000*kv)/1477, (3000000*kv^2)/2181529 + (3000*kp)/1477, (6000000*kp*kv)/2181529, (3000000*kp^2)/2181529]
##### 3 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Sam Chak il 11 Apr 2023
Conventionally, the range of and may be determined from the Routh–Hurwitz Stability Criterion, which is a pretty tedious task to compute elements in the Table for high-order systems ( ), and then solving the equations simultaneously.
So far, there is no such function in the Control System Toolbox.
There are some 3rd-party programs written by expert MATLAB users, posted on File Exchange. You should search for the ones that construct the table symbolically.
If you are looking for the determination of the optimal coefficients for and , then it becomes an optimization problem, in which you most likely need a optimization algorithm to solve the problem.

Accedi per commentare.

### Risposte (2)

Sam Chak il 10 Apr 2023
Modificato: Sam Chak il 10 Apr 2023
Edit: It appears that and can make the matrix Hurwitz. However, the optimal coefficients are subjective, because they depend on the definition of the cost performance function.
If the quadratic cost function is used, perhaps these values and are optimal coefficients.
CASE 1: and % CASE 1
kp = 0.25;
kv = kp;
A = [0, 0, 1, 0;
0, 0, 0, 1;
-(2000*kp)/1477, -(1000*kp)/1477, -(2000*kv)/1477, -(1000*kv)/1477;
(1000*kp)/1477, -(1000*kp)/1477, (1000*kv)/1477, -(1000*kv)/1477]
A = 4×4
0 0 1.0000 0 0 0 0 1.0000 -0.3385 -0.1693 -0.3385 -0.1693 0.1693 -0.1693 0.1693 -0.1693
eig(A)
ans =
-0.0012 + 0.5822i -0.0012 - 0.5822i -0.2527 + 0.4356i -0.2527 - 0.4356i
G = tf((3000000*kp^2)/2181529, [1, (3000*kv)/1477, (3000000*kv^2)/2181529 + (3000*kp)/1477, (6000000*kp*kv)/2181529, (3000000*kp^2)/2181529])
G = 0.08595 -------------------------------------------------- s^4 + 0.5078 s^3 + 0.5937 s^2 + 0.1719 s + 0.08595 Continuous-time transfer function.
step(G) stepinfo(G)
ans = struct with fields:
RiseTime: 2.5536 TransientTime: 3.0953e+03 SettlingTime: 3.0953e+03 SettlingMin: 0.1465 SettlingMax: 1.9260 Overshoot: 92.5956 Undershoot: 0 Peak: 1.9260 PeakTime: 8.3833
CASE 2: and % CASE 2
kp = 0.6557;
kv = 1.3419;
G = tf((3000000*kp^2)/2181529, [1, (3000*kv)/1477, (3000000*kv^2)/2181529 + (3000*kp)/1477, (6000000*kp*kv)/2181529, (3000000*kp^2)/2181529])
G = 0.5912 --------------------------------------------- s^4 + 2.726 s^3 + 3.808 s^2 + 2.42 s + 0.5912 Continuous-time transfer function.
step(G) pole(G)
ans =
-0.8058 + 1.0032i -0.8058 - 1.0032i -0.5570 + 0.2164i -0.5570 - 0.2164i
stepinfo(G)
ans = struct with fields:
RiseTime: 4.8988 TransientTime: 9.2379 SettlingTime: 9.2379 SettlingMin: 0.9008 SettlingMax: 1.0004 Overshoot: 0.0379 Undershoot: 0 Peak: 1.0004 PeakTime: 14.9637
##### 3 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Sam Chak il 13 Apr 2023
Hi @mohammadreza, Your latest update is a new problem, and the proposed method may not be applicable to the time-varying problem. Besides You should not reply in the "Answer" section. If is a time-varying function (as shown in your supplied image), and without analyzing the function, then there is no guarantee that the system will be stable even though is designed to be Hurwitz as .

Accedi per commentare.

Thank you very much for your help R(t) is Time-varying matrix
My problem is finding kp and kv scalars
##### 1 CommentoMostra NessunoNascondi Nessuno
H should always be Hurwitz

Accedi per commentare.

### Categorie

Scopri di più su Mathematics and Optimization 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!