通过 ADOL-C 和 Heaviside 函数自动区分

计算科学 C++ 自动分化
2021-12-24 12:27:03

我正在编写一个 C++ 程序,我在其中定义了一个函数

F(t)=iriH(tti)
在哪里H是重载函数,ti是可变的最优参数。

该程序是通过使用 ADOL-C 的自动微分导出的。我想知道在实现该功能时是否应该小心f关于分支和循环。

我会创建函数:

template <class Tdouble> Tdouble myfunF ( Tdouble t, Tdouble *tis, int nbti)
{
  Tdouble res = 0.; 
  double ri = 0.; 
  for(int id=0;i<nbti;++i)
  {
    ri = ...;  
    if (t>ti){ 
      res = res + ri; 
    }   
  }
  return res ;
}

Tdouble类型类似于 ADOL-C 中的adouble类型如何分析这种构造是否适合使用 ADOL-C 进行自动微分并重写代码?

1个回答

我使用“condassign(a,b,c,d)”在 ADOL-C 中进行分支