J=\frac{1}{2}\left[x_{1}^{2}(5)+x_{1}(5) x_{2}(5)+2 x_{2}^{2}(5)\right]+\frac{1}{2} \int_{0}^{5}\left[2 x_{1}^{2}(t)+6 x_{1}(t) x_{2}(t)+5 x_{2}^{2}(t)+0,25 u^{2}(t)\right] d t
obter a lei de controle de realimentação. Deverão ser apresentadas:
(a) as contas das matrizes a serem utilizadas, a equação do controle ótimo, etc.
(b) as equações da matriz diferencial de Riccati;
(c) os arquivos de simulação no MATLAB ou OCTAVE que resolvam numericamente as equações da matriz diferencial de Riccati, bem como o arquivo que resolva numericamente o sistema ótimo;
(d) as curvas da solução dos coeficientes de Riccati;
(e) as curvas dos estados ótimos;
(f) a curva do controle ótimo.
Passo 1
O enunciado descreve um sistema de duplo integrador com dinâmica
\dot{x}(t)=A\,x(t)+B\,u(t),
onde x(t)=(x_{1}(t),x_{2}(t))^{T}, u(t) é o controle, o horizonte é t\in[0,5], e as condições iniciais são x_{1}(0)=2, x_{2}(0)=-3. O índice de desempenho é
O conteúdo é Controle Ótimo Linear Quadrático (LQR) com horizonte finito. Vamos precisar formular as matrizes A,B,Q,R, a condição terminal M, escrever a EDO de Riccati reversa e a lei de controle u=-R^{-1}B^{T}P(t)x.
Segue um script em OCTAVE/MATLAB para resolver \dot P de t=5 a t=0: \texttt{function dP = riccati(t,Pvec)} \texttt{P = reshape(Pvec,2,2); A = [0 1; -2 1]; B = [0;1];} \texttt{Q = [2 3;3 5]; Rinv = 4;} \texttt{dPmat = -(A'*P + P*A - P*B*Rinv*B'*P + Q);} \texttt{dP = -reshape(dPmat,4,1);} % nota o sinal para integrar de 0\to5 \texttt{end} \texttt{tspan = [5 0]; P0 = [1 0.5;0.5 2]; [t,Psol] = ode45(@riccati,tspan,reshape(P0,4,1));} \texttt{Psol = flipud(Psol); t = linspace(0,5,size(Psol,1));} Nesse vetor cada linha de \texttt{Psol} contém \bigl[P_{11},P_{12},P_{21},P_{22}\bigr].
Passo 5
Para simular o sistema com realimentação usamos outro script: \texttt{function dx = closedloop(t,x)} \texttt{P = interp1(t,Psol,t); P = reshape(P,2,2);} \texttt{K = 4*[P(1,2) P(2,2)]; u = -K*x;} \texttt{A = [0 1; -2 1]; B = [0;1]; dx = A*x + B*u;} \texttt{end} \texttt{[t,xsol] = ode45(@closedloop,[0 5],[2;-3]);} E calculamos \;u(t) em cada instante pelo mesmo K(t).
Passo 6
Para plotar as trajetórias: \texttt{figure; plot(t,Psol(:,2),t,Psol(:,4)); legend('P_{12}','P_{22}');} \texttt{figure; plot(t,xsol(:,1),t,xsol(:,2)); legend('x_{1}','x_{2}');} \texttt{uvec = -4*(Psol(:,2).*xsol(:,1)+Psol(:,4).*xsol(:,2));} \texttt{figure; plot(t,uvec); title('Controle ótimo');}ó