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、多項式の一点での導関数については連携チュートリアルを参照してください。