How to solve the Riccati equation symbolically?

The goal of my project is to use optimal control theory to find the optimal input in order to maximize two of the outputs (x1) and (x2) and to minimize the 3rd output (x3).
I have modeled a Nonlinear Dynamic Single-Input Multiple-Output System (SIMO) in both Simulink and in Matlab.
The results for the system dynamics (with the input U but without adding the control part) seems to be working well. But when I want to add the optimal control part, things get tricky...
The input (U) is a pulse generation function.
Each output is defined by a differential equation where the input is the power of an exponential function.
For example, x1_dot = A(x1, x2, x3)+ [x1 * EXP(x1, U)]
Now, I have to optimize the input of the system (ie. the amplitude of each pulse) so that two of the outputs (x1 and x2) are minimized and x3 is maximized.
So, I need to solve the Riccati equation for the system. But the problem is that the system is defined by 3 differential equations with 4 unknowns (x1, x2, x3, U).
Therefore, the equilibrium point will be a function of one of the variables: (U).
Here is what I thought I should do next:
I have to solve the Riccati equation symbolically as a function of U0 (the input at equilibrium) and find the actual value of U0 that minimize that solution to the Riccati equation. Then I have to re-evaluate the Riccati equation using the value of U0.
But, apparently Matlab can not solve the Riccati equation symbolically. So, I guess the best way of solving this problem is to use Maple, right?

1 Comment

Duplicate is at http://www.mathworks.com/matlabcentral/answers/12033-how-to-solve-the-riccati-equation-symbolically

Sign in to comment.

Answers (1)

Possibly this previous discussion might help?

3 Comments

Thank you for your reply!
In that discussion, you mentioned that you solved the diff. equation in Maple.
Unfortunately I don't have Maple, so I am not sure if it can solve a Riccati equation symbolically or not.
For example, if "y" is a symbolic number. Do you know what would be the result of the following code (written in Matlab) executed in Maple?
a = [-3 2;1 1]
b = [0 ; 2+y]
c = [1 -1]
r = 3
[x,l,g] = care(a,b,c'*c,r)
where "care" is : http://www.mathworks.com/help/toolbox/control/ref/care.html
In Matlab, it gives an error because the matrix b is not allowed to contain a symbolic number (y). But, can Maple solve this symbolically, as a function of y?
Thanks again!
I do not have the control toolbox so I do not know how care operates.
Can you express the computation as a full differential equation and post that here? And can you try the MuPad dsolve() that I posted in the previous discussion and report back as to what result it gives?

Sign in to comment.

Categories

Asked:

on 20 Jul 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!