Riccati.m
上传用户:eighthdate
上传日期:2014-05-24
资源大小:270k
文件大小:1k
源码类别:

其他行业

开发平台:

Matlab

  1. function [tt,s,k, t,x]=riccati
  2. % Hadi Saadat,  1998
  3. % This function returns the optimal feedback control K(t) and the solution
  4. % of the state equation.   First a function called [A,B Q,R,t0,tf,x0]=
  5. % system(A,B Q,R,t0,tf,x0) containing system parameters and the matrices
  6. % Q and R must be defined in a file named `system.m'.  The program calls
  7. % upon two functions. The function [pot]=riccasim(t,p) solves the matrix
  8. % Riccati equation defined by p(t). The second function [wdot]= statesim(t,w)
  9. % solves the state equation in conjunction with the optimum control equation.
  10. global A B Q R t0 tf x0
  11. [A,B,Q,R,t0,tf,x0]=system(A,B,Q,R,t0,tf,x0)
  12. n=length(A);nsq=n^2;
  13. p0=zeros(1,nsq);
  14. tol=0.0005; trace=0;
  15. tspan=[t0, tf];
  16. [t,p]=ode23('riccasim',tspan, p0);
  17. tt=tf-t;
  18. r=inv(R);
  19. m=length(p);
  20. for i=1:m
  21. ss =reshape(p(i,:),n,n)';
  22. s(n*(i-1)+1:n*i,1:n) =ss;
  23. k(i,:)=r*B'*ss;
  24. end
  25. w0=[p(m,:),x0];
  26. [t,w]=ode23('statesim',t0,tf,w0,tol,trace);
  27. x(:,1:n)=w(:,nsq+1:nsq+n);