Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Solving Matrix Riccati
Replies: 3   Last Post: Apr 6, 2013 12:51 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Bart

Posts: 3
Registered: 4/10/13
Re: Solving Matrix Riccati
Posted: Apr 6, 2013 12:51 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Jeremy" wrote in message <kjnm7c$282$1@newscl01ah.mathworks.com>...
> I'm new to MATLAB and trying to use ODE45 to find the coefficients of the matrix Riccati equation for a controls problem.
>
> I'm not sure what I'm doing wrong.
>
> I've defined my Riccati equation in a function 'regulator'
>
> %Define matrices
> function dS=regulator(t,S)
>
> A=[0 1;0 -2.972];
> B=[0;390];
> Q=[(1/(pi^2)) 0;0 30];
> R=1;
>
> dS=-1*(A'*S+S*A-S*B*(R^-1)*B'*S+Q);
>
> end
>
> Then I'm just going straight to ODE45, doing something like this:
>
> [t,S]=ode45('regulator',[0 5],[0 0;0 0])
>
> looking for a solution to matrix S.
>
> Can I solve like this or do I have to multiply out all the terms of S? Assuming S is
>
> S = [s11(t) s12(t) ; s12(t) s22(t)];
>
> Any help would be appreciated.


Jeremy: as far as I know, the ODE function only accepts vectors as input. So you will have to reshape your matrix S into a vector.

This should work:
function [dP] = fun_ric(t,Pin)
%fun_ric

% reshape input
P = reshape(Pin,2,2);

% system matrices
A=[0 1;0 -2.972];
B=[0;390];
Q=[(1/(pi^2)) 0;0 30];
R=1;
Ri = R^-1;

% Ricatti equation:
dPt = A'*P+P*A+Q-P*B*Ri*B'*P;

% reshape
dP = reshape(dPt,4,1);
end

%% Test ricatti
clear all, close all, clc

%% ode params
P0 = zeros(2);
tspan = [0 2];

%% simulate
[t, P] = ode45('fun_ric',tspan,P0);

% P matrix (comparable with: P=care(A,B,Q,R))
Ptot = reshape(P(end,:),2,2)

figure(1)
plot(t,P)


If you compare the outcome of 'care' it will be the same as for Ptot when you simulate long enough (100 sec).



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.