Skip to content

教程

对标量函数求导

使用 diff 计算标量函数的导数。

moonbit
let d = @autodiff.diff(fn(x) { x * x }, 3.0)

结果是 6.0

同时保留函数值和导数

moonbit
let (value, derivative) = @autodiff.value_and_diff(
  fn(x) { x * x * x },
  2.0,
)

函数值是 8.0,导数是 12.0

常量和变量

Dual::constant(x) 的 tangent 为零。Dual::variable(x) 的 tangent 为一。

moonbit
let c = @autodiff.Dual::constant(5.0)
let x = @autodiff.Dual::variable(2.0)

常量的导数为零,恒等变量的导数为一。

初等函数

当基标量支持对应 Luna Flow arithmetic trait 时,可以使用初等函数方法。

moonbit
let d = @autodiff.diff(fn(x) { x.sin() }, 0.5)

导数是 cos(0.5)

后续阅读

gradient、Jacobian 和多项式定点导数示例见生态集成教程: