[CppAD] Eigen with change of parameters
Jyotiranjan Beuria
jyotiranjan.beuria at gmail.com
Mon Aug 14 09:15:22 EDT 2017
I am trying follow examples/general/change_param.cpp in CppAD.
I have following code:
#include <cppad/cppad.hpp>
#include <cppad/example/cppad_eigen.hpp>
#include <Eigen/Eigenvalues>
#include <iostream>
// main program
int main()
{
typedef double Scalar;
typedef CppAD::AD<Scalar> AD;
typedef CppAD::AD<AD> AD2;
typedef Eigen::Matrix<AD, Eigen::Dynamic,1> ADvector;
typedef Eigen::Matrix<Scalar, Eigen::Dynamic,1> Dvector;
typedef Eigen::Matrix<AD2, Eigen::Dynamic,1> AD2vector;
size_t n = 2, m = 1;
ADvector Xp(n+1),Y(m);
CppAD::Independent(Xp);
AD2vector X2(n),Y2(m);
CppAD::Independent(X2);
Y2(0)=pow(X2(0),2) + pow(X2(1),2 )+ Xp(2)* (X2(0)* X2(1));
CppAD::ADFun<AD> f2(X2, Y2);
ADvector X(n);
for(int i=0;i<n;i++) X(i)=Xp(i);
ADvector J(n*n);
J=f2.Jacobian(X);
CppAD::ADFun<Scalar> g(Xp, J);
g.optimize();
Dvector x(n);
Scalar T=10.0;
x[0] = 3.0; x[1]=2.0; x[2]=T;
Dvector jac = g.Forward(0,x); // Jacobian for operation sequence
std::cout << "Jacobian computed by CppAD = " << jac<< std::endl;
return 0;
}
This code compiles successfully but gives runtime error
Eigen::DenseCoeffsBase<Derived, 1>::Scalar&
Eigen::DenseCoeffsBase<Derived,
1>::operator[](Eigen::DenseCoeffsBase<Derived, 1>::Index) [with Derived =
Eigen::Matrix<double, -1, 1>; Eigen::DenseCoeffsBase<Derived, 1>::Scalar =
double; Eigen::DenseCoeffsBase<Derived, 1>::Index = long int]: Assertion
`index >= 0 &&
index < size()' failed.
Aborted
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cppad/attachments/20170814/9ead13ef/attachment.html>
More information about the CppAD
mailing list