% main_obfunc2
% Script for loesning av optimalreguleringsproblem.
clear global
global a b q p x0 h t N
p_text=['iex=1 : skalart optimaliserings-problem (P-regulator)';
        'iex=2 : todimensionalt problem (optimal PI-regulator)';
        'iex=3 : En langt raskere implementering av iex=2     '];
disp(p_text)
iex=2;
iex=dread('Example number: 1-3',iex);
if iex == 1
   a=-0.1; b=1; x0=5;         % systemparametre.
   q=1; p=1;                  % vektparametre i kriteriet.
   h=0.005;                   % Skrittlengde.
   t=0:h:7;                   % Oppdeling av tidsaksen.
   N=length(t);  
   g0=-0.5;
   g=fminsearch('obfunc2',g0)
elseif iex == 2
   a=[-0.1 0;-1,0]; b=[1;0]; x0=[5;2];
   q=[2,0;0,1]; p=1;
   h=0.001;                   % Skrittlengde.
   t=0:h:7;                   % Oppdeling av tidsaksen.
   N=length(t);
   g0=[-1 1];  
   g=fminsearch('obfunc2',g0) % NB: raskere med obfunc3.
elseif iex == 3
   a=[-0.1 0;-1,0]; b=[1;0]; x0=[5;2];
   q=[2,0;0,1]; p=1;
   h=0.001;                   % Skrittlengde.
   t=0:h:7;                   % Oppdeling av tidsaksen.
   N=length(t);
   g0=[-1 1];  
   g=fminsearch('obfunc3',g0)   
   
end
   

n=length(a);
x=lsim(a+b*g,zeros(n,1),eye(n),zeros(n,1),t,t,x0);
if iex == 1
   plot(t,x), grid, title('iex=1: optimal P-regulator')
elseif iex == 2
   subplot(2,1,1), plot(t,x(:,1)), grid, 
   title('iex=2: optimal PI-regulator')
   text(2.2,3,'x_1 - systemtilstand')
   subplot(2,1,2), plot(t,x(:,2)), grid
   text(2.2,0.5,'x_2 - regulatortilstand')
   xlabel('0 \leq \it t \leq 7 [\it sec]') 

end
% END MAIN_OBFUNC2
