Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 利用CoDiPack进行自动微分_C++_C++11_Automatic Differentiation - Fatal编程技术网

C++ 利用CoDiPack进行自动微分

C++ 利用CoDiPack进行自动微分,c++,c++11,automatic-differentiation,C++,C++11,Automatic Differentiation,以下代码: #include <codi.hpp> ... codi::RealForward Gcodi[l]; for (int p = 0; p < l; p++) { ... double a = Gcodi[p]; } 提示?根据官方文件, RealForward是一种重载赋值运算符的类型,因此可以使用double 喜欢做 codi::RealForward a = 3.0; double myDouble{3.3}; RealForward

以下代码:

#include <codi.hpp>
...
codi::RealForward Gcodi[l];
for (int p = 0; p < l; p++) 
{
     ...
     double a = Gcodi[p];
}

提示?

根据官方文件,
RealForward
是一种重载赋值运算符的类型,因此可以使用double

喜欢做

codi::RealForward a = 3.0;
double myDouble{3.3};
RealForward a = myDouble;
相反的方向当然没有定义

这就是为什么您不能通过执行以下操作直接将codi::RealForward转换为double的原因:

double a = Gcodi[p];
但是你可以在上面调用函数,也就是

double a = Gcodi[p].getGradient();

更新

然后,您可以像这样使用double指定RealForward对象

codi::RealForward a = 3.0;
double myDouble{3.3};
RealForward a = myDouble;
但直接从REalForwad分配一个double是不合法的:

RealForward a = ...;
double myDouble = a; //not valid!
其他例子

RealForward b = a * a; //this is ok because a * a is a double

我找到了一个函数:getValue()

双a=Gcodi[p].getValue()

如以下所述: