![]() |
Prev | Next | ode_evaluate.cpp | Headings |
# include <cppad/speed/ode_evaluate.hpp>
# include <cppad/speed/uniform_01.hpp>
# include <cppad/cppad.hpp>
bool ode_evaluate(void)
{ using CppAD::NearEqual;
using CppAD::AD;
bool ok = true;
size_t n = 3;
CppAD::vector<double> x(n);
CppAD::vector<double> ym(n);
CppAD::vector< AD<double> > X(n);
CppAD::vector< AD<double> > Ym(1);
// choose x
size_t j;
for(j = 0; j < n; j++)
{ x[j] = double(j + 1);
X[j] = x[j];
}
// declare independent variables
Independent(X);
// evaluate function
size_t m = 0;
CppAD::ode_evaluate(X, m, Ym);
// evaluate derivative
m = 1;
CppAD::ode_evaluate(x, m, ym);
// use AD to evaluate derivative
CppAD::ADFun<double> F(X, Ym);
CppAD::vector<double> dy(n);
dy = F.Jacobian(x);
for(j = 0; j < n; j++)
ok &= NearEqual(ym[j], dy[j] , 1e-10, 1e-10);
return ok;
}