You are on page 1of 3

15.

2 Problem setup
toms t
toms t_f
p = tomPhase('p', t, 0, t_f, 20);
setPhase(p);
tomStates x y
% Initial guess
x0 = {t_f == 10};
% Box constraints
cbox = {0.1 <= t_f <= 100};
% Boundary constraints
cbnd = {initial({x == 0; y == 0})
final({x == 10; y == -3})};
% Expressions for kinetic and potential energy
m = 1;
g = 9.81;
Ekin = 0.5*m*(dot(x).^2+dot(y).^2);
Epot = m*g*y;
v = sqrt(2/m*Ekin);
% ODEs and path constraints
ceq = collocate(Ekin + Epot == 0);
% Objective
objective = t_f;

15.3 Solve the problem


options = struct;
options.name = 'Brachistochrone-DAE';
solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);

= subs(collocate(x),solution);

= subs(collocate(y),solution);

= subs(collocate(v),solution);

= subs(collocate(t),solution);

Problem type appears to be: lpcon


Starting numeric solver
===== * * *
=================================================================== *
* *
TOMLAB - Tomlab Optimization Inc. Development license
to 2011-02-05

999001. Valid

======================================================================
===============
Problem: --- 1: Brachistochrone-DAE
1.869963310229847400

f_k
sum(|constr|)

0.000000000158881015
f(x_k) + sum(|constr|)
1.869963310388728300
f(x_0)
10.000000000000000000
Solver: snopt.

EXIT=0.

INFORM=1.

SNOPT 7.2-5 NLP code


Optimality conditions satisfied
FuncEv

1 ConstrEv

168 ConJacEv

168 Iter

93 MinorIter

CPU time: 0.203125 sec. Elapsed time: 0.219000 sec.

15.4 Plot the result


To obtain the brachistochrone curve, we plot y versus x.
subplot(2,1,1)
plot(x, y);
title('Brachistochrone, y vs x');
subplot(2,1,2)
plot(t, v);

154

You might also like