最近、SLAMの勉強をしてみたいなぁと思いceres-solverのコードを読んでいたのですが、ヤコビアンの導出のところで見慣れない操作をしていることに気付きました。 調べてみると双対数というものを利用して自動微分なる計算をしているらしいです。 ということで、この記事では双対数(二重数, dual number)とそれを利用した自動微分についてまとめてみます。 平たく言えば、プログラムで微分を計算する方法を紹介します。 ざっくり理解で書いている部分もあるので、間違いを見つけたらマサカリ投げてください。 スポンサーリンク もくじ 1. 前置き 2. 導関数の演算則 3. 双対数 3.1. 双対数の定義 3.2. 双対数の演算則 3.3. 双対数と導関数の演算則の共通性 4. 双対数を利用した自動微分 4.1. 自動微分の原理 4.2. 計算例 4.3. 実装 5. 双対数による自動微分と数値