How can I solve the matrix Riccati differential equation within MATLAB?

Technical Source
2 min readMar 15, 2022

--

The CARE function within the Control System Toolbox solves the matrix Riccati equation:

A'X + XA - XB'BX + Q = 0

I would like to solve the matrix Riccati differential equation:

dX/dt = A'X + XA - XB'BX + Q

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

The matrix Riccati differential equation:

dX/dt = A'X + XA - XBB'X + Q

can be solved using the functions in the ODE suite.

Assume your dependent matrix “X” is “n”-by-”n”, and you have known “n”-by-”n” matrices “A”, “B”, and “Q”. The following method will solve the matrix Riccati differential equation. Save the following as a MATLAB file somewhere on the MATLAB Path.

function dXdt = mRiccati(t, X, A, B, Q)
X = reshape(X, size(A)); %Convert from "n^2"-by-1 to "n"-by-"n"
dXdt = A.'*X + X*A - X*B*B.'*X + Q; %Determine derivative
dXdt = dXdt(:); %Convert from "n"-by-"n" to "n^2"-by-1

Then, you can use the ODE45 function to solve this problem:

[T X] = ode45(@(t,X)mRiccati(t, X, A, B, Q), [0 10], X0)

For example, using the sample data:

A = [1 1; 2 1]; 
B = [1; 1];
Q = [2 1; 1 1];
X0 = [1; 1; 1; 1];

You can use the following command to solve the system of differential equations:

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source
Technical Source

Written by Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.