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 ]

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)

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

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

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

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

%% 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)


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]

© The Math Forum 1994-2015. All Rights Reserved.