[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