You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Boost Autodiff实现双参数函数的导数计算?

基于Boost Autodiff实现双参数自定义导数函数

我尝试用Boost Autodiff API为双参数函数double response(double x, double y)计算导数。该函数返回由参数索引的矩阵单元格值,因此无法通过常规方式实现自动微分。

根据Boost Autodiff手册第5.3节的说明,这类场景的解决方案是手动实现导数。我可以预先计算存储导数值的第二个矩阵,这完全可行;但不清楚如何基于Autodiff API编写适配后的微分函数。

手册中提供了一个单变量自定义导数函数的示例(复制如下):

template <typename RealType, size_t Order>
fvar<RealType, Order> cos(fvar<RealType, Order> const& cr) {
  using std::cos;
  using std::sin;
  using root_type = typename fvar<RealType, Order>::root_type;
  constexpr size_t order = fvar<RealType, Order>::order_sum;
  root_type const d0 = cos(static_cast<root_type>(cr));
  if constexpr (order == 0)
    return fvar<RealType, Order>(d0);
  else {
    root_type const d1 = -sin(static_cast<root_type>(cr));
    root_type const derivatives[4]{d0, d1, -d0, -d1};
    return cr.apply_derivatives(order, [&derivatives](size_t i) { return derivatives[i & 3]; });
  }
}

我需要将这个示例推广到double response(double x, double y)函数,支持对x、y其中一个或两者同时求导,但不知道具体实现方式。


内容的提问来源于stack exchange,提问作者xperroni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:12:42