How can I solve the matrix Riccati differential equation within MATLAB?
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