Hello,
I am trying to synthetize a discrete LQR controller solving the problem as linear programming with LMI constraints. After some problem I stepped back to the simpler H2 norm calculation problem first. The first part of the script below is just used to calculate the system matrices. The optimization is a very simple problem. It works fine for small value of parameters Q1 (and the result match with matlab functions norm), but when it reach a value around 1e15 the optimization problem become unfeasible. Since from a control engineering point of view such a value of Q1 makes totally sense, I suspect some numerical problem. Any suggestion?
Thanks in advance.
Andrea
clear
close all
Ts = 1e-3;
% continuous plant
s = ss(zpk([],[-10 -20 -30 -40 -50],10 * 20 * 30 * 40 * 50));
Ac = s.A;
Bc = s.B;
C = s.C;
% discrete plant
[A,Bu] = c2d(Ac,Bc,Ts);
nx = size(A,2);
nu = size(Bu,2);
% LQR weights
Q1 = 1e15;
Q = diag([Q1 0 0 0 0]);
R = 1;
K = -dlqr(A,Bu,Q,R,[]);
Cz = [sqrt(Q);
zeros(nu,nx)];
Dzu = [zeros(nx,nu);
sqrt( R )];
Bw = eye(nx);
nw = nx;
% closed loop matrices
Acl = A+BuK;
Ccl = Cz+DzuK;
% cvx
cvx_begin sdp
variable P(nx,nx) symmetric
minimize trace(Ccl*P*Ccl');
Acl*P*Acl' - P + Bw*Bw' <= 0;
P >= 0;
cvx_end
h2n = norm(ss(Acl,Bw,Ccl,[],Ts))^2
trace(CclPCcl’)