symbolic_differentiation1.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ACADO Toolkit.
3  *
4  * ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization.
5  * Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau,
6  * Milan Vukov, Rien Quirynen, KU Leuven.
7  * Developed within the Optimization in Engineering Center (OPTEC)
8  * under supervision of Moritz Diehl. All rights reserved.
9  *
10  * ACADO Toolkit is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 3 of the License, or (at your option) any later version.
14  *
15  * ACADO Toolkit is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with ACADO Toolkit; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 
36 
37 using namespace std;
38 
40 
41 /* >>> start tutorial code >>> */
42 int main()
43 {
44  // DEFINE VALRIABLES:
45  // ---------------------------
49 
50  Function f;
51 
52  // DEFINE A TEST FUNCTION:
53  // -----------------------
54  y = x * x;
55 
56  f << cos(x);
57  f << sin(x);
58  f << forwardDerivative(sin(x), x);
59  f << forwardDerivative(cos(x), x);
60  f << forwardDerivative(x * x, x);
61  f << forwardDerivative(y, x);
62  f << forwardDerivative(y + x * y, x);
63  f << x + forwardDerivative(x + y * y, x);
64  f << forwardDerivative(y * y + 1.0 / y, x);
65  f << forwardDerivative(sqrt(x), x);
66  f << forwardDerivative(log(x), x);
67 
68  f << laplace(x * y, x);
69 
70 // DifferentialState z(2);
71 //
72 // f << forwardDerivative(sin(z), z);
73 // f << backwardDerivative(z(0) * z(0) + z(1) * z(1) * 3.0, z);
74 
75  f << backwardDerivative(cos(y) + sin(y), x);
76 
77  ofstream stream( "symbolic_differentiation1_output.txt" );
78  stream << f;
79  stream.close();
80 
81 // // TEST THE FUNCTION f:
82 // // --------------------
83 // double xx[3] = { 1.0, 1.0, 1.0 };
84 // double *result = new double[f.getDim()];
85 //
86 // // EVALUATE f AT THE POINT (tt,xx):
87 // // ---------------------------------
88 // f.evaluate(0.0, xx, result, MEDIUM);
89 //
90 // delete[] result;
91 
92  return 0;
93 }
94 /* <<< end tutorial code <<< */
95 
USING_NAMESPACE_ACADO IntermediateState sin(const Expression &arg)
Allows to setup and evaluate a general function based on SymbolicExpressions.
Definition: function_.hpp:59
IntermediateState sqrt(const Expression &arg)
Expression backwardDerivative(const Expression &arg1, const Expression &arg2)
#define USING_NAMESPACE_ACADO
Expression forwardDerivative(const Expression &arg1, const Expression &arg2)
USING_NAMESPACE_ACADO int main()
Expression laplace(const Expression &arg1, const Expression &arg2)
IntermediateState cos(const Expression &arg)
IntermediateState log(const Expression &arg)


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Mon Jun 10 2019 12:35:12