Solve the Lotka-Volterra differential equation system with the Hamiltonian function
2 views (last 30 days)
Show older comments
I have the following code where I would like to solve the system with dsolve but somehow I get the following error:
No differential equations found. Specify differential equations by using symbolic functions.
I started to work on optimal control with binary control functions, but I have already stucked in here.
Here's my code:
c0 = 0.5;
c1 = 0.7;
% state equations
syms x0 x1 lambda0 lambda1 w
dx0 = x0-x0*x1-c0*x0*w;
dx1 = -x1+x0*x1-c1*x1*w;
%objective function
syms g;
g = (x0-1)^2+(x1-1)^2;
%hamiltonian function;
syms lambda0 lambda1 H;
H = -g+lambda0*dx0+lambda1*dx1;
%"costate equations"
dlambda0 = -diff(H,x0);
dlambda1 = -diff(H,x1);
%solve for control w
dw = diff(H,w);
sol_w = solve(dw,w);
% Substitute w to state equations
dx1 = subs(dx1, w, sol_w);
% convert symbolic objects to strings for using ’dsolve’
eq1 = strcat('dx0=',char(dx0));
eq2 = strcat('dx1=',char(dx1));
eq3 = strcat('dlambda0=',char(dlambda0));
eq4 = strcat('dlambda1=',char(dlambda1));
% HERE IS THE PROBLEM
sol_h = dsolve(eq1,eq2,eq3,eq4)
Thank you for your help !
0 Comments
Answers (0)
See Also
Categories
Find more on Equation Solving in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!