solving differential riccati equation with a boundary condition

Illustration
Ifunanya - 2022-03-11T11:38:41+00:00
Question: solving differential riccati equation with a boundary condition

i would like to solve a riccati differential equation using matlab

Expert Answer

Profile picture of John Williams John Williams answered . 2025-11-20

Since the Riccati equation is a first-order ordinary differential equation, you can do this easily with any of the ODE solvers available in MATLAB such as "ode45".

The trick is to find the solution backwards in time.
 
As an example, let us consider the following example. Let the Riccati equation be given by
 
y'(t) = q0 + q1*y(t) + q2*y(t)^2,  
y(tf) = yf

where q0, q2 are non-vanishing constants (these may be nontrivial functions of t, the fact that they are chosen to be constant is just for simplicity). The second line is the boundary condition that at the end time tf, the value of the solution must be yf. I have chosen, in particular, tf = 2 and yf = 1 in the example code below.

function riccatiEquationRunner()

par = [1;2;1];  % q0, q1, and q2
yf = 1;
ti = 0; tf = 2;
opt = odeset('AbsTol',1.0e-07,'RelTol',1.0e-07);
[t,y] = ode45( @riccatiEquation, [tf,ti], yf ,opt, par);

% Visualize
plot(t,y)

end

function dydx = riccatiEquation(x,y,parameters)

q0 = parameters(1);
q1 = parameters(2);
q2 = parameters(3);

dydx = q0 + q1*y + q2*y*y;

end

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!