function name = ppp_ex1 (ReturnName) ## usage: ppp_ex1 () ## ## PPP example - an unstable, nmp siso system ## $Id$ ## Example name name = "Linear unstable non-minimum phase third order system- Laguerre inputs"; if nargin>0 return endif ## System - unstable & NMP [A,B,C,D] = NMPsystem; [n_x,n_u,n_y] = abcddim(A,B,C,D); ## Setpoint A_w = ppp_aug(0,[]); ## Controller ##Optimisation horizon t = [4.0:0.05:5]; ## A_u A_u = ppp_aug(laguerre_matrix(3,2.0), A_w); ## Design and plot [ol_poles,cl_poles,ol_zeros,cl_zeros,k_x,k_w,K_x,K_w,cond_uu] = ppp_lin_plot (A,B,C,D,A_u,A_w,t); ## Compute exact version poles = sort(eig(A_u)); # Desired poles - eigenvalues of A_u poles = poles(1:n_x); # Loose the last one - due to setpoint clp = poly(poles); # Closed-loop cp kk = clp(2:n_x+1)+A(1,:); # Corresponding gain A_c = A-B*kk; # Closed-loop A K_X = ppp_open2closed (A_u,[A_c B*k_w; [0 0 0 0]],[kk -k_w]); # Exact ## Compute K_x using approx values A_c_a = A-B*k_x; K_X_comp = ppp_open2closed (A_u,[A_c_a B*k_w; [0 0 0 0]],[k_x -k_w]); # Computed Kx format bank log_cond_uu = log10(cond_uu) Exact_closed_loop_poles = poles' Approximate_closed_loop_poles = cl_poles Exact_k_x = kk Approximate_k_x = k_x Exact_K_X = K_X Approximate_K_X = [K_x -K_w] Computed_K_x = K_X_comp K_xw_error = Approximate_K_X-K_X format endfunction