问题 此问题出自Solving optimal control problems with MATLAB.pdf
此问题matlab实现程序
function er3OC_sym
%EG3OC_sym Example 3 of optimal control tutorial.
% This example is from D.S.Naidu, "Optimal contorl systems"
% page 77-80, Example 2.14
% Symbolic toolbox is used to get the analytical solution
sol = dsolve('Dx1 = x2, Dx2 = -p2, Dp1 = 0, Dp2 = -p1',...
'x1(0) = 1, x2(0) = 2, x1(tf) = 3, p2(tf) = 0');
eq1 = subs(sol.x1) - 'x1tf';
eq2 = subs(sol.x2) - 'x2tf';
eq3 = subs(sol.p1) - 'p1tf';
eq4 = subs(sol.p2) - 'p2tf';
eq5 = sym('p1tf*x2tf - 0.5*p2tf^2');
%%
sol_2 = solve(eq1, eq2, eq3, eq4, eq5);
tf = sol_2.tf;
x1tf = sol_2.x1tf;
x2tf = sol_2.x2tf;
x1 = subs(sol.x1);
x2 = subs(sol.x2);
p1 = subs(sol.p1);
p2 = subs(sol.p2);
%%
sol_book = {@(t)((4/54).*t.^3-(2/3)*t.^2+2.*t+1),...
@(t)((4/18).*t.^2-(4/3).*t+2)};
u = @(t)((4/9).*t-(4/3));
t = double(tf);
time = linspace(0,t,20);
s_book = [sol_book{1}(time);sol_boo