Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. clear all
  2. clc
  3.  
  4. n=2;
  5. sys = drss(n,1,1);
  6. A=sys.A;
  7. B=sys.B;
  8. Qx = eye(n);
  9. R = 1;
  10. Qf = eye(n);
  11.  
  12. [Kss,Pss] = dlqr(A,B,Qx,R)
  13.  
  14. %% Yalmip LMI inf horizon OK
  15.  
  16. P = sdpvar(2,2,'symmetric');
  17. F = [P>=0, [A'*P*A+Qx-P, A'*P*B; B'*P*A, R+B'*P*B ] >=0 , R+B'*P*B>0];
  18. optimize(F,-trace(P));
  19. Pf = value(P)
  20. Kf = inv(R+B'*Pf_m*B)*B'*Pf_m*A
  21.  
  22.  
  23. %% SDP formulation. LMI from (A+BK)P(A+BK)'- P with X:= P^-1, L:=KP^-1
  24.  
  25. X = sdpvar(n,n);
  26. L = sdpvar(1,n,'full' );
  27.  
  28. MAT = [(-A*X-B*L)'-A*X-B*L, X, L'; X, inv(Qx), zeros(n,1); L, zeros(1,n), inv(R)]
  29. c = [X>=0, MAT>=0]
  30. optimize(c,trace(X));
  31. Kf_sdp = value(L)*inv(value(X))
  32.  
  33.  
  34. %% using cvx
  35. cvx_begin
  36. variable X(n,n)
  37. variable L(1,n)
  38. minimize (trace(X))
  39. subject to
  40. [(-A*X-B*L)'-A*X-B*L, X, L'; X, inv(Qx), zeros(n,1); L, zeros(1,n), inv(R)]>=0
  41. X>=0
  42. cvx_end
  43. Kf_cvx = L*inv(X)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement